Compare commits

..

2 Commits

Author SHA1 Message Date
451859e976
Fix the test target and unargumented ctest
CMake does know how to be tough on users, but we've won at last.
2021-10-27 00:18:01 +02:00
0f45b9bf3b
Test the project's XMLs for well-formedness
But only if the respective binaries can be found.
2021-10-26 23:34:04 +02:00

View File

@ -72,9 +72,11 @@ if (USE_SYSTEM_TERMO)
message (FATAL_ERROR "System termo library not found") message (FATAL_ERROR "System termo library not found")
endif () endif ()
else () else ()
# We don't want the library to install, even though EXCLUDE_FROM_ALL # We don't want the library to install, but EXCLUDE_FROM_ALL ignores tests
# sabotages CTest -- those unbuilt tests need to be excluded in CTest runs
add_subdirectory (termo EXCLUDE_FROM_ALL) add_subdirectory (termo EXCLUDE_FROM_ALL)
file (WRITE ${PROJECT_BINARY_DIR}/CTestCustom.cmake
"execute_process (COMMAND ${CMAKE_COMMAND} --build termo)")
# We don't have many good choices; this is a relatively clean approach # We don't have many good choices; this is a relatively clean approach
# (other possibilities: setting a variable in the parent scope, using # (other possibilities: setting a variable in the parent scope, using
# a cache variable, writing a special config file with build paths in it # a cache variable, writing a special config file with build paths in it
@ -276,6 +278,19 @@ set (project_tests stardict)
if (BUILD_TESTING) if (BUILD_TESTING)
enable_testing () enable_testing ()
find_program (xmlwf_EXECUTABLE xmlwf)
find_program (xmllint_EXECUTABLE xmllint)
foreach (xml sdgui.xml)
if (xmlwf_EXECUTABLE)
add_test (test-xmlwf-${xml} ${xmlwf_EXECUTABLE}
${PROJECT_SOURCE_DIR}/${xml})
endif ()
if (xmllint_EXECUTABLE)
add_test (test-xmllint-${xml} ${xmllint_EXECUTABLE} --noout
${PROJECT_SOURCE_DIR}/${xml})
endif ()
endforeach ()
foreach (name ${project_tests}) foreach (name ${project_tests})
add_executable (test-${name} add_executable (test-${name}
src/test-${name}.c ${project_common_sources}) src/test-${name}.c ${project_common_sources})