Merge topic 'test-launcher-emulator'

fb766ff638 Tests: Improve RunCMake.add_test TEST_LAUNCHER coverage
c5b58b0842 Tests: Improve RunCMake.add_test error formatting
b440e0af3f Tests: Improve RunCMake.CrosscompilingEmulator coverage
54edf3471e Tests: Improve RunCMake.CrosscompilingEmulator error formatting
2b5447d4a8 Tests: Shorten RunCMake.CrosscompilingEmulator executable names
10f906106e Tests: Teach pseudo_emulator helper to pass by default

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9192
This commit is contained in:
Brad King
2024-01-28 14:48:57 +00:00
committed by Kitware Robot
34 changed files with 389 additions and 121 deletions

View File

@@ -490,7 +490,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

View File

@@ -1,5 +1,6 @@
foreach(output IN ITEMS output1 output2 output3 output4)
if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/${output}")
message(FATAL_ERROR "Failed to create output: ${RunCMake_TEST_BINARY_DIR}/${output}")
set(RunCMake_TEST_FAILED "Failed to create output:\n ${RunCMake_TEST_BINARY_DIR}/${output}")
return()
endif()
endforeach()

View File

@@ -1,10 +1,11 @@
enable_language(C)
set(CMAKE_CROSSCOMPILING 1)
# Executable: Return error code different from 0
add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx)
add_executable(generated_exe_emulator_expected simple_src_exiterror.c)
# Executable: Return error code equal to 0
add_executable(generated_exe_emulator_unexpected generated_exe_emulator_unexpected.cxx)
add_executable(generated_exe_emulator_unexpected emulator_unexpected.c)
# Place the executable in a predictable location.
set_property(TARGET generated_exe_emulator_unexpected PROPERTY RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_CURRENT_BINARY_DIR}>)

View File

@@ -1,3 +1,4 @@
if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/output")
message(FATAL_ERROR "Failed to create output: ${RunCMake_TEST_BINARY_DIR}/output")
set(RunCMake_TEST_FAILED "Failed to create output:\n ${RunCMake_TEST_BINARY_DIR}/output")
return()
endif()

View File

@@ -1,7 +1,8 @@
enable_language(C)
set(CMAKE_CROSSCOMPILING 1)
# Executable: Return error code different from 0
add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx)
add_executable(generated_exe_emulator_expected simple_src_exiterror.c)
add_custom_command(OUTPUT output
COMMAND generated_exe_emulator_expected

View File

@@ -1,10 +1,11 @@
enable_language(C)
set(CMAKE_CROSSCOMPILING 1)
# Executable: Return error code different from 0
add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx)
add_executable(generated_exe_emulator_expected simple_src_exiterror.c)
# Executable: Return error code equal to 0
add_executable(generated_exe_emulator_unexpected generated_exe_emulator_unexpected.cxx)
add_executable(generated_exe_emulator_unexpected emulator_unexpected.c)
# Place the executable in a predictable location.
set_property(TARGET generated_exe_emulator_unexpected PROPERTY RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_CURRENT_BINARY_DIR}>)

View File

@@ -1,7 +1,8 @@
enable_language(C)
set(CMAKE_CROSSCOMPILING 1)
# Executable: Return error code different from 0
add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx)
add_executable(generated_exe_emulator_expected simple_src_exiterror.c)
add_custom_target(generate_output ALL
generated_exe_emulator_expected

View File

@@ -2,27 +2,33 @@ set(testfile "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake")
if(EXISTS "${testfile}")
file(READ "${testfile}" testfile_contents)
else()
message(FATAL_ERROR "Could not find expected CTestTestfile.cmake.")
set(RunCMake_TEST_FAILED "Could not find expected CTestTestfile.cmake.")
return()
endif()
set(error_details "There is a problem with generated test file: ${testfile}")
set(error_details "There is a problem with generated test file:\n ${testfile}")
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]ShouldNotUseEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]ShouldNotUseEmulatorWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()

View File

