set(${varname} ${out_formats})
endmacro()
-macro(findexpr found testname listname)
+macro(findexpr found testname listname rsublabel)
set(_found 0)
+ set(tmpsublabel "")
foreach(_itrx ${${listname}})
- set(_itr "^${_itrx}$")
- if(${testname} MATCHES ${_itr})
- set(_found 1)
- break()
+ if ("${_itrx}" MATCHES "^Sublabel:")
+ set(tmpsublabel "")
+ string(REGEX REPLACE "^Sublabel:[ \t]*" "" _itrlabels ${_itrx})
+ string(REGEX MATCHALL "([a-zA-Z]+)" _labels ${_itrlabels})
+ foreach(subl ${_labels})
+ if (subl STREQUAL "RESET")
+ set(tmpsublabel "")
+ else()
+ list(APPEND tmpsublabel ${subl})
+ endif()
+ endforeach()
+ # remove doubles in sublabel
+ list(REMOVE_DUPLICATES tmpsublabel)
+ else()
+ set(_itr "^${_itrx}$")
+ if (${testname} MATCHES "${_itr}")
+ set(_found 1)
+ break()
+ endif()
endif()
endforeach()
+ if (${_found})
+ if (NOT "${tmpsublabel}" STREQUAL "")
+ list(APPEND ${rsublabel} ${tmpsublabel})
+ endif()
+ endif()
set(${found} ${_found})
endmacro()
-macro(maketestname testname reverted listreverted listignored listnonstandard)
+function(join rvalues glue routput)
+ set(locallist ${${rvalues}})
+ list(REMOVE_ITEM locallist "export" "lyx2lyx" "load")
+ string(REGEX REPLACE "([^\\]|^);" "\\1${glue}" out "${locallist}")
+ set(${routput} ${out} PARENT_SCOPE)
+endfunction()
+
+macro(maketestname testname reverted listsuspicious listignored listunreliable listlabels)
string(REGEX MATCH "\\/[a-z][a-z](_[A-Z][A-Z])?\\/" _v ${${testname}})
if(_v)
string(REGEX REPLACE "\\/" "" _v ${_v})
- set(listrevertedx ${listreverted}_${_v})
+ set(listsuspiciousx ${listsuspicious}_${_v})
set(listignoredx ${listignored}_${_v})
- set(listnonstandardx ${listnonstandard}_${_v})
+ set(listunreliablex ${listunreliable}_${_v})
+ set(listsuspendedx suspendedTests_${v})
else()
- set(listrevertedx ${listreverted})
+ set(listsuspiciousx ${listsuspicious})
set(listignoredx ${listignored})
- set(listnonstandardx ${listnonstandard})
+ set(listunreliablex ${listunreliable})
+ set(listsuspendedx suspendedTests)
endif()
- findexpr(mfound ${testname} ${listignoredx})
+ set(sublabel "${${listlabels}}")
+ findexpr(mfound ${testname} ${listignoredx} sublabel)
if (NOT mfound)
- # check if they are non-standard
- findexpr(nsfound ${testname} ${listnonstandardx})
- if (nsfound)
- set(${testname} "NON_STANDARD.${${testname}}")
- else ()
+ set(sublabel2 "")
+ findexpr(foundunreliable ${testname} ${listunreliablex} sublabel2)
+ if (foundunreliable)
+ set(sublabel "unreliable" ${sublabel} ${sublabel2})
+ list(REMOVE_ITEM sublabel "export" "reverted" "templates" "mathmacros" "manuals" "autotests")
+ else()
string(REGEX MATCH "_(systemF|texF|pdf3|pdf2|pdf|dvi|lyx16|xhtml)$" _v ${${testname}})
- # check if test _may_ be in listreverted
+ # check if test _may_ be in listsuspicious
+ set(sublabel2 "")
if (_v)
- findexpr(mfound ${testname} ${listrevertedx})
+ findexpr(mfound ${testname} ${listsuspiciousx} sublabel2)
else()
- set(mfound OFF)
+ set(mfound OFF)
endif()
- if (NOT mfound)
- set(${reverted} 0)
+ if (mfound)
+ set(sublabel3 "")
+ findexpr(foundsuspended ${testname} ${listsuspendedx} sublabel3)
+ set(${reverted} 1)
+ if (foundsuspended)
+ set(sublabel "reverted" "suspended" ${sublabel} ${sublabel2} ${sublabel3})
+ list(REMOVE_ITEM sublabel "export")
+ else()
+ set(sublabel "reverted" ${sublabel} ${sublabel2} ${sublabel3})
+ endif()
else()
- set(${reverted} 1)
- set(${testname} "INVERTED_SEE-README.ctest_${${testname}}")
+ set(${reverted} 0)
endif()
endif()
+ list(REMOVE_DUPLICATES sublabel)
+ if (NOT sublabel STREQUAL "")
+ join(sublabel "." tmpprefixx)
+ string(TOUPPER "${tmpprefixx}_" tmpprefix)
+ set(${testname} "${tmpprefix}${${testname}}")
+ set(${listlabels} ${sublabel})
+ endif()
else()
+ # No testname because ignored
set(${testname} "")
endif()
endmacro()
+# This labels should not be used in .*Tests files
+set(known_labels "export" "key" "layout" "load" "lyx2lyx"
+ "examples" "manuals" "mathmacros" "reverted" "templates" "unreliable" "suspended"
+ "module" "roundtrip" "url")
+
macro(loadTestList filename resList)
# Create list of strings from a file without comments
- file(STRINGS ${filename} tempList)
+ # ENCODING parameter is a new feature in cmake 3.1
+ if (CMAKE_VERSION VERSION_GREATER "3.1")
+ file(STRINGS ${filename} tempList ENCODING "UTF-8")
+ else()
+ file(STRINGS ${filename} tempList)
+ endif()
set(${resList})
+ set(sublabel)
+ set(mylabels "")
+ set(languages "")
+ message(STATUS "Reading list ${filename}")
foreach(_l ${tempList})
- string(REGEX REPLACE "[ \t]*#.*" "" _newl "${_l}")
+ set(_newl "${_l}")
+ string(REGEX REPLACE "[ \t]+$" "" _newl "${_l}")
+ string(REGEX REPLACE "[ \t]*#.*$" "" _newl "${_l}")
if(_newl)
- #message(STATUS "Testing ${_newl}")
- string(REGEX REPLACE "(\\/|\\||\\(|\\))" " " _vxx ${_newl})
- string(REGEX MATCHALL " ([a-z][a-z](_[A-Z][A-Z])?) " _vx ${_vxx})
- if(_vx)
- foreach(_v ${_vx})
- string(REGEX REPLACE " " "" _v ${_v})
- #message(STATUS " ==> ${resList}_${_v}")
- list(APPEND ${resList}_${_v} "${_newl}")
+ list(APPEND ${resList} "${_newl}")
+ if (_newl MATCHES "^Sublabel:")
+ string(REGEX REPLACE "^Sublabel:[ \t]*" "" _newlabels ${_newl})
+ string(REGEX MATCHALL "([a-zA-Z]+)" _labels ${_newlabels})
+ foreach(labname ${_labels})
+ if (NOT labname STREQUAL "RESET")
+ list(APPEND mylabels ${labname})
+ endif()
endforeach()
- if(_newl MATCHES "\\(\\|")
- #message(STATUS " ==> ${resList}")
- list(APPEND ${resList} "${_newl}")
- endif()
+ list(REMOVE_DUPLICATES mylabels)
+ set(sublabel ${_newl})
else()
- #message(STATUS " ==> ${resList}")
- list(APPEND ${resList} "${_newl}")
+ string(REGEX REPLACE "(\\/|\\||\\(|\\))" " " _vxx ${_newl})
+ string(REGEX MATCHALL " ([a-z][a-z](_[A-Z][A-Z])?) " _vx ${_vxx})
+ if(_vx)
+ foreach(_v ${_vx})
+ string(REGEX REPLACE " " "" _v ${_v})
+ #message(STATUS " ==> ${resList}_${_v}")
+ #message(STATUS "sublabel = ${sublabel}, sublabel_${_v} = ${sublabel_${_v}}")
+ if (NOT sublabel STREQUAL "${sublabel_${_v}}")
+ list(APPEND ${resList}_${_v} "${sublabel}")
+ set(sublabel_${_v} "${sublabel}")
+ #message(STATUS "Setting variable sublabel_${_v} with \"${sublabel}\"")
+ endif()
+ list(APPEND ${resList}_${_v} "${_newl}")
+ list(APPEND languages ${_v})
+ endforeach()
+ list(REMOVE_DUPLICATES languages)
+ #message(STATUS "languages = ${languages}")
+ endif()
endif()
endif()
endforeach()
+ foreach(_l ${mylabels})
+ list(FIND known_labels ${_l} _ff)
+ if (_ff GREATER -1)
+ message(STATUS "Label \"${_l}\" already in use. Reused in ${filename}")
+ else()
+ list(APPEND known_labels ${_l})
+ endif()
+ endforeach()
+ foreach(_lg ${languages})
+ # reset label for each used language string at end of file
+ #message(STATUS "Resetting variable sublabel_${_lg}, previously set to ${sublabel_${_lg}}")
+ set(sublabel_${_lg} "")
+ endforeach()
endmacro()
-loadTestList(revertedTests revertedTests)
+loadTestList(suspiciousTests suspiciousTests)
loadTestList(ignoredTests ignoredTests)
loadTestList(suspendedTests suspendedTests)
-loadTestList(nonstandardTests nonstandardTests)
-
-macro(handlesuspended TestName reverted testlabel)
- set(mylabel ${${testlabel}})
- set(myreverted ${reverted})
-
- # check for nonstandard
- if ("${TestName}" MATCHES "^NON_STANDARD")
- set(mylabel "nonstandard")
- set(myreverted 0)
- elseif (${reverted})
- # check suspension only for reverted tests
- findexpr(tfound TestName suspendedTests)
- if (tfound)
- set(mylabel "suspended")
- set(myreverted 0) # if test is to be suspended, remove the 'reverted' flag
- endif()
- endif()
- setmarkedtestlabel(${TestName} ${myreverted} ${mylabel})
-endmacro()
+loadTestList(unreliableTests unreliableTests)
# preparing to add e.g. development/mathmacros to the foreach() loop
-foreach(libsubfolderx lib/doc lib/examples lib/templates development/mathmacros)
+foreach(libsubfolderx autotests/export lib/doc lib/examples lib/templates development/mathmacros)
set(testlabel "export")
if (libsubfolderx MATCHES "lib/doc")
list(APPEND testlabel "manuals")
# Strip extension
string(REGEX REPLACE "\\.lyx$" "" f ${f})
set(TestName "export/${libsubfolder}/${f}_lyx16")
- maketestname(TestName reverted revertedTests ignoredTests nonstandardTests)
+ set(mytestlabel ${testlabel})
+ maketestname(TestName reverted suspiciousTests ignoredTests unreliableTests mytestlabel)
if(TestName)
add_test(NAME ${TestName}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
-DTOP_SRC_DIR=${TOP_SRC_DIR}
-DPERL_EXECUTABLE=${PERL_EXECUTABLE}
-P "${TOP_SRC_DIR}/development/autotests/export.cmake")
- handlesuspended(${TestName} ${reverted} testlabel) # checking for suspended lyx16 exports
+ setmarkedtestlabel(${TestName} ${reverted} ${mytestlabel})
endif()
if(LYX_PYTHON_EXECUTABLE)
set(lyx2lyxtestlabel "lyx2lyx")
# For use of lyx2lyx we need the python executable
+ set(mytestlabel ${lyx2lyxtestlabel})
set(TestName "lyx2lyx/${libsubfolder}/${f}")
- maketestname(TestName reverted revertedTests ignoredTests nonstandardTests)
+ maketestname(TestName reverted suspiciousTests ignoredTests unreliableTests mytestlabel)
if(TestName)
add_test(NAME ${TestName}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
"-DLYX_TESTS_USERDIR=${LYX_TESTS_USERDIR}"
"-DLYXFILE=${LIBSUB_SRC_DIR}/${f}.lyx"
-P "${TOP_SRC_DIR}/development/autotests/lyx2lyxtest.cmake")
- handlesuspended(${TestName} ${reverted} lyx2lyxtestlabel)
+ setmarkedtestlabel(${TestName} ${reverted} ${mytestlabel})
endif()
endif()
+ set(loadtestlabel "load")
+ set(mytestlabel ${loadtestlabel})
set(TestName "check_load/${libsubfolder}/${f}")
- maketestname(TestName reverted revertedTests ignoredTests nonstandardTests)
+ maketestname(TestName reverted suspiciousTests ignoredTests unreliableTests mytestlabel)
if(TestName)
- set(loadtestlabel "load")
add_test(NAME ${TestName}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
COMMAND ${CMAKE_COMMAND} -DLYXFILE=${LIBSUB_SRC_DIR}/${f}.lyx
-DPARAMS_DIR=${TOP_SRC_DIR}/development/autotests
-DWORKDIR=${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}
-P "${TOP_SRC_DIR}/development/autotests/check_load.cmake")
- handlesuspended(${TestName} ${reverted} loadtestlabel)
+ setmarkedtestlabel(${TestName} ${reverted} ${mytestlabel})
set_tests_properties(${TestName} PROPERTIES RUN_SERIAL ON)
endif()
getoutputformats("${LIBSUB_SRC_DIR}/${f}.lyx" formatlist)
else()
set(TestName "export/${libsubfolder}/${f}_${format}_${fonttype}")
endif()
- maketestname(TestName reverted revertedTests ignoredTests nonstandardTests)
+ set(mytestlabel ${testlabel})
+ maketestname(TestName reverted suspiciousTests ignoredTests unreliableTests mytestlabel)
if(TestName)
add_test(NAME ${TestName}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${LYX_HOME}"
-DTOP_SRC_DIR=${TOP_SRC_DIR}
-DPERL_EXECUTABLE=${PERL_EXECUTABLE}
-P "${TOP_SRC_DIR}/development/autotests/export.cmake")
- handlesuspended(${TestName} ${reverted} testlabel) # check for suspended pdf/dvi exports
+ setmarkedtestlabel(${TestName} ${reverted} ${mytestlabel}) # check for suspended pdf/dvi exports
endif()
endforeach()
endforeach()