]> git.lyx.org Git - features.git/commitdiff
Cmake build autotests:
authorKornel Benko <kornel@lyx.org>
Thu, 13 Dec 2012 11:38:38 +0000 (12:38 +0100)
committerKornel Benko <kornel@lyx.org>
Thu, 13 Dec 2012 11:38:38 +0000 (12:38 +0100)
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
development/autotests/export.cmake
development/autotests/single-test.cmake

index 7bdd2efbc0f941b9f3c8dec233f59eeabebc9a69..7cebe09f5209e739cdf25e45981d0413c513d8c8 100644 (file)
@@ -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=$<TARGET_FILE_DIR:lyx>
        -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=$<TARGET_FILE:lyx>
+           -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=$<TARGET_FILE:lyx>
+           -Dformat=xhtml
+           -Dextension=xhtml
+           -Dfile=${f}
+           -P "${TOP_SRC_DIR}/development/autotests/export.cmake")
+endforeach()
+
+
index 6693e097d0be7f4de48da489038e7af574d6ae98..bcdcb3a39cba62bfdb111e5422c804ff68f4fe8a 100755 (executable)
@@ -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()
index f9e9a28a9e8e03bfe829a4e2135dde52d87f7efd..e1b5b59d53563fab7246111788c49803690e0c0a 100755 (executable)
@@ -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