X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=development%2Fautotests%2Fsingle-test.cmake;h=871bf11540cf6258d26c85c6b15336837785d6b2;hb=2e854cd36c80ef4fc3d9446d391bfa18b0469e30;hp=5ab03161e0ff3bd1b21f19de5b787240b543e440;hpb=57b04ac7f47b69d2dfaa419cbe5c1f8d6a09f5e0;p=lyx.git diff --git a/development/autotests/single-test.cmake b/development/autotests/single-test.cmake index 5ab03161e0..871bf11540 100755 --- a/development/autotests/single-test.cmake +++ b/development/autotests/single-test.cmake @@ -6,57 +6,100 @@ # 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 \ -# -WWORKDIR=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") -set(MAX_DROP 0) -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(LYX_EXE "${BINDIR}/${LYX}") +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{LYX_USERDIR} ${LYX_USERDIR}) +set(ENV{EXTRA_PATH} "${AUTOTEST_ROOT}") +set(ENV{PACKAGE} ${PACKAGE}) +set(ENV{LOCALE_DIR} ${LOCALE_DIR}) +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}) +set(ENV{LYX} ${LYX}) set(ENV{XVKBD_EXE} ${XVKBD_EXE}) set(ENV{KEYTEST_INFILE} "${AUTOTEST_ROOT}/${KEYTEST_INFILE}") set(ENV{KEYTEST_OUTFILE} "${WORKDIR}/${KEYTEST_OUTFILE}") -set(ENV{MAX_DROP} 1) -file(GLOB _testfiles RELATIVE "${WORKDIR}" "test.*") +set(ENV{PO_BUILD_DIR} "${PO_BUILD_DIR}") +set(ENV{MAX_DROP} 0) +set(ENV{MAX_LOOPS} 1) +string(REGEX REPLACE "-in\\.(txt|sh)$" "" _jj ${KEYTEST_INFILE}) +if(EXISTS "${WORKDIR}/../${_jj}.lyx.emergency") + execute_process( + COMMAND ${CMAKE_COMMAND} -E remove -f "${WORKDIR}/../${_jj}.lyx.emergency" ) +endif() +file(GLOB _testfiles RELATIVE "${WORKDIR}" "test*.*" "#test*.*") if(_testfiles) # remove some leftover files from previous test execute_process( COMMAND ${CMAKE_COMMAND} -E remove -f ${_testfiles} ) endif() +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)