@@ -0,0 +1,46 @@
test 1
Start 1: DoesNotUseEmulator
1: Test command: "?[^
]*[/\]cmake(\.exe)?"? "-E" "echo" "Hi"
1: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-NEW-build
1: Test timeout computed to be: [0-9]+
1: Hi
1/5 Test #1: DoesNotUseEmulator [.]* +Passed +[0-9.]+ sec
test 2
Start 2: ShouldNotUseEmulator
2: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-NEW-build([/\]Debug)?[/\]exe(\.exe)?"?
2: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-NEW-build
2: Test timeout computed to be: [0-9]+
2/5 Test #2: ShouldNotUseEmulator [.]* +Passed +[0-9.]+ sec
test 3
Start 3: DoesNotUseEmulatorWithGenex
3: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-NEW-build([/\]Debug)?[/\]exe(\.exe)?"?
3: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-NEW-build
3: Test timeout computed to be: [0-9]+
3/5 Test #3: DoesNotUseEmulatorWithGenex [.]* +Passed +[0-9.]+ sec
test 4
Start 4: ShouldNotUseEmulatorWithExecTargetFromSubdirAddedWithoutGenex
4: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-NEW-build[/\]AddTest([/\]Debug)?[/\]subdir_exe_no_genex(\.exe)?"?
4: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-NEW-build
4: Test timeout computed to be: [0-9]+
4/5 Test #4: ShouldNotUseEmulatorWithExecTargetFromSubdirAddedWithoutGenex [.]* +Passed +[0-9.]+ sec
test 5
Start 5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
5: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-NEW-build[/\]AddTest([/\]Debug)?[/\]subdir_exe_with_genex(\.exe)?"?
5: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-NEW-build
5: Test timeout computed to be: [0-9]+
5/5 Test #5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [.]* +Passed +[0-9.]+ sec

View File

@@ -1,5 +1,7 @@
enable_language(C)
enable_testing()
if(CMAKE_CROSSCOMPILING)
message(FATAL_ERROR "cross compiling")
message(FATAL_ERROR "cross compiling")
endif()
cmake_policy(SET CMP0158 NEW)
@@ -8,18 +10,18 @@ enable_testing()
add_test(NAME DoesNotUseEmulator
COMMAND ${CMAKE_COMMAND} -E echo "Hi")
add_executable(generated_exe simple_src_exiterror.cxx)
add_executable(exe main.c)
add_test(NAME ShouldNotUseEmulator
COMMAND generated_exe)
COMMAND exe)
add_test(NAME DoesNotUseEmulatorWithGenex
COMMAND $<TARGET_FILE:generated_exe>)
COMMAND $<TARGET_FILE:exe>)
add_subdirectory(AddTest)
add_test(NAME ShouldNotUseEmulatorWithExecTargetFromSubdirAddedWithoutGenex
COMMAND generated_exe_in_subdir_added_to_test_without_genex)
COMMAND subdir_exe_no_genex)
add_test(NAME DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
COMMAND $<TARGET_FILE:generated_exe_in_subdir_added_to_test_with_genex>)
COMMAND $<TARGET_FILE:subdir_exe_with_genex>)

View File

@@ -2,27 +2,33 @@ set(testfile "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake")
if(EXISTS "${testfile}")
file(READ "${testfile}" testfile_contents)
else()
message(FATAL_ERROR "Could not find expected CTestTestfile.cmake.")
set(RunCMake_TEST_FAILED "Could not find expected CTestTestfile.cmake.")
return()
endif()
set(error_details "There is a problem with generated test file: ${testfile}")
set(error_details "There is a problem with generated test file:\n ${testfile}")
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(NOT testfile_contents MATCHES "add_test[(]UsesEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Did not use emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(NOT testfile_contents MATCHES "add_test[(]UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Did not use emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()

View File

@@ -0,0 +1,48 @@
test 1
Start 1: DoesNotUseEmulator
1: Test command: "?[^
]*[/\]cmake(\.exe)?"? "-E" "echo" "Hi"
1: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build
1: Test timeout computed to be: [0-9]+
1: Hi
1/5 Test #1: DoesNotUseEmulator [.]* +Passed +[0-9.]+ sec
test 2
Start 2: UsesEmulator
2: Test command: "?[^
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build(/Debug)?/exe(\.exe)?"
2: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build
2: Test timeout computed to be: [0-9]+
2: Command: "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build(/Debug)?/exe(\.exe)?"
2/5 Test #2: UsesEmulator [.]* +Passed +[0-9.]+ sec
test 3
Start 3: DoesNotUseEmulatorWithGenex
3: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-OLD-build([/\]Debug)?[/\]exe(\.exe)?"?
3: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build
3: Test timeout computed to be: [0-9]+
3/5 Test #3: DoesNotUseEmulatorWithGenex [.]* +Passed +[0-9.]+ sec
test 4
Start 4: UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex
4: Test command: "?[^
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build/AddTest(/Debug)?/subdir_exe_no_genex(\.exe)?"
4: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build
4: Test timeout computed to be: [0-9]+
4: Command: "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build/AddTest(/Debug)?/subdir_exe_no_genex(\.exe)?"
4/5 Test #4: UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex [.]* +Passed +[0-9.]+ sec
test 5
Start 5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
5: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-CMP0158-OLD-build[/\]AddTest([/\]Debug)?[/\]subdir_exe_with_genex(\.exe)?"?
5: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-CMP0158-OLD-build
5: Test timeout computed to be: [0-9]+
5/5 Test #5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [.]* +Passed +[0-9.]+ sec

View File

@@ -1,25 +1,26 @@
enable_language(C)
enable_testing()
if(CMAKE_CROSSCOMPILING)
message(FATAL_ERROR "cross compiling")
message(FATAL_ERROR "cross compiling")
endif()
cmake_policy(SET CMP0158 OLD)
enable_testing()
add_test(NAME DoesNotUseEmulator
COMMAND ${CMAKE_COMMAND} -E echo "Hi")
add_executable(generated_exe simple_src_exiterror.cxx)
add_executable(exe main.c)
add_test(NAME UsesEmulator
COMMAND generated_exe)
COMMAND exe)
add_test(NAME DoesNotUseEmulatorWithGenex
COMMAND $<TARGET_FILE:generated_exe>)
COMMAND $<TARGET_FILE:exe>)
add_subdirectory(AddTest)
add_test(NAME UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex
COMMAND generated_exe_in_subdir_added_to_test_without_genex)
COMMAND subdir_exe_no_genex)
add_test(NAME DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
COMMAND $<TARGET_FILE:generated_exe_in_subdir_added_to_test_with_genex>)
COMMAND $<TARGET_FILE:subdir_exe_with_genex>)

