summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r--Tests/RunCMake/CMakeLists.txt6
-rw-r--r--Tests/RunCMake/CommandLine/E_cat-with-double-dash-stdout.txt1
-rw-r--r--Tests/RunCMake/CommandLine/E_cat-without-double-dash-result.txt1
-rw-r--r--Tests/RunCMake/CommandLine/E_cat-without-double-dash-stderr.txt1
-rw-r--r--Tests/RunCMake/CommandLine/E_env-with-double-dash-result.txt1
-rw-r--r--Tests/RunCMake/CommandLine/E_env-without-double-dash-result.txt1
-rw-r--r--Tests/RunCMake/CommandLine/E_env-without-double-dash-stderr.txt1
-rw-r--r--Tests/RunCMake/CommandLine/RunCMakeTest.cmake18
-rwxr-xr-xTests/RunCMake/CommandLine/trace-json-v1-check.py14
-rw-r--r--Tests/RunCMake/CommandLine/trace-json-v1-nested/CMakeLists.txt9
-rw-r--r--Tests/RunCMake/CommandLine/trace-json-v1.cmake1
-rw-r--r--Tests/RunCMake/ExternalProject/RunCMakeTest.cmake5
-rw-r--r--Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt12
-rw-r--r--Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt20
-rw-r--r--Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt20
-rw-r--r--Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt20
-rw-r--r--Tests/RunCMake/GoogleTest/fake_gtest.cpp8
-rw-r--r--Tests/RunCMake/VS10Project/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/VS10Project/VsNoCompileBatching-check.cmake31
-rw-r--r--Tests/RunCMake/VS10Project/VsNoCompileBatching.cmake9
-rw-r--r--Tests/RunCMake/cmake_language/defer_call_trace_json-stderr.txt6
-rw-r--r--Tests/RunCMake/ctest_build/RunCMakeTest.cmake12
-rw-r--r--Tests/RunCMake/ctest_build/SubdirTarget-check.cmake4
23 files changed, 160 insertions, 42 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index d1a1ddd..9e4ae90 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -715,7 +715,8 @@ endif()
add_executable(pseudo_llvm-rc pseudo_llvm-rc.c)
add_RunCMake_test(CommandLine -DLLVM_RC=$<TARGET_FILE:pseudo_llvm-rc> -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
- -DCYGWIN=${CYGWIN} -DMSYS=${MSYS} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE})
+ -DCYGWIN=${CYGWIN} -DMSYS=${MSYS} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
+ -DEXIT_CODE_EXE=$<TARGET_FILE:exit_code>)
add_RunCMake_test(CommandLineTar)
if(CMAKE_PLATFORM_NO_VERSIONED_SONAME OR (NOT CMAKE_SHARED_LIBRARY_SONAME_FLAG AND NOT CMAKE_SHARED_LIBRARY_SONAME_C_FLAG))
@@ -745,6 +746,9 @@ add_RunCMake_test(CPackInstallProperties)
if(XCODE_VERSION)
set(ExternalProject_ARGS -DXCODE_VERSION=${XCODE_VERSION})
endif()
+if(CMake_TEST_RunCMake_ExternalProject_DOWNLOAD_SERVER_TIMEOUT)
+ list(APPEND ExternalProject_ARGS -DDOWNLOAD_SERVER_TIMEOUT=${CMake_TEST_RunCMake_ExternalProject_DOWNLOAD_SERVER_TIMEOUT})
+endif()
add_RunCMake_test(ExternalProject)
add_RunCMake_test(FetchContent)
set(CTestCommandLine_ARGS -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE})
diff --git a/Tests/RunCMake/CommandLine/E_cat-with-double-dash-stdout.txt b/Tests/RunCMake/CommandLine/E_cat-with-double-dash-stdout.txt
new file mode 100644
index 0000000..e5939d0
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_cat-with-double-dash-stdout.txt
@@ -0,0 +1 @@
+file starting with dash, not an option
diff --git a/Tests/RunCMake/CommandLine/E_cat-without-double-dash-result.txt b/Tests/RunCMake/CommandLine/E_cat-without-double-dash-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_cat-without-double-dash-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CommandLine/E_cat-without-double-dash-stderr.txt b/Tests/RunCMake/CommandLine/E_cat-without-double-dash-stderr.txt
new file mode 100644
index 0000000..051f678
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_cat-without-double-dash-stderr.txt
@@ -0,0 +1 @@
+^CMake Error: -file-starting-with-dash.txt: option not handled$
diff --git a/Tests/RunCMake/CommandLine/E_env-with-double-dash-result.txt b/Tests/RunCMake/CommandLine/E_env-with-double-dash-result.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_env-with-double-dash-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/CommandLine/E_env-without-double-dash-result.txt b/Tests/RunCMake/CommandLine/E_env-without-double-dash-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_env-without-double-dash-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CommandLine/E_env-without-double-dash-stderr.txt b/Tests/RunCMake/CommandLine/E_env-without-double-dash-stderr.txt
new file mode 100644
index 0000000..8d98f9d
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/E_env-without-double-dash-stderr.txt
@@ -0,0 +1 @@
+.*
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index 033fbe6..50815a8 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -676,17 +676,33 @@ file(WRITE "${out}/empty_file.txt" "")
file(WRITE "${out}/unicode_file.txt" "àéùç - 한국어") # Korean in Korean
run_cmake_command(E_cat_good_cat
${CMAKE_COMMAND} -E cat "${out}/first_file.txt" "${out}/second_file.txt" "${out}/empty_file.txt" "${out}/unicode_file.txt")
-unset(out)
run_cmake_command(E_cat_good_binary_cat
${CMAKE_COMMAND} -E cat "${RunCMake_SOURCE_DIR}/E_cat_binary_files/binary.obj" "${RunCMake_SOURCE_DIR}/E_cat_binary_files/binary.obj")
+# To test whether the double dash (--) works, we need to control the working directory
+# in order to be able to pass a relative path that starts with a dash.
+file(WRITE "${out}/-file-starting-with-dash.txt" "file starting with dash, not an option\n")
+set(RunCMake_TEST_COMMAND_WORKING_DIRECTORY "${out}")
+run_cmake_command(E_cat-with-double-dash ${CMAKE_COMMAND} -E cat -- "-file-starting-with-dash.txt")
+run_cmake_command(E_cat-without-double-dash ${CMAKE_COMMAND} -E cat "-file-starting-with-dash.txt")
+unset(RunCMake_TEST_COMMAND_WORKING_DIRECTORY)
+unset(out)
+
run_cmake_command(E_env-no-command0 ${CMAKE_COMMAND} -E env)
run_cmake_command(E_env-no-command1 ${CMAKE_COMMAND} -E env TEST_ENV=1)
run_cmake_command(E_env-bad-arg1 ${CMAKE_COMMAND} -E env -bad-arg1)
run_cmake_command(E_env-set ${CMAKE_COMMAND} -E env TEST_ENV=1 ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/E_env-set.cmake)
run_cmake_command(E_env-unset ${CMAKE_COMMAND} -E env TEST_ENV=1 ${CMAKE_COMMAND} -E env --unset=TEST_ENV ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/E_env-unset.cmake)
+# To test whether the double dash (--) works for the env command, we need a command that e.g. contains an equals sign (=)
+# and would normally be interpreted as an NAME=VALUE environment variable.
+# Ensuring such a command is done by simply copying the trivial exit_code executable with a different name.
+cmake_path(GET EXIT_CODE_EXE FILENAME exit_code)
+file(COPY_FILE "${EXIT_CODE_EXE}" "${RunCMake_BINARY_DIR}/env=${exit_code}")
+run_cmake_command(E_env-with-double-dash ${CMAKE_COMMAND} -E env TEST_ENV=1 -- "${RunCMake_BINARY_DIR}/env=${exit_code}" zero_exit)
+run_cmake_command(E_env-without-double-dash ${CMAKE_COMMAND} -E env TEST_ENV=1 "${RunCMake_BINARY_DIR}/env=${exit_code}" zero_exit)
+
run_cmake_command(E_md5sum-dir ${CMAKE_COMMAND} -E md5sum .)
run_cmake_command(E_sha1sum-dir ${CMAKE_COMMAND} -E sha1sum .)
run_cmake_command(E_sha224sum-dir ${CMAKE_COMMAND} -E sha224sum .)
diff --git a/Tests/RunCMake/CommandLine/trace-json-v1-check.py b/Tests/RunCMake/CommandLine/trace-json-v1-check.py
index 1ee005e..995cfad 100755
--- a/Tests/RunCMake/CommandLine/trace-json-v1-check.py
+++ b/Tests/RunCMake/CommandLine/trace-json-v1-check.py
@@ -46,8 +46,15 @@ required_traces = [
{
'args': msg_args,
'cmd': 'message',
- 'frame': 3 if expand else 2
+ 'frame': 3 if expand else 2,
+ 'global_frame': 3 if expand else 2
},
+ {
+ 'args': ['STATUS', 'nested global_frame'],
+ 'cmd': 'message',
+ 'frame': 3,
+ 'global_frame': 6 if expand else 5
+ }
]
with open(trace_file, 'r') as fp:
@@ -56,15 +63,16 @@ with open(trace_file, 'r') as fp:
assert sorted(vers.keys()) == ['version']
assert sorted(vers['version'].keys()) == ['major', 'minor']
assert vers['version']['major'] == 1
- assert vers['version']['minor'] == 1
+ assert vers['version']['minor'] == 2
for i in fp.readlines():
line = json.loads(i)
- assert sorted(line.keys()) == ['args', 'cmd', 'file', 'frame', 'line', 'time']
+ assert sorted(line.keys()) == ['args', 'cmd', 'file', 'frame', 'global_frame','line', 'time']
assert isinstance(line['args'], list)
assert isinstance(line['cmd'], unicode)
assert isinstance(line['file'], unicode)
assert isinstance(line['frame'], int)
+ assert isinstance(line['global_frame'], int)
assert isinstance(line['line'], int)
assert isinstance(line['time'], float)
diff --git a/Tests/RunCMake/CommandLine/trace-json-v1-nested/CMakeLists.txt b/Tests/RunCMake/CommandLine/trace-json-v1-nested/CMakeLists.txt
new file mode 100644
index 0000000..089a960
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/trace-json-v1-nested/CMakeLists.txt
@@ -0,0 +1,9 @@
+function(f)
+ message(STATUS "nested global_frame")
+endfunction()
+
+function(g)
+ f()
+endfunction()
+
+g()
diff --git a/Tests/RunCMake/CommandLine/trace-json-v1.cmake b/Tests/RunCMake/CommandLine/trace-json-v1.cmake
index ed0a0f9..871746d 100644
--- a/Tests/RunCMake/CommandLine/trace-json-v1.cmake
+++ b/Tests/RunCMake/CommandLine/trace-json-v1.cmake
@@ -3,3 +3,4 @@ set(ASDF fff sss " SPACES !!! ")
set(FOO 42)
set(BAR " space in string!")
message(STATUS fff ${ASDF} " ${FOO} ${BAR}" " SPACES !!! ")
+add_subdirectory(trace-json-v1-nested)
diff --git a/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake b/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake
index fde384f..08adee2 100644
--- a/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ExternalProject/RunCMakeTest.cmake
@@ -105,12 +105,15 @@ function(__ep_test_with_build_with_server testName)
if(EXISTS "${URL_FILE}")
file(REMOVE "${URL_FILE}")
endif()
+ if(NOT DOWNLOAD_SERVER_TIMEOUT)
+ set(DOWNLOAD_SERVER_TIMEOUT 30)
+ endif()
execute_process(
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/DownloadServer.py --file "${URL_FILE}" ${ARGN}
OUTPUT_FILE ${RunCMake_BINARY_DIR}/${testName}-python.txt
ERROR_FILE ${RunCMake_BINARY_DIR}/${testName}-python.txt
RESULT_VARIABLE result
- TIMEOUT 30
+ TIMEOUT "${DOWNLOAD_SERVER_TIMEOUT}"
)
if(NOT result EQUAL 0)
message(FATAL_ERROR "Failed to start download server:\n ${result}")
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt
index fe8f273..c4545ca 100644
--- a/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt
+++ b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt
@@ -1,7 +1,9 @@
Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change
- Test #1: typed/short\.case
- Test #2: typed/float\.case
- Test #3: ns\.typed/short\.case
- Test #4: ns\.typed/float\.case
+ Test #[0-9]+: typed\.case<short>
+ Test #[0-9]+: typed\.case<float>
+ Test #[0-9]+: typed\.case<char>
+ Test #[0-9]+: ns\.typed\.case<short>
+ Test #[0-9]+: ns\.typed\.case<float>
+ Test #[0-9]+: ns\.typed\.case<char>
-Total Tests: 4
+Total Tests: [0-9]+
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt
index 01b39c3..c462042 100644
--- a/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt
+++ b/Tests/RunCMake/GoogleTest/GoogleTest-test1-stdout.txt
@@ -19,14 +19,18 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:disabled\.case!1 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec
*Start +[0-9]+: TEST:DISABLEDnotreally\.case!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:DISABLEDnotreally\.case!1 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:typed/short\.case!1
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!1 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:typed/float\.case!1
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!1 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/short\.case!1
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!1 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/float\.case!1
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<short>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<short>!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<float>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<float>!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<char>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<char>!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<short>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<short>!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<float>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<float>!1 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<char>!1
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<char>!1 \.+ +Passed +[0-9.]+ sec
*Start +[0-9]+: TEST:value/test\.case/1!1
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!1 \.+ +Passed +[0-9.]+ sec
*Start +[0-9]+: TEST:value/test\.case/"foo"!1
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt
index 796e20c..8cdd1a0 100644
--- a/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt
+++ b/Tests/RunCMake/GoogleTest/GoogleTest-test2-stdout.txt
@@ -19,14 +19,18 @@ Test project .*
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:disabled\.case!2 \.+\*+Not Run \(Disabled\) +[0-9.]+ sec
*Start +[0-9]+: TEST:DISABLEDnotreally\.case!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:DISABLEDnotreally\.case!2 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:typed/short\.case!2
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!2 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:typed/float\.case!2
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!2 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/short\.case!2
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!2 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/float\.case!2
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<short>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<short>!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<float>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<float>!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<char>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<char>!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<short>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<short>!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<float>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<float>!2 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<char>!2
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<char>!2 \.+ +Passed +[0-9.]+ sec
*Start +[0-9]+: TEST:value/test\.case/1!2
*[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:value/test\.case/1!2 \.+ +Passed +[0-9.]+ sec
*Start +[0-9]+: TEST:value/test\.case/"foo"!2
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt
index 0f7dde7..b0f70e7 100644
--- a/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt
+++ b/Tests/RunCMake/GoogleTest/GoogleTest-test4-stdout.txt
@@ -1,12 +1,16 @@
Test project .*
- *Start +[0-9]+: TEST:typed/short\.case!4
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/short\.case!4 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:typed/float\.case!4
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed/float\.case!4 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/short\.case!4
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/short\.case!4 \.+ +Passed +[0-9.]+ sec
- *Start +[0-9]+: TEST:ns\.typed/float\.case!4
- *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed/float\.case!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<short>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<short>!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<float>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<float>!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:typed\.case<char>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:typed\.case<char>!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<short>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<short>!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<float>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<float>!4 \.+ +Passed +[0-9.]+ sec
+ *Start +[0-9]+: TEST:ns\.typed\.case<char>!4
+ *[0-9]+/[0-9]+ +Test +#[0-9]+: TEST:ns\.typed\.case<char>!4 \.+ +Passed +[0-9.]+ sec
100% tests passed, 0 tests failed out of [0-9]+
diff --git a/Tests/RunCMake/GoogleTest/fake_gtest.cpp b/Tests/RunCMake/GoogleTest/fake_gtest.cpp
index 183e106..e6f74aa 100644
--- a/Tests/RunCMake/GoogleTest/fake_gtest.cpp
+++ b/Tests/RunCMake/GoogleTest/fake_gtest.cpp
@@ -36,11 +36,11 @@ int main(int argc, char** argv)
if (!is_basic_only) {
const char* typed_suite_names[] = { "typed", "ns.typed" };
for (size_t i = 0; i < ARRAY_SIZE(typed_suite_names); i++) {
- std::cout << typed_suite_names[i] << "/0. # TypeParam = short"
- << std::endl;
+ std::cout << typed_suite_names[i] << "/0. # TypeParam = short\n";
std::cout << " case" << std::endl;
- std::cout << typed_suite_names[i] << "/1. # TypeParam = float"
- << std::endl;
+ std::cout << typed_suite_names[i] << "/1. # TypeParam = float\n";
+ std::cout << " case" << std::endl;
+ std::cout << typed_suite_names[i] << "/42. # TypeParam = char\n";
std::cout << " case" << std::endl;
}
}
diff --git a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
index 139dcc7..b19c1a8 100644
--- a/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
+++ b/Tests/RunCMake/VS10Project/RunCMakeTest.cmake
@@ -84,3 +84,4 @@ endif()
run_cmake(VsDotnetTargetFramework)
run_cmake(VsDotnetTargetFrameworkVersion)
+run_cmake(VsNoCompileBatching)
diff --git a/Tests/RunCMake/VS10Project/VsNoCompileBatching-check.cmake b/Tests/RunCMake/VS10Project/VsNoCompileBatching-check.cmake
new file mode 100644
index 0000000..4002c3f
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsNoCompileBatching-check.cmake
@@ -0,0 +1,31 @@
+macro(VsNoCompileBatching_check tgt ofn_expect)
+ set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${tgt}.vcxproj")
+ if(NOT EXISTS "${vcProjectFile}")
+ set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not exist.")
+ return()
+ endif()
+
+ set(HAVE_OFN 0)
+
+ file(STRINGS "${vcProjectFile}" lines)
+ foreach(line IN LISTS lines)
+ if(line MATCHES "^ *<ObjectFileName>([^<>]+)</ObjectFileName>")
+ set(ofn_actual "${CMAKE_MATCH_1}")
+ if(NOT "${ofn_actual}" STREQUAL "${ofn_expect}")
+ set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj has <ObjectFileName> '${ofn_actual}', not '${ofn_expect}'.")
+ return()
+ endif()
+ set(HAVE_OFN 1)
+ break()
+ endif()
+ endforeach()
+
+ if(NOT HAVE_OFN)
+ set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a <ObjectFileName> property.")
+ return()
+ endif()
+endmacro()
+
+VsNoCompileBatching_check(foo "$(IntDir)")
+VsNoCompileBatching_check(foo_NB "$(IntDir)%(filename).obj")
+VsNoCompileBatching_check(foo_NB_OFF "$(IntDir)")
diff --git a/Tests/RunCMake/VS10Project/VsNoCompileBatching.cmake b/Tests/RunCMake/VS10Project/VsNoCompileBatching.cmake
new file mode 100644
index 0000000..c96edce
--- /dev/null
+++ b/Tests/RunCMake/VS10Project/VsNoCompileBatching.cmake
@@ -0,0 +1,9 @@
+enable_language(CXX)
+
+add_library(foo foo.cpp)
+
+add_library(foo_NB foo.cpp)
+set_property(TARGET foo_NB PROPERTY VS_NO_COMPILE_BATCHING ON)
+
+add_library(foo_NB_OFF foo.cpp)
+set_property(TARGET foo_NB_OFF PROPERTY VS_NO_COMPILE_BATCHING OFF)
diff --git a/Tests/RunCMake/cmake_language/defer_call_trace_json-stderr.txt b/Tests/RunCMake/cmake_language/defer_call_trace_json-stderr.txt
index 647beb0..3bde16d 100644
--- a/Tests/RunCMake/cmake_language/defer_call_trace_json-stderr.txt
+++ b/Tests/RunCMake/cmake_language/defer_call_trace_json-stderr.txt
@@ -1,5 +1,5 @@
-{"args":\["DEFER","CALL","message","Deferred Message"\],"cmd":"cmake_language","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":2,"line":2,"time":[0-9.]+}
-{"args":\["Immediate Message"\],"cmd":"message","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":2,"line":3,"time":[0-9.]+}
+{"args":\["DEFER","CALL","message","Deferred Message"\],"cmd":"cmake_language","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":2,"global_frame":2,"line":2,"time":[0-9.]+}
+{"args":\["Immediate Message"\],"cmd":"message","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":2,"global_frame":2,"line":3,"time":[0-9.]+}
Immediate Message
-{"args":\["Deferred Message"],"cmd":"message","defer":"__0","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":1,"line":2,"time":[0-9.]+}
+{"args":\["Deferred Message"],"cmd":"message","defer":"__0","file":"[^"]*/Tests/RunCMake/cmake_language/defer_call_trace_json.cmake","frame":1,"global_frame":1,"line":2,"time":[0-9.]+}
Deferred Message$
diff --git a/Tests/RunCMake/ctest_build/RunCMakeTest.cmake b/Tests/RunCMake/ctest_build/RunCMakeTest.cmake
index 511cd71..e94a55d 100644
--- a/Tests/RunCMake/ctest_build/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_build/RunCMakeTest.cmake
@@ -49,6 +49,18 @@ function(run_BuildChangeId)
endfunction()
run_BuildChangeId()
+function(run_SubdirTarget)
+ set(CASE_CMAKELISTS_SUFFIX_CODE [=[
+file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/subdir/CMakeLists.txt [[
+add_custom_target(target_in_subdir COMMAND ${CMAKE_COMMAND} -E touch target_in_subdir.out VERBATIM)
+]])
+add_subdirectory(subdir)
+]=])
+ set(CASE_CTEST_BUILD_ARGS TARGET target_in_subdir)
+ run_ctest(SubdirTarget)
+endfunction()
+run_SubdirTarget()
+
set(RunCMake_USE_CUSTOM_BUILD_COMMAND TRUE)
set(RunCMake_BUILD_COMMAND "${FAKE_BUILD_COMMAND_EXE}")
run_ctest(BuildCommandFailure)
diff --git a/Tests/RunCMake/ctest_build/SubdirTarget-check.cmake b/Tests/RunCMake/ctest_build/SubdirTarget-check.cmake
new file mode 100644
index 0000000..81d21ec
--- /dev/null
+++ b/Tests/RunCMake/ctest_build/SubdirTarget-check.cmake
@@ -0,0 +1,4 @@
+set(expected_file "${RunCMake_TEST_BINARY_DIR}/subdir/target_in_subdir.out")
+if(NOT EXISTS "${expected_file}")
+ set(RunCMake_TEST_FAILED "Expected build output file not found:\n ${expected_file}")
+endif()