Commit Graph

50 Commits

Author SHA1 Message Date
Kornel Benko
176670fc56 keytests: Move shortcut handling into own class 2017-05-22 08:49:26 +02:00
Kornel Benko
b5229cc5a2 keytests: Wrong check for empty key in associative array 2017-05-21 18:38:48 +02:00
Kornel Benko
fa3e656af7 keytests: Implemented use of additional shortcuts in keytest.py
Now, before starting a test with 'TestBegin' in any *-in.txt file
we can create ne shortcuts used by this test.
Defining a shortcut:
	UseShortcut "<shortcut>" "<function>"
Actually adding the new shortcuts to be used by the next lyx-session:
	PrepareShortcuts

Use example is found in findadv-combined-in.txt
The UseShortcut-entries will be traslated into '\bind "<shortcut>" "<function>"'
and with the PrepareShortcuts-entry added to the active use file 'user.bind'
2017-05-21 12:55:47 +02:00
Kornel Benko
0abdc3dd59 keytests: Handle function-keys for xvkbd too
Function keys are sent to xvkbd as e.g. \[F15], so we should
not split a sequence like "\C\[F15]" into two text pieces.
(Do it like other keys not having a digit in their name (e.g. \[Return]) )
2017-05-19 12:52:59 +02:00
Kornel Benko
8f74cac381 keytests: Add more controls for the *-in.txt files
The controls are described in hello-world-in.txt as
Cr: not expected regex search pattern before next expected match
Cp: not expected search pattern before next expected match

See also findadv-re-04-in.txt for an example
In this test-case, searching for case sensitive and format considering
search is failing.
2017-05-18 13:05:36 +02:00
Kornel Benko
46e472dcf9 keytests: Allow controlfile (used by searchPatterns.pl) to be opened for 'append'
This allows collecting search strings of multiple tests in one file
2017-05-18 00:03:50 +02:00
Kornel Benko
09e5acba11 keytests: Rewritten to use searchPatterns.pl instead of pcregrep
Also corrected output of keytest.py. Messages from called
programs were output to stdout wile own printed messages
were still cached.
2017-05-17 12:12:55 +02:00
Kornel Benko
9b14eb16f5 keytests: Use flush stdout before exiting
Without the flush, often messages are lost at test-end
2017-05-16 13:01:43 +02:00
Kornel Benko
d870a0f2fd keytests: Added some new controls for the *-in.txt files
The controls are described in hello-world-in.txt as
CO: for control file open for write
CN: control notice
CP: simple search pattern
CR: regex search pattern
CC: close control file

