]> git.lyx.org Git - lyx.git/blob - development/autotests/single-test.cmake
autotests: Enable the suffixed lyx to run the test too.
[lyx.git] / development / autotests / single-test.cmake
1 # This script invokes the keytest.py script with the simple set-up needed
2 # to re-run deterministic regression tests that one would like to have.
3 #
4 # AUTOTEST_ROOT   = ${LYX_ROOT}/development/autotests
5 # KEYTEST_INFILE  = xxx-in.txt
6 # KEYTEST_OUTFILE = xxx-out.txt
7 # BINDIR          = ${BUILD_DIR}/bin
8 # WORKDIR         = ${BUILD_DIR}/autotests/out-home
9 # LOCALE_DIR      = ${BUILD_DIR}/autotests/locale
10 # PO_BUILD_DIR    = ${BUILD_DIR}/po
11 # PACKAGE         = lyx2.1
12 #
13 # Script should be called like:
14 # cmake -DAUTOTEST_ROOT=xxxx \
15 #       -DKEYTEST_INFILE=xxxx \
16 #       -DKEYTEST_OUTFILE=xxx \
17 #       -DBINDIR=xxx \
18 #       -DLYX=xxx \
19 #       -DWORKDIR=xxx \
20 #       -DLOCALE_DIR=xxx \
21 #       -DPO_BUILD_DIR=xxx \
22 #       -DPACKAGE=xxx \
23 #       -P ${AUTOTEST_ROOT}/single-test.cmake
24
25 set(KEYTEST "${AUTOTEST_ROOT}/keytest.py")
26
27 execute_process(COMMAND pidof ${LYX} OUTPUT_VARIABLE LYX_PID RESULT_VARIABLE pidstat OUTPUT_VARIABLE pidres)
28 message(STATUS "pidres = ${pidres}")
29 if (NOT pidstat)
30   # lyx already running, remove trailing '\n' from pid
31   string(REGEX REPLACE "\n" "" pidres ${pidres})
32   execute_process(COMMAND wmctrl -l -p OUTPUT_VARIABLE _wmco)
33   string(REGEX REPLACE "[\n]+" ";" _wmc ${_wmco})
34   foreach(_w ${_wmc})
35     string(REGEX MATCH "${pidres}" _wr ${_w})
36     if (${_wr} MATCHES ${pidres})
37       # this entry contains the pid, go search for X11-window-id
38       string(REGEX REPLACE " .*" "" _wr ${_w})
39       set(LYX_WINDOW_NAME ${_wr})
40       message(STATUS "Set LYX_WINDOW_NAME to ${_wr}")
41     endif()
42   endforeach()
43 else()
44   set(pidres "")
45   set(LYX_WINDOW_NAME "")
46 endif()
47
48 set(LYX_EXE "${BINDIR}/${LYX}")
49 set(XVKBD_EXE "${BINDIR}/xvkbd")
50
51 # Environments needed by keytest.py
52 set(ENV{PACKAGE} ${PACKAGE})
53 set(ENV{LOCALE_DIR} ${LOCALE_DIR})
54 set(ENV{LYX_LOCALEDIR} "${WORKDIR}/../locale")
55 set(ENV{LYX_USERDIR} ${WORKDIR})
56 set(ENV{LYX_PID} ${pidres})
57 set(ENV{LYX_WINDOW_NAME} ${LYX_WINDOW_NAME})
58 set(ENV{LYX_EXE} ${LYX_EXE})
59 set(ENV{LYX} ${LYX})
60 set(ENV{XVKBD_EXE} ${XVKBD_EXE})
61 set(ENV{KEYTEST_INFILE} "${AUTOTEST_ROOT}/${KEYTEST_INFILE}")
62 set(ENV{KEYTEST_OUTFILE} "${WORKDIR}/${KEYTEST_OUTFILE}")
63 set(ENV{PO_BUILD_DIR} "${PO_BUILD_DIR}")
64 set(ENV{MAX_DROP} 0)
65 set(ENV{MAX_LOOPS} 1)
66 file(GLOB _testfiles RELATIVE "${WORKDIR}" "test*.*" "#test*.*")
67 if(_testfiles)
68   # remove some leftover files from previous test
69   execute_process(
70   COMMAND ${CMAKE_COMMAND} -E remove -f ${_testfiles} )
71 endif()
72 execute_process(
73   COMMAND python ${KEYTEST}
74   RESULT_VARIABLE KEYTEST_RES)
75 if(KEYTEST_RES)
76   message(FATAL_ERROR "KEYTEST failed: KEYTEST_RES=${KEYTEST_RES}")
77 endif()
78