+macro(getoutputformats filepath varname)
+ file(STRINGS "${filepath}" lines)
+ set(out_formats "xhtml" "dvi" "dvi3" "pdf" "pdf2" "pdf3" "pdf4" "pdf5")
+ if(NOT PERL_FOUND)
+ list(REMOVE_ITEM out_formats "dvi3" "pdf4" "pdf5")
+ endif()
+ set(${varname} ${out_formats})
+ foreach(_l ${lines})
+ if(_l MATCHES "^\\\\default_output_format +\([^ ]+\)")
+ if(CMAKE_MATCH_1 STREQUAL "default")
+ set(found ${out_formats})
+ elseif(CMAKE_MATCH_1 STREQUAL "xhtml")
+ set(found "xhtml")
+ else()
+ set(found "xhtml" ${CMAKE_MATCH_1})
+ endif()
+ set(${varname} ${found})
+ break()
+ endif()
+ endforeach()
+endmacro()
+
+macro(maketestname testname reverted listreverted listignored)
+ list(FIND ${listignored} ${${testname}} _idx)
+ if (${_idx} LESS 0)
+ list(FIND ${listreverted} ${${testname}} _idx)
+ if (${_idx} LESS 0)
+ set(${reverted} 0)
+ else()
+ set(${reverted} 1)
+ set(${testname} "INVERTED_SEE-README.ctest_${${testname}}")
+ endif()
+ else()
+ set(${testname} "")
+ endif()
+endmacro()
+
+macro(loadTestList filename resList)
+ # Create list of strings from a file without comments
+ file(STRINGS ${filename} tempList)
+ set(${resList})
+ foreach(_l ${tempList})
+ string(REGEX REPLACE "[ \t]*#.*" "" _newl "${_l}")
+ if(_newl)
+ list(APPEND ${resList} "${_newl}")
+ endif()
+ endforeach()
+endmacro()
+
+loadTestList(revertedTests revertedTests)
+loadTestList(ignoredTests ignoredTests)
+
+foreach(libsubfolder doc examples templates)
+ set(LIBSUB_SRC_DIR "${TOP_SRC_DIR}/lib/${libsubfolder}")
+ file(GLOB_RECURSE lyx_files RELATIVE "${LIBSUB_SRC_DIR}" "${LIBSUB_SRC_DIR}/*.lyx")
+ list(SORT lyx_files)
+ # Now create 2 lists. One for files in a language dir, one without
+ set(lang_lyx_files)
+ set(nolang_lyx_files)
+ foreach(f ${lyx_files})
+ string(REGEX MATCHALL "^[a-z][a-z](_[A-Z][A-Z])?\\/" _v ${f})
+ if(_v)
+ list(APPEND lang_lyx_files ${f})
+ else()
+ list(APPEND nolang_lyx_files ${f})
+ endif()
+ endforeach()
+ foreach(f ${nolang_lyx_files} ${lang_lyx_files})
+ # Strip extension
+ string(REGEX REPLACE "\\.lyx$" "" f ${f})
+ set(TestName "export/${libsubfolder}/${f}_lyx16")
+ maketestname(TestName reverted revertedTests ignoredTests)
+ if(TestName)
+ add_test(NAME ${TestName}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
+ COMMAND ${CMAKE_COMMAND} -DLYX_ROOT=${LIBSUB_SRC_DIR}
+ -DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}
+ -Dlyx=$<TARGET_FILE:${_lyx}>
+ -DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}
+ -DLYX_USERDIR_VER=${LYX_USERDIR_VER}
+ -Dformat=lyx16x
+ -Dextension=16.lyx
+ -Dfile=${f}
+ -Dreverted=${reverted}
+ -DTOP_SRC_DIR=${TOP_SRC_DIR}
+ -DPERL_EXECUTABLE=${PERL_EXECUTABLE}
+ -P "${TOP_SRC_DIR}/development/autotests/export.cmake")
+ setmarkedtestlabel(${TestName} ${reverted} "export")
+ endif()
+ set(TestName "lyx2lyx/${libsubfolder}/${f}")
+ maketestname(TestName reverted revertedTests ignoredTests)
+ if(TestName)
+ add_test(NAME ${TestName}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
+ COMMAND ${CMAKE_COMMAND} -DLYX2LYX=${TOP_SRC_DIR}/lib/lyx2lyx/lyx2lyx
+ -DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}
+ -DLYXFILE=${LIBSUB_SRC_DIR}/${f}.lyx
+ -P "${TOP_SRC_DIR}/development/autotests/lyx2lyxtest.cmake")
+ setmarkedtestlabel(${TestName} ${reverted} "export")
+ endif()
+ set(TestName "check_load/${libsubfolder}/${f}")
+ maketestname(TestName reverted revertedTests ignoredTests)
+ if(TestName)
+ add_test(NAME ${TestName}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
+ COMMAND ${CMAKE_COMMAND} -DLYXFILE=${LIBSUB_SRC_DIR}/${f}.lyx
+ -DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}
+ -Dlyx=$<TARGET_FILE:${_lyx}>
+ -DPARAMS_DIR=${TOP_SRC_DIR}/development/autotests
+ -DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}
+ -P "${TOP_SRC_DIR}/development/autotests/check_load.cmake")
+ setmarkedtestlabel(${TestName} ${reverted} "load")
+ endif()
+ getoutputformats("${LIBSUB_SRC_DIR}/${f}.lyx" formatlist)
+ foreach(format ${formatlist})
+ set(TestName "export/${libsubfolder}/${f}_${format}")
+ maketestname(TestName reverted revertedTests ignoredTests)
+ if(TestName)
+ add_test(NAME ${TestName}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
+ COMMAND ${CMAKE_COMMAND} -DLYX_ROOT=${LIBSUB_SRC_DIR}
+ -DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}
+ -Dlyx=$<TARGET_FILE:${_lyx}>
+ -DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}
+ -Dformat=${format}
+ -Dextension=${format}
+ -Dfile=${f}
+ -Dreverted=${reverted}
+ -DTOP_SRC_DIR=${TOP_SRC_DIR}
+ -DPERL_EXECUTABLE=${PERL_EXECUTABLE}
+ -P "${TOP_SRC_DIR}/development/autotests/export.cmake")
+ setmarkedtestlabel(${TestName} ${reverted} "export")
+ endif()
+ endforeach()
+ endforeach()
+endforeach()