The control-file will be used at the end of test by searchPatterns.pl
2017-05-16 09:16:18 +02:00
Kornel Benko
36a3cca3ea keytests: New script to replace 'pcregrep' in more complex cases.
Suppose, we want to test a key sequence which should produce
logs in defined sequence. ATM, we use pcregrep to see, if
a pattern occurs in the log-file. This is OK, if using only single
tests with only one message to care about.
But it is not OK for combined tests.
As an example, the file 'findadv-combine-in.txt' is combining
tests findadv-re-01-in.txt, findadv-re-02-in.txt and findadv-re-03-in.txt.
This test runns here about 25 seconds, while the time for the other three
is about 144 secs.
(Most time is with starting/stopping lyx)
2017-05-14 18:58:55 +02:00
Kornel Benko
d06191c990 keytests: Polishing the shutdown of lyx at test-end 2017-05-12 22:32:49 +02:00
Kornel Benko
d9464bfcd6 keytests: Make reading of /proc for lyx-status more robust
Often the relevant entry (e.g. /proc/xxxx/status) exists,
but is empty. This led to many tests fail, mostly at
the first tests after the start of the OS.
2017-05-12 13:55:51 +02:00
Kornel Benko
c200e49d67 keytests: Print proc-info in case lyx_status() signals "dead" 2017-05-12 11:22:05 +02:00
Kornel Benko
6afd654bb6 keytests: more tweaking
Tested with QT5.7 QT5.8 (self compiled) and QT4.8
2017-05-11 00:00:42 +02:00
Kornel Benko
afd32f7843 keytests: some tweaking 2017-05-09 21:07:35 +02:00
Kornel Benko
cee272e030 Keytests: optimize for speed.
The culprit in keytest is the possibility to lose some keystrokes.
The idead here is that the keystokes are cached by QT until some
control character is entered forcing e.g. new dialog.
So, splitting input lines at these characters should be enough
to ensure that the next chars are not lost.
2017-05-07 14:48:06 +02:00
Kornel Benko
d1271f80ec Keytests: improve handling of strings to be send to xvkbd
1.) Don't modify the line as it happened at start of sendKeystringLocal()
2.) Split lines on each keysym (e.g. \[Return])
3.) Beatify the debug output of the sent text
2017-05-04 13:53:09 +02:00
Kornel Benko
4436431ea5 Remove xvkbd from cmake build.
The directory still exists because automake build refers it.
2017-04-28 11:42:50 +02:00
Kornel Benko
514bcb9d93 Keytests: Make the wrapper sendKeystring() around sendKeystringLocal() be recursive
This makes the wrapper working smoothly even for more complicated
input lines.
Also we do not need the window- parameter in call to xvkbd.
Still, there _is_ something fishy. At first run it can happen that
some keytest fail. But not reproducible at subsequent calls.
It feels like QT would cache some data and therefore lyx reacts
later faster.
This work is a result of collaboration with Tommaso Cucinotta.
2017-04-26 16:03:24 +02:00
Kornel Benko
515ca69359 keytests: Speed up some tests
The idea is, that strings going to the lyx-command-field
can be sent at full speed.
2017-04-25 17:37:25 +02:00
Kornel Benko
0cda6808d7 keytests: Some improvements to keytest.py
Changes are:
1.) make it python3 compatible
2.) rewritten the lyx_status() routine
3.) routines lyx_sleeping(), lyx_zombie(), lyx_dead() now depend on lyx_status()
4.) dont send keystring "\Afn" at start as it is language dependent
5.) handling of TestEnd uses now lyx-commands to stop the lyx-session.
   Use 'kill -9' only if unsuccessful
