]> git.lyx.org Git - lyx.git/blob - development/autotests/single-test.cmake
5ab03161e0ff3bd1b21f19de5b787240b543e440
[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 #
10 # Script should be called like:
11 # cmake -DAUTOTEST_ROOT=xxxx \
12 #       -DKEYTEST_INFILE=xxxx \
13 #       -DKEYTEST_OUTFILE=xxx \
14 #       -DBINDIR=xxx \
15 #       -WWORKDIR=xxx \
16 #       -P ${AUTOTEST_ROOT}/single-test.cmake
17
18 set(KEYTEST "${AUTOTEST_ROOT}/keytest.py")
19
20 set(MAX_DROP 0)
21 execute_process(COMMAND pidof lyx OUTPUT_VARIABLE LYX_PID RESULT_VARIABLE pidstat OUTPUT_VARIABLE pidres)
22 message(STATUS "pidres = ${pidres}")
23 if (NOT pidstat)
24   # lyx already running, remove trailing '\n' from pid
25   string(REGEX REPLACE "\n" "" pidres ${pidres})
26   execute_process(COMMAND wmctrl -l -p OUTPUT_VARIABLE _wmco)
27   string(REGEX REPLACE "[\n]+" ";" _wmc ${_wmco})
28   foreach(_w ${_wmc})
29     string(REGEX MATCH "${pidres}" _wr ${_w})
30     if (${_wr} MATCHES ${pidres})
31       # this entry contains the pid, go search for X11-window-id
32       string(REGEX REPLACE " .*" "" _wr ${_w})
33       set(LYX_WINDOW_NAME ${_wr})
34       message(STATUS "Set LYX_WINDOW_NAME to ${_wr}")
35     endif()
36   endforeach()
37 else()
38   set(pidres "")
39   set(LYX_WINDOW_NAME "")
40 endif()
41
42 set(LYX_EXE "${BINDIR}/lyx")
43 set(XVKBD_EXE "${BINDIR}/xvkbd")
44
45 # Environments needed by keytest.py
46 set(ENV{LYX_USERDIR} ${LYX_USERDIR})
47 set(ENV{LYX_PID} ${pidres})
48 set(ENV{LYX_WINDOW_NAME} ${LYX_WINDOW_NAME})
49 set(ENV{LYX_EXE} ${LYX_EXE})
50 set(ENV{XVKBD_EXE} ${XVKBD_EXE})
51 set(ENV{KEYTEST_INFILE} "${AUTOTEST_ROOT}/${KEYTEST_INFILE}")
52 set(ENV{KEYTEST_OUTFILE} "${WORKDIR}/${KEYTEST_OUTFILE}")
53 set(ENV{MAX_DROP} 1)
54 file(GLOB _testfiles RELATIVE "${WORKDIR}" "test.*")
55 if(_testfiles)
56   # remove some leftover files from previous test
57   execute_process(
58   COMMAND ${CMAKE_COMMAND} -E remove -f ${_testfiles} )
59 endif()
60 execute_process(
61   COMMAND python ${KEYTEST}
62   RESULT_VARIABLE KEYTEST_RES)
63 if(KEYTEST_RES)
64   message(FATAL_ERROR "KEYTEST failed: KEYTEST_RES=${KEYTEST_RES}")
65 endif()
66