mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-20 06:00:30 -06:00
Tests: Improve RunCMake.add_test TEST_LAUNCHER coverage
Verify that ctest actually runs the test command lines as expected.
This commit is contained in:
@@ -489,7 +489,7 @@ add_RunCMake_test(add_dependencies)
|
||||
add_RunCMake_test(add_executable)
|
||||
add_RunCMake_test(add_library)
|
||||
add_RunCMake_test(add_subdirectory -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER})
|
||||
add_RunCMake_test(add_test)
|
||||
add_RunCMake_test(add_test -DPSEUDO_EMULATOR=$<TARGET_FILE:pseudo_emulator>)
|
||||
add_RunCMake_test(build_command)
|
||||
add_executable(exit_code exit_code.c)
|
||||
set(execute_process_ARGS
|
||||
|
||||
@@ -42,8 +42,19 @@ block()
|
||||
run_cmake_command(EmptyArgument-ctest ${CMAKE_CTEST_COMMAND} -C Debug)
|
||||
endblock()
|
||||
|
||||
set(RunCMake_TEST_OPTIONS
|
||||
"-DCMAKE_TEST_LAUNCHER=/path/to/pseudo_test_launcher")
|
||||
|
||||
set(RunCMake_TEST_OPTIONS "-DCMAKE_TEST_LAUNCHER=${PSEUDO_EMULATOR}")
|
||||
run_cmake(TestLauncherProperty)
|
||||
run_cmake(TestLauncher)
|
||||
block()
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TestLauncher-build)
|
||||
|
||||
run_cmake(TestLauncher)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
||||
run_cmake_command(TestLauncher-build ${CMAKE_COMMAND} --build . --config Debug)
|
||||
unset(RunCMake_TEST_OUTPUT_MERGE)
|
||||
|
||||
run_cmake_command(TestLauncher-test ${CMAKE_CTEST_COMMAND} -C Debug -V)
|
||||
endblock()
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
@@ -8,27 +8,27 @@ endif()
|
||||
|
||||
set(error_details "There is a problem with generated test file:\n ${testfile}")
|
||||
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncher [^\n]+pseudo_test_launcher[^\n]+\n")
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncher [^\n]+pseudo_emulator[^\n]+\n")
|
||||
set(RunCMake_TEST_FAILED "Used test launcher when it should not be used. ${error_details}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncher [^\n]+pseudo_test_launcher[^\n]+\n")
|
||||
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncher [^\n]+pseudo_emulator[^\n]+\n")
|
||||
set(RunCMake_TEST_FAILED "Did not use test launcher when it should be used. ${error_details}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncherWithGenex [^\n]+pseudo_test_launcher[^\n]+\n")
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncherWithGenex [^\n]+pseudo_emulator[^\n]+\n")
|
||||
set(RunCMake_TEST_FAILED "Used test launcher when it should not be used. ${error_details}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncherWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_test_launcher[^\n]+\n")
|
||||
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncherWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_emulator[^\n]+\n")
|
||||
set(RunCMake_TEST_FAILED "Did not use test launcher when it should be used. ${error_details}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncherWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_test_launcher[^\n]+\n")
|
||||
if(testfile_contents MATCHES "add_test[(]DoesNotUseTestLauncherWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_emulator[^\n]+\n")
|
||||
set(RunCMake_TEST_FAILED "Used test launcher when it should not be used. ${error_details}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
48
Tests/RunCMake/add_test/TestLauncher-test-stdout.txt
Normal file
48
Tests/RunCMake/add_test/TestLauncher-test-stdout.txt
Normal file
@@ -0,0 +1,48 @@
|
||||
test 1
|
||||
Start 1: DoesNotUseLauncher
|
||||
+
|
||||
1: Test command: "?[^
|
||||
]*[/\]cmake(\.exe)?"? "-E" "echo" "Hi"
|
||||
1: Working Directory: [^
|
||||
]*/Tests/RunCMake/add_test/TestLauncher-build
|
||||
1: Test timeout computed to be: [0-9]+
|
||||
1: Hi
|
||||
1/5 Test #1: DoesNotUseLauncher [.]* +Passed +[0-9.]+ sec
|
||||
test 2
|
||||
Start 2: UsesTestLauncher
|
||||
+
|
||||
2: Test command: "?[^
|
||||
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/add_test/TestLauncher-build(/Debug)?/exe(\.exe)?"
|
||||
2: Working Directory: [^
|
||||
]*Tests/RunCMake/add_test/TestLauncher-build
|
||||
2: Test timeout computed to be: [0-9]+
|
||||
2: Command: "[^"]*/Tests/RunCMake/add_test/TestLauncher-build(/Debug)?/exe(\.exe)?"
|
||||
2/5 Test #2: UsesTestLauncher [.]* +Passed +[0-9.]+ sec
|
||||
test 3
|
||||
Start 3: DoesNotUseTestLauncherWithGenex
|
||||
+
|
||||
3: Test command: "?[^
|
||||
]*[/\]Tests[/\]RunCMake[/\]add_test[/\]TestLauncher-build([/\]Debug)?[/\]exe(\.exe)?"?
|
||||
3: Working Directory: [^
|
||||
]*Tests/RunCMake/add_test/TestLauncher-build
|
||||
3: Test timeout computed to be: [0-9]+
|
||||
3/5 Test #3: DoesNotUseTestLauncherWithGenex [.]* +Passed +[0-9.]+ sec
|
||||
test 4
|
||||
Start 4: UsesTestLauncherWithExecTargetFromSubdirAddedWithoutGenex
|
||||
+
|
||||
4: Test command: "?[^
|
||||
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/add_test/TestLauncher-build/TestLauncher(/Debug)?/subdir_exe_no_genex(\.exe)?"
|
||||
4: Working Directory: [^
|
||||
]*Tests/RunCMake/add_test/TestLauncher-build
|
||||
4: Test timeout computed to be: [0-9]+
|
||||
4: Command: "[^"]*/Tests/RunCMake/add_test/TestLauncher-build/TestLauncher(/Debug)?/subdir_exe_no_genex(\.exe)?"
|
||||
4/5 Test #4: UsesTestLauncherWithExecTargetFromSubdirAddedWithoutGenex [.]* +Passed +[0-9.]+ sec
|
||||
test 5
|
||||
Start 5: DoesNotUseTestLauncherWithExecTargetFromSubdirAddedWithGenex
|
||||
+
|
||||
5: Test command: "?[^
|
||||
]*[/\]Tests[/\]RunCMake[/\]add_test[/\]TestLauncher-build[/\]TestLauncher([/\]Debug)?[/\]subdir_exe_with_genex(\.exe)?"?
|
||||
5: Working Directory: [^
|
||||
]*Tests/RunCMake/add_test/TestLauncher-build
|
||||
5: Test timeout computed to be: [0-9]+
|
||||
5/5 Test #5: DoesNotUseTestLauncherWithExecTargetFromSubdirAddedWithGenex [.]* +Passed +[0-9.]+ sec
|
||||
@@ -1,22 +1,21 @@
|
||||
project(test_launcher LANGUAGES C)
|
||||
|
||||
enable_language(C)
|
||||
enable_testing()
|
||||
|
||||
add_test(NAME DoesNotUseLauncher
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "Hi")
|
||||
|
||||
add_executable(generated_exe simple_src_exiterror.cxx)
|
||||
set_target_properties(generated_exe PROPERTIES LINKER_LANGUAGE C)
|
||||
add_executable(exe main.c)
|
||||
|
||||
add_test(NAME UsesTestLauncher
|
||||
COMMAND generated_exe)
|
||||
COMMAND exe)
|
||||
|
||||
add_test(NAME DoesNotUseTestLauncherWithGenex
|
||||
COMMAND $<TARGET_FILE:generated_exe>)
|
||||
COMMAND $<TARGET_FILE:exe>)
|
||||
|
||||
add_subdirectory(TestLauncher)
|
||||
|
||||
add_test(NAME UsesTestLauncherWithExecTargetFromSubdirAddedWithoutGenex
|
||||
COMMAND generated_exe_in_subdir_added_to_test_without_genex)
|
||||
COMMAND subdir_exe_no_genex)
|
||||
|
||||
add_test(NAME DoesNotUseTestLauncherWithExecTargetFromSubdirAddedWithGenex
|
||||
COMMAND $<TARGET_FILE:generated_exe_in_subdir_added_to_test_with_genex>)
|
||||
COMMAND $<TARGET_FILE:subdir_exe_with_genex>)
|
||||
|
||||
@@ -1,9 +1,2 @@
|
||||
add_executable(generated_exe_in_subdir_added_to_test_without_genex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx)
|
||||
set_target_properties(generated_exe_in_subdir_added_to_test_without_genex
|
||||
PROPERTIES LINKER_LANGUAGE C)
|
||||
|
||||
add_executable(generated_exe_in_subdir_added_to_test_with_genex
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx)
|
||||
set_target_properties(generated_exe_in_subdir_added_to_test_with_genex
|
||||
PROPERTIES LINKER_LANGUAGE C)
|
||||
add_executable(subdir_exe_no_genex ../main.c)
|
||||
add_executable(subdir_exe_with_genex ../main.c)
|
||||
|
||||
@@ -2,16 +2,15 @@
|
||||
# This tests setting the TEST_LAUNCHER target property from the
|
||||
# CMAKE_TEST_LAUNCHER variable.
|
||||
|
||||
# -DCMAKE_TEST_LAUNCHER=/path/to/pseudo_test_launcher is passed to this
|
||||
enable_language(C)
|
||||
|
||||
# -DCMAKE_TEST_LAUNCHER=/path/to/pseudo_emulator is passed to this
|
||||
# test
|
||||
|
||||
project(test_launcher LANGUAGES C)
|
||||
|
||||
add_executable(target_with_test_launcher simple_src_exiterror.cxx)
|
||||
set_target_properties(target_with_test_launcher PROPERTIES LINKER_LANGUAGE C)
|
||||
add_executable(target_with_test_launcher main.c)
|
||||
get_property(launcher TARGET target_with_test_launcher
|
||||
PROPERTY TEST_LAUNCHER)
|
||||
if(NOT "${launcher}" MATCHES "pseudo_test_launcher")
|
||||
if(NOT "${launcher}" MATCHES "pseudo_emulator")
|
||||
message(SEND_ERROR "Default TEST_LAUNCHER property not set")
|
||||
endif()
|
||||
|
||||
@@ -25,16 +24,14 @@ if(NOT "${launcher}" MATCHES "another_test_launcher")
|
||||
endif()
|
||||
|
||||
unset(CMAKE_TEST_LAUNCHER CACHE)
|
||||
add_executable(target_without_test_launcher simple_src_exiterror.cxx)
|
||||
set_target_properties(target_without_test_launcher PROPERTIES LINKER_LANGUAGE C)
|
||||
add_executable(target_without_test_launcher main.c)
|
||||
get_property(launcher TARGET target_without_test_launcher
|
||||
PROPERTY TEST_LAUNCHER)
|
||||
if(NOT "${launcher}" STREQUAL "")
|
||||
message(SEND_ERROR "Default TEST_LAUNCHER property not set to null")
|
||||
endif()
|
||||
|
||||
add_executable(target_with_empty_test_launcher simple_src_exiterror.cxx)
|
||||
set_target_properties(target_with_empty_test_launcher PROPERTIES LINKER_LANGUAGE C)
|
||||
add_executable(target_with_empty_test_launcher main.c)
|
||||
set_property(TARGET target_with_empty_test_launcher PROPERTY TEST_LAUNCHER "")
|
||||
|
||||
enable_testing()
|
||||
|
||||
4
Tests/RunCMake/add_test/main.c
Normal file
4
Tests/RunCMake/add_test/main.c
Normal file
@@ -0,0 +1,4 @@
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
int main(int, char**)
|
||||
{
|
||||
return 13;
|
||||
}
|
||||
Reference in New Issue
Block a user