2017-04-24 17:42:24 +02:00
Tommaso Cucinotta
a8bb3171f1 Recovered working autotests for findadv on Linux/Ubuntu (after a long no-use time).
- from specific dependency on wish8.5, to just wish
- from checking the 2nd line of /proc/*/status, to grep-ing on sleeping (old system was failing on newer kernels)
- mode debugging and python output during tests
2017-04-15 23:38:41 +02:00
Tommaso Cucinotta
7eb64211b0 Revert "Long time no use of the autotests machinery, needs an update."
Pushed by mistake ... not finished yet ... apologies.

This reverts commit be79d2cda8.
2017-01-25 03:13:14 +01:00
Tommaso Cucinotta
be79d2cda8 Long time no use of the autotests machinery, needs an update. 2017-01-25 03:10:56 +01:00
Kornel Benko
034d5632a2 Make tests for QT5 and QT4 work.
Changing *-in.txt due to erroneous shortcuts in it.po
keytest.py, single-test.cmake and CMakeLists.txt now
provide a frontend hint for xvkbd.
2015-03-17 17:36:47 +01:00
Kornel Benko
6767052bba keytest.py: Allow for LyX window to appear without timeout
Timeout for lyx-process to appear may be significantly smaler.
5 sec. looks sufficient, while lyx-window may take some time
due to configure.py.
2014-08-25 14:28:18 +02:00
Kornel Benko
e4772c103e keytests: add a timeout for LyX process to start
If the LyX window does not appear after a certain (conservative)
time, the keytest now fails. One reason that caused the LyX window
to never show up was when DISPLAY was not set. This particular case
has been fixed in <commit1hash>. This commit is meant for the more general
scenario.
(Collaboration with Scott Kostyshak)
2014-08-25 13:49:12 +02:00
Tommaso Cucinotta
cf973b2f3a I seem to need this to let the 'Lang' keyword work, within *-in.txt files. 2013-07-23 02:10:48 +01:00
Kornel Benko
82bca55a1f Typo 2013-05-21 13:26:26 +02:00
Scott Kostyshak
e609787a0f keytest.py: do not print the same thing twice
keytest.py now only prints one time the command that it is executing for
an assert. The command is already printed in the function responsible
for executing it, so it is not necessary to print the command before
calling that function.
2013-02-04 03:20:02 -05:00
Kornel Benko
aba79b78c7 Add description of Sleep (== pause) command in keutests 2013-01-24 08:48:18 +01:00
Kornel Benko
9481d4182e autotests: Enable the suffixed lyx to run the test too.
(Hard coded 'lyx' replaced with real lyx-exe-file-name)
2013-01-05 10:07:37 +01:00
Kornel Benko
b436a03b34 Cmake build: autotests
Adapt to use local .gmo files
2012-12-12 14:54:38 +01:00
Kornel Benko
57ca9ee073 Cmake build: autotests
1.) Filenames for export changed
2.) Usage of wmctrl
3.) More temporary file to remove
2012-12-11 18:59:05 +01:00
Tommaso Cucinotta
aad1f4ce78 Fixing behavior of Lang directive in test cases, by setting LANGUAGE variable, in addition to LANG one. 2012-12-09 20:38:53 +00:00
Tommaso Cucinotta
5c6f72b96e Advanced find autotests now working again.
Make autotests work again on Ubuntu 12.04 (when launched from English language).
Add extra check and notification if wmctrl is missing.
2012-10-13 00:47:06 +01:00
Tommaso Cucinotta
25e3d90303 Added check for assertions or anomalous exits of LyX on TestEnd.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38477 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-22 22:23:16 +00:00
Tommaso Cucinotta
1b929a0c45 When killing lyx instances, we may ignore failures of kill and killall (if the process is not found, it exited already).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37734 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-19 21:00:01 +00:00
Tommaso Cucinotta
ac56711021 Added version suffix to symlinks. Tested with --enable-version-suffix.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37598 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-11 23:27:34 +00:00
Tommaso Cucinotta
dcf0eb944e Now the framework works running LyX in the language required by the test
script (if any) also when LyX is not installed on your system
(using a variant of the trick suggested by Enrico, i.e., create a symlink
locale from the LyX sources root to an autotests/locale folder).
At least, it does on Linux.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37589 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-10 22:33:23 +00:00
Tommaso Cucinotta
eede499399 Allowed to set the default typing delay via environment variable.
Improved documentation of usage.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37523 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-06 23:14:49 +00:00
Tommaso Cucinotta
89620e1481 Made use of internal hacked xvkbd optional. Now it is needed and
used only if the XVKBD_HACKED environment var is defined.
Made keytest.py exploit the -wait_idle option of the hacked xvkbd.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37521 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-06 22:50:07 +00:00
Tommaso Cucinotta
29c92d79a4 Added proper propagation of Ctrl-C from os.system()-executed command to keytest.py (makes stopping tests easier while they're running).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37518 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-06 22:16:51 +00:00
Tommaso Cucinotta
1f51de3cd1 Added custom xvkbd for avoiding typing into other windows.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37439 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-02 23:18:16 +00:00
Tommaso Cucinotta
ac7572f366 More precise identification of the lyx window (by id, instead of the buggy by title).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37410 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-01 22:57:10 +00:00
Tommaso Cucinotta
705759d678 Added the creation of a custom .lyx folder inside pwd/home/.lyx at
the beginning of the tests (which reconfigures LyX and takes some time),
followed by all of the tests using it. This way, we get only the default
configuration of LyX as a base, without being affected by individual users
custom configurations.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37408 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-01 22:08:07 +00:00
Tommaso Cucinotta
7e02f60ae6 keytest.py ignores now also whitespaces only lines.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37379 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-30 19:45:17 +00:00
Tommaso Cucinotta
e4df1f08fb Removed stripping of whitespaces from script commands.
Added the capability to ignore empty lines.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37378 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-30 19:44:31 +00:00
Tommaso Cucinotta
8ef0abbacc Added Sleep and Assert commands in test scripts.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37374 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-30 15:58:08 +00:00
Tommaso Cucinotta
5f50ae8f08 Added basic automated testing capability, based on the MonKey Test (keytest.py) by McCabe-Dansted.
As of now, I plan to add a few regression tests for the Advanced Find & Replace using this engine.
It can be used for automated testing of other LyX subsystems as well. Just write your own *-in.txt
scripts and add them into the autotests/ folder.

TODOs:
- perhaps simplify keytest.py
- check how this behaves under various types of failure of the test
  (e.g., LyX crashing, hanging, ...) just to be sure it goes on with
  the other tests anyway.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37364 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-29 14:42:53 +00:00