View File

@@ -2,31 +2,38 @@ set(testfile "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake")
if(EXISTS "${testfile}")
file(READ "${testfile}" testfile_contents)
else()
message(FATAL_ERROR "Could not find expected CTestTestfile.cmake.")
set(RunCMake_TEST_FAILED "Could not find expected CTestTestfile.cmake.")
return()
endif()
set(error_details "There is a problem with generated test file: ${testfile}")
set(error_details "There is a problem with generated test file:\n ${testfile}")
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(NOT testfile_contents MATCHES "add_test[(]UsesEmulator [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Did not use emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(NOT testfile_contents MATCHES "add_test[(]UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}")
set(RunCMake_TEST_FAILED "Did not use emulator when it should be used. ${error_details}")
return()
endif()
if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Used emulator when it should not be used. ${error_details}")
set(RunCMake_TEST_FAILED "Used emulator when it should not be used. ${error_details}")
return()
endif()
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncherAndEmulator[^\n]+pseudo_test_launcher.*pseudo_emulator[^\n]+\n")
message(SEND_ERROR "Did not use test launcher and emulator when they should be used. ${error_details}")
if(NOT testfile_contents MATCHES "add_test[(]UsesTestLauncherAndEmulator[^\n]+pseudo_emulator[^\n]+pseudo_emulator[^\n]+\n")
set(RunCMake_TEST_FAILED "Did not use test launcher and emulator when they should be used. ${error_details}")
return()
endif()

View File

@@ -0,0 +1,58 @@
test 1
Start 1: DoesNotUseEmulator
1: Test command: "?[^
]*[/\]cmake(\.exe)?"? "-E" "echo" "Hi"
1: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
1: Test timeout computed to be: [0-9]+
1: Hi
1/6 Test #1: DoesNotUseEmulator [.]* +Passed +[0-9.]+ sec
test 2
Start 2: UsesEmulator
2: Test command: "?[^
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build(/Debug)?/exe(\.exe)?"
2: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
2: Test timeout computed to be: [0-9]+
2: Command: "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build(/Debug)?/exe(\.exe)?"
2/6 Test #2: UsesEmulator [.]* +Passed +[0-9.]+ sec
test 3
Start 3: DoesNotUseEmulatorWithGenex
3: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-build([/\]Debug)?[/\]exe(\.exe)?"?
3: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
3: Test timeout computed to be: [0-9]+
3/6 Test #3: DoesNotUseEmulatorWithGenex [.]* +Passed +[0-9.]+ sec
test 4
Start 4: UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex
4: Test command: "?[^
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build/AddTest(/Debug)?/subdir_exe_no_genex(\.exe)?"
4: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
4: Test timeout computed to be: [0-9]+
4: Command: "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build/AddTest(/Debug)?/subdir_exe_no_genex(\.exe)?"
4/6 Test #4: UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex [.]* +Passed +[0-9.]+ sec
test 5
Start 5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
5: Test command: "?[^
]*[/\]Tests[/\]RunCMake[/\]CrosscompilingEmulator[/\]AddTest-build[/\]AddTest([/\]Debug)?[/\]subdir_exe_with_genex(\.exe)?"?
5: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
5: Test timeout computed to be: [0-9]+
5/6 Test #5: DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [.]* +Passed +[0-9.]+ sec
test 6
Start 6: UsesTestLauncherAndEmulator
6: Test command: "?[^
]*[/\]Tests[/\]RunCMake([/\][^/\]+)?[/\]pseudo_emulator(\.exe)?"? "[^"]*/Tests/RunCMake(/[^/]+)?/pseudo_emulator(\.exe)?" "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build(/Debug)?/exe_test_launcher(\.exe)?"
6: Working Directory: [^
]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build
6: Test timeout computed to be: [0-9]+
6: Command: "[^"]*/Tests/RunCMake(/[^/]+)?/pseudo_emulator(\.exe)?" "[^"]*/Tests/RunCMake/CrosscompilingEmulator/AddTest-build(/Debug)?/exe_test_launcher(\.exe)?"
6/6 Test #6: UsesTestLauncherAndEmulator [.]* +Passed +[0-9.]+ sec

View File

@@ -1,26 +1,28 @@
set(CMAKE_CROSSCOMPILING 1)
enable_language(C)
enable_testing()
set(CMAKE_CROSSCOMPILING 1)
add_test(NAME DoesNotUseEmulator
COMMAND ${CMAKE_COMMAND} -E echo "Hi")
add_executable(generated_exe simple_src_exiterror.cxx)
add_executable(exe main.c)
add_test(NAME UsesEmulator
COMMAND generated_exe)
COMMAND exe)
add_test(NAME DoesNotUseEmulatorWithGenex
COMMAND $<TARGET_FILE:generated_exe>)
COMMAND $<TARGET_FILE:exe>)
add_subdirectory(AddTest)
add_test(NAME UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex
COMMAND generated_exe_in_subdir_added_to_test_without_genex)
COMMAND subdir_exe_no_genex)
add_test(NAME DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex
COMMAND $<TARGET_FILE:generated_exe_in_subdir_added_to_test_with_genex>)
COMMAND $<TARGET_FILE:subdir_exe_with_genex>)
add_executable(generated_exe_test_launcher simple_src_exiterror.cxx)
set_property(TARGET generated_exe_test_launcher PROPERTY TEST_LAUNCHER "pseudo_test_launcher")
set(CMAKE_TEST_LAUNCHER ${CMAKE_CROSSCOMPILING_EMULATOR})
add_executable(exe_test_launcher main.c)
add_test(NAME UsesTestLauncherAndEmulator
COMMAND generated_exe_test_launcher)
COMMAND exe_test_launcher)

