# KEYTEST_OUTFILE = xxx-out.txt
# BINDIR = ${BUILD_DIR}/bin
# WORKDIR = ${BUILD_DIR}/autotests/out-home
+# LYX_USERDIR_VER = ${LYX_USERDIR_VER}
# LOCALE_DIR = ${BUILD_DIR}/autotests/locale
# PO_BUILD_DIR = ${BUILD_DIR}/po
# PACKAGE = lyx2.1
#
# Script should be called like:
# cmake -DAUTOTEST_ROOT=xxxx \
+# -DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}
# -DKEYTEST_INFILE=xxxx \
# -DKEYTEST_OUTFILE=xxx \
# -DBINDIR=xxx \
# -DLYX=xxx \
# -DWORKDIR=xxx \
+# -DLYX_USERDIR_VER=${LYX_USERDIR_VER} \
# -DLOCALE_DIR=xxx \
# -DPO_BUILD_DIR=xxx \
# -DPACKAGE=xxx \
+# -DFRONTEND=Qt? \
# -P ${AUTOTEST_ROOT}/single-test.cmake
set(KEYTEST "${AUTOTEST_ROOT}/keytest.py")
-execute_process(COMMAND pidof ${LYX} OUTPUT_VARIABLE LYX_PID RESULT_VARIABLE pidstat OUTPUT_VARIABLE pidres)
-message(STATUS "pidres = ${pidres}")
-if (NOT pidstat)
- # lyx already running, remove trailing '\n' from pid
- string(REGEX REPLACE "\n" "" pidres ${pidres})
- execute_process(COMMAND wmctrl -l -p OUTPUT_VARIABLE _wmco)
- string(REGEX REPLACE "[\n]+" ";" _wmc ${_wmco})
- foreach(_w ${_wmc})
- string(REGEX MATCH "${pidres}" _wr ${_w})
- if (${_wr} MATCHES ${pidres})
- # this entry contains the pid, go search for X11-window-id
- string(REGEX REPLACE " .*" "" _wr ${_w})
- set(LYX_WINDOW_NAME ${_wr})
- message(STATUS "Set LYX_WINDOW_NAME to ${_wr}")
+if(0)
+ # This thread works, but the sollution in keytest.py is faster
+ #-------------------------------------------------------------
+ # Try to wait some seconds until the previous lyx stopped
+ # but not more than 30 seconds
+ message(STATUS "Wait for maximal 30 seconds until the previous lyx finishes")
+ set(lcount 0)
+ set(pidstat 1)
+ while (NOT lcount GREATER 30)
+ MATH(EXPR lcount "${lcount} + 1")
+ execute_process(COMMAND pidof ${LYX} OUTPUT_VARIABLE LYX_PID RESULT_VARIABLE pidstat OUTPUT_VARIABLE pidres)
+ if (pidstat)
+ break()
endif()
- endforeach()
-else()
- set(pidres "")
- set(LYX_WINDOW_NAME "")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 1)
+ endwhile()
+
+ if (lcount GREATER 1)
+ # We had to wait for some seconds
+ message(STATUS "There was still some lyx in way(${lcount})")
+ endif()
+ if (NOT pidstat)
+ # lyx still running, remove trailing '\n' from pid
+ string(REGEX REPLACE "\n" "" pidres ${pidres})
+ message(FATAL_ERROR "Old lyx with pid ${pidres} still running")
+ endif()
+endif()
+
+#check for plausible DISPLAY environment (needed bei keytests)
+set(DISPLAY_VAR $ENV{DISPLAY})
+if(NOT DISPLAY_VAR MATCHES "^[a-zA-Z\\.]*:[0-9]+\(\\.[0-9]+\)?$")
+ message(FATAL_ERROR "Invalid DISPLAY environment value (== '${DISPLAY_VAR}')")
endif()
set(LYX_EXE "${BINDIR}/${LYX}")
-set(XVKBD_EXE "${BINDIR}/xvkbd")
-set(ENV{XVKBD_HACKED} "1")
-if(EXISTS "${WORKDIR}/.lyx/session")
- execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f "${WORKDIR}/.lyx/session")
+set(ENV{QT_FRONTEND} ${FRONTEND})
+
+if(EXISTS "${LYX_TESTS_USERDIR}/session")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f "${LYX_TESTS_USERDIR}/session")
endif()
# Environments needed by keytest.py
+set(ENV{EXTRA_PATH} "${AUTOTEST_ROOT}")
set(ENV{PACKAGE} ${PACKAGE})
set(ENV{LOCALE_DIR} ${LOCALE_DIR})
-set(ENV{LYX_LOCALEDIR} "${WORKDIR}/../locale")
-set(ENV{LYX_USERDIR} "${WORKDIR}/.lyx")
+set(ENV{LYX_LOCALEDIR} "${LOCALE_DIR}")
+set(ENV{${LYX_USERDIR_VER}} "${LYX_TESTS_USERDIR}")
set(ENV{LYX_PID} ${pidres})
set(ENV{LYX_WINDOW_NAME} ${LYX_WINDOW_NAME})
set(ENV{LYX_EXE} ${LYX_EXE})
if(EXISTS "${AUTOTEST_ROOT}/${_jj}.lyx")
configure_file("${AUTOTEST_ROOT}/${_jj}.lyx" "${WORKDIR}/../${_jj}.lyx" COPYONLY)
endif()
+
execute_process(
COMMAND python ${KEYTEST}
RESULT_VARIABLE KEYTEST_RES)