From 1f93b0805e2229c044afe705b0276702b57a7624 Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Thu, 13 Dec 2012 12:38:38 +0100 Subject: [PATCH] Cmake build autotests: Split export test to test on each format and each input file One can still check all exports with one commend ctest -R "export.*" --- development/autotests/CMakeLists.txt | 32 ++++++++-- development/autotests/export.cmake | 81 ++++++++++++++++++------- development/autotests/single-test.cmake | 5 +- 3 files changed, 89 insertions(+), 29 deletions(-) diff --git a/development/autotests/CMakeLists.txt b/development/autotests/CMakeLists.txt index 7bdd2efbc0..7cebe09f52 100644 --- a/development/autotests/CMakeLists.txt +++ b/development/autotests/CMakeLists.txt @@ -13,7 +13,7 @@ if(Q_WS_X11) # while testing find_package(X11) if(X11_FOUND AND PCREGREP_EXE AND WMCTRL_EXE) - message(STATUS "PCREGREP_EXE and WMCTRL_EXE found") + #message(STATUS "PCREGREP_EXE and WMCTRL_EXE found") project(autotests) add_subdirectory(xvkbd) @@ -36,7 +36,7 @@ if(Q_WS_X11) -DAUTOTEST_ROOT=${TOP_SRC_DIR}/development/autotests -DPO_BUILD_DIR=${TOP_BINARY_DIR}/po -DKEYTEST_INFILE=${_tf} - -DBINDIR=${TOP_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR} + -DBINDIR=$ -DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME} -DKEYTEST_OUTFILE=${_t}-out.txt -DPACKAGE=${PACKAGE} @@ -45,7 +45,27 @@ if(Q_WS_X11) endforeach() endif() endif() -add_test(NAME lyx_export - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}" - COMMAND ${CMAKE_COMMAND} -DLYX_ROOT=${TOP_SRC_DIR} -Dlyx=${TOP_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/lyx -P "${TOP_SRC_DIR}/development/autotests/export.cmake") -set_tests_properties(lyx_export PROPERTIES DEPENDS lyx) + +file(GLOB lyx_files RELATIVE "${TOP_SRC_DIR}/lib/doc" "${TOP_SRC_DIR}/lib/doc/*.lyx") +foreach(f ${lyx_files}) + # Strip extension + string(REGEX REPLACE "\\.lyx$" "" f ${f}) + add_test(NAME export_${f}_lyx16 + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}" + COMMAND ${CMAKE_COMMAND} -DLYX_ROOT=${TOP_SRC_DIR}/lib/doc + -Dlyx=$ + -Dformat=lyx16x + -Dextension=16.lyx + -Dfile=${f} + -P "${TOP_SRC_DIR}/development/autotests/export.cmake") + add_test(NAME export_${f}_xhtml + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}" + COMMAND ${CMAKE_COMMAND} -DLYX_ROOT=${TOP_SRC_DIR}/lib/doc + -Dlyx=$ + -Dformat=xhtml + -Dextension=xhtml + -Dfile=${f} + -P "${TOP_SRC_DIR}/development/autotests/export.cmake") +endforeach() + + diff --git a/development/autotests/export.cmake b/development/autotests/export.cmake index 6693e097d0..bcdcb3a39c 100755 --- a/development/autotests/export.cmake +++ b/development/autotests/export.cmake @@ -4,34 +4,73 @@ # Copyright (c) 2012 Kornel Benko kornel@lyx.org # # -# LYX_ROOT = ${TOP_SRC_DIR} -# lyx = ${TOP_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/lyx +# LYX_ROOT = ${TOP_SRC_DIR}/lib/doc +# lyx = +# format = lyx16x|xhtml +# extension = 16.lyx|xhtml +# file = xxx # # Script should be called like: # cmake -DLYX_ROOT=xxx \ # -Dlyx=xxx \ +# -Dformat=xxx \ +# -Dextension=xxx \ +# -Dfile=xxx \ # -P "${TOP_SRC_DIR}/development/autotests/export.cmake" # -file(GLOB lyx_files "${LYX_ROOT}/lib/doc/*.lyx") -message(STATUS "lyx_files = ${lyx_files}") -set(ERRORS) -foreach(format lyx16x xhtml) - foreach(f ${lyx_files}) - message(STATUS "Executing ${lyx} -E ${format} localtest.${format} ${f}") - execute_process(COMMAND ${CMAKE_COMMAND} -E remove localtest.xhtml localtest.16.lyx) - execute_process( - COMMAND ${lyx} -E ${format} localtest.${format} ${f} - RESULT_VARIABLE _err) - string(COMPARE NOTEQUAL ${_err} 0 _erg) - if(_erg) - list(APPEND ERRORS "Exporting ${f} to ${format}") +message(STATUS "Executing ${lyx} -E ${format} ${file}.${extension} ${LYX_ROOT}/${file}.lyx") +execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${file}.${extension}) +execute_process( + COMMAND ${lyx} -E ${format} ${file}.${extension} "${LYX_ROOT}/${file}.lyx" + RESULT_VARIABLE _err) +string(COMPARE NOTEQUAL ${_err} 0 _erg) +if(erg) + message(STATUS "Exporting ${f}.lyx to ${format}") + message(FATAL_ERROR "Export failed") +endif() +# This script invokes the keytest.py script with the simple set-up needed +# to re-run deterministic regression tests that one would like to have. +# +# AUTOTEST_ROOT = ${LYX_ROOT}/development/autotests +# KEYTEST_INFILE = xxx-in.txt +# KEYTEST_OUTFILE = xxx-out.txt +# BINDIR = ${BUILD_DIR}/bin +# WORKDIR = ${BUILD_DIR}/autotests/out-home +# LOCALE_DIR = ${BUILD_DIR}/autotests/locale +# PO_BUILD_DIR = ${BUILD_DIR}/po +# PACKAGE = lyx2.1 +# +# Script should be called like: +# cmake -DAUTOTEST_ROOT=xxxx \ +# -DKEYTEST_INFILE=xxxx \ +# -DKEYTEST_OUTFILE=xxx \ +# -DBINDIR=xxx \ +# -DWORKDIR=xxx \ +# -DLOCALE_DIR=xxx \ +# -DPO_BUILD_DIR=xxx \ +# -DPACKAGE=xxx \ +# -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}") endif() endforeach() -endforeach() -if(ERRORS) - foreach(m ${ERRORS}) - message(STATUS ${m}) - endforeach() - message(FATAL_ERROR "Export failed") +else() + set(pidres "") + set(LYX_WINDOW_NAME "") endif() diff --git a/development/autotests/single-test.cmake b/development/autotests/single-test.cmake index f9e9a28a9e..e1b5b59d53 100755 --- a/development/autotests/single-test.cmake +++ b/development/autotests/single-test.cmake @@ -51,7 +51,7 @@ set(XVKBD_EXE "${BINDIR}/xvkbd") set(ENV{PACKAGE} ${PACKAGE}) set(ENV{LOCALE_DIR} ${LOCALE_DIR}) set(ENV{LYX_LOCALEDIR} "${WORKDIR}/../locale") -set(ENV{LYX_USERDIR} ${LYX_USERDIR}) +set(ENV{LYX_USERDIR} ${WORKDIR}) set(ENV{LYX_PID} ${pidres}) set(ENV{LYX_WINDOW_NAME} ${LYX_WINDOW_NAME}) set(ENV{LYX_EXE} ${LYX_EXE}) @@ -59,7 +59,8 @@ set(ENV{XVKBD_EXE} ${XVKBD_EXE}) set(ENV{KEYTEST_INFILE} "${AUTOTEST_ROOT}/${KEYTEST_INFILE}") set(ENV{KEYTEST_OUTFILE} "${WORKDIR}/${KEYTEST_OUTFILE}") set(ENV{PO_BUILD_DIR} "${PO_BUILD_DIR}") -set(ENV{MAX_DROP} 1) +set(ENV{MAX_DROP} 0) +set(ENV{MAX_LOOP} 1) file(GLOB _testfiles RELATIVE "${WORKDIR}" "test*.*" "#test*.*") if(_testfiles) # remove some leftover files from previous test -- 2.39.2