View File

@@ -1,5 +1,2 @@
add_executable(generated_exe_in_subdir_added_to_test_without_genex
${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx)
add_executable(generated_exe_in_subdir_added_to_test_with_genex
${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx)
add_executable(subdir_exe_no_genex ../main.c)
add_executable(subdir_exe_with_genex ../main.c)

View File

@@ -1,3 +1,3 @@
cmake_minimum_required(VERSION 3.5)
project(${RunCMake_TEST} CXX)
project(${RunCMake_TEST} NONE)
include(${RunCMake_TEST}.cmake)

View File

@@ -1,9 +1,11 @@
# This tests setting the CROSSCOMPILING_EMULATOR target property from the
# CMAKE_CROSSCOMPILING_EMULATOR variable.
enable_language(C)
# -DCMAKE_CROSSCOMPILING_EMULATOR=/path/to/pseudo_emulator is passed to this
# test
add_executable(target_with_emulator simple_src_exiterror.cxx)
add_executable(target_with_emulator main.c)
get_property(emulator TARGET target_with_emulator
PROPERTY CROSSCOMPILING_EMULATOR)
if(NOT "${emulator}" MATCHES "pseudo_emulator")
@@ -20,14 +22,14 @@ if(NOT "${emulator}" MATCHES "another_emulator")
endif()
unset(CMAKE_CROSSCOMPILING_EMULATOR CACHE)
add_executable(target_without_emulator simple_src_exiterror.cxx)
add_executable(target_without_emulator main.c)
get_property(emulator TARGET target_without_emulator
PROPERTY CROSSCOMPILING_EMULATOR)
if(NOT "${emulator}" STREQUAL "")
message(SEND_ERROR "Default CROSSCOMPILING_EMULATOR property not set to null")
endif()
add_executable(target_with_empty_emulator simple_src_exiterror.cxx)
add_executable(target_with_empty_emulator main.c)
set_property(TARGET target_with_empty_emulator PROPERTY CROSSCOMPILING_EMULATOR "")
enable_testing()

View File

@@ -5,9 +5,24 @@ set(RunCMake_TEST_OPTIONS
run_cmake(CrosscompilingEmulatorProperty)
run_cmake(TryRun)
run_cmake(AddTest)
run_cmake(AddTest-CMP0158-OLD)
run_cmake(AddTest-CMP0158-NEW)
function(run_AddTest case)
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build)
run_cmake(${case})
unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_NO_CLEAN 1)
set(RunCMake_TEST_OUTPUT_MERGE 1)
run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug)
unset(RunCMake_TEST_OUTPUT_MERGE)
run_cmake_command(${case}-test ${CMAKE_CTEST_COMMAND} -C Debug -V)
endfunction()
run_AddTest(AddTest)
run_AddTest(AddTest-CMP0158-OLD)
run_AddTest(AddTest-CMP0158-NEW)
function(CustomCommandGenerator_run_and_build case)
# Use a single build tree for a few tests without cleaning.

View File

@@ -1,8 +1,11 @@
enable_language(C)
set(CMAKE_CROSSCOMPILING 1)
set(ENV{PSEUDO_EMULATOR_FAIL} 1)
try_run(run_result compile_result
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.cxx
${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.c
RUN_OUTPUT_VARIABLE run_output)
message(STATUS "run_output: ${run_output}")
@@ -13,6 +16,6 @@ set(CMAKE_CROSSCOMPILING_EMULATOR ${CMAKE_CROSSCOMPILING_EMULATOR}
"multi arg")
try_run(run_result compile_result
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.cxx
${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.c
RUN_OUTPUT_VARIABLE run_output)
message(STATUS "Emulator with arguments run_output: ${run_output}")

View File

@@ -2,7 +2,8 @@
int main(int argc, const char* argv[])
{
for (int i = 1; i < argc; ++i) {
int i;
for (i = 1; i < argc; ++i) {
fprintf(stderr, "unexpected argument: '%s'\n", argv[i]);
}
return argc == 1 ? 0 : 1;

View File

@@ -0,0 +1,4 @@
int main(void)
{
return 0;
}

View File

@@ -0,0 +1,4 @@
int main(void)
{
return 13;
}

View File

@@ -1,4 +0,0 @@
int main(int, char**)
{
return 13;
}

View File

@@ -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)

View File

@@ -2,27 +2,33 @@ set(testfile "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake")
if(EXISTS "${testfile}")
file(READ "${testfile}" testfile_contents)
else()
message(FATAL_ERROR "Could not find expected CTestTestfile.cmake.")
set(RunCMake_TEST_FAILED "Could not find expected CTestTestfile.cmake.")
return()
endif()
set(error_details "There is a problem with generated test file: ${testfile}")
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")
message(SEND_ERROR "Used test launcher when it should not be used. ${error_details}")
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")
message(SEND_ERROR "Did not use test launcher when it should be used. ${error_details}")
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")
message(SEND_ERROR "Used test launcher when it should not be used. ${error_details}")
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")
message(SEND_ERROR "Did not use test launcher when it should be used. ${error_details}")
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")
message(SEND_ERROR "Used test launcher when it should not be used. ${error_details}")
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()

View 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

View File

@@ -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>)

View File

@@ -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)

View File

@@ -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()

View File

@@ -0,0 +1,4 @@
int main(void)
{
return 0;
}

View File

@@ -1,4 +0,0 @@
int main(int, char**)
{
return 13;
}

View File

@@ -1,8 +1,14 @@
#ifndef _CRT_SECURE_NO_WARNINGS
# define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int ii;
const char* fail = getenv("PSEUDO_EMULATOR_FAIL");
printf("Command:");
for (ii = 1; ii < argc; ++ii) {
@@ -10,5 +16,9 @@ int main(int argc, char* argv[])
}
printf("\n");
return 42;
if (fail && *fail) {
return 42;
}
return 0;
}