summaryrefslogtreecommitdiffstats
path: root/Tests/Testing/driver.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-08-11 13:56:02 (GMT)
committerBrad King <brad.king@kitware.com>2009-08-11 13:56:02 (GMT)
commit875c478b64de0e0986394e2d642254f7943ec588 (patch)
tree6d0f976715e3434f2f0d08c87eaf59e6e1c80070 /Tests/Testing/driver.cmake
parentd2e1f2b4d6d87c171464b5dc41b00b609c90bf26 (diff)
downloadCMake-875c478b64de0e0986394e2d642254f7943ec588.zip
CMake-875c478b64de0e0986394e2d642254f7943ec588.tar.gz
CMake-875c478b64de0e0986394e2d642254f7943ec588.tar.bz2
Test add_test() generator expressions
This teaches the 'testing' test to try generator expressions in arguments to add_test(NAME). This test case mimics a common use-case of passing executables to test driver scripts. We excercise the syntax for per-configuration target file names.
Diffstat (limited to 'Tests/Testing/driver.cmake')
-rw-r--r--Tests/Testing/driver.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/Tests/Testing/driver.cmake b/Tests/Testing/driver.cmake
new file mode 100644
index 0000000..4a93acc
--- /dev/null
+++ b/Tests/Testing/driver.cmake
@@ -0,0 +1,40 @@
+# Print values for human reference.
+foreach(v
+ configuration
+ perconfig_file_dir
+ perconfig_file_name
+ perconfig_file
+ pcStatic_file
+ pcStatic_linker_file
+ pcShared_file
+ pcShared_linker_file
+ pcShared_soname_file
+ )
+ message("${v}=${${v}}")
+endforeach()
+
+# Verify that file names match as expected.
+set(pc_file_components ${perconfig_file_dir}/${perconfig_file_name})
+if(NOT "${pc_file_components}" STREQUAL "${perconfig_file}")
+ message(SEND_ERROR
+ "File components ${pc_file_components} do not match ${perconfig_file}")
+endif()
+if(NOT "${pcStatic_file}" STREQUAL "${pcStatic_linker_file}")
+ message(SEND_ERROR
+ "pcStatic_file does not match pcStatic_linker_file:\n"
+ " ${pcStatic_file}\n"
+ " ${pcStatic_linker_file}\n"
+ )
+endif()
+
+# Verify that the implementation files are named correctly.
+foreach(lib pcStatic pcShared)
+ file(STRINGS "${${lib}_file}" info LIMIT_COUNT 1 REGEX "INFO:[^[]*\\[")
+ if(NOT "${info}" MATCHES ".*INFO:symbol\\[${lib}\\].*")
+ message(SEND_ERROR "No INFO:symbol[${lib}] found in:\n ${${lib}_file}")
+ endif()
+endforeach()
+execute_process(COMMAND ${perconfig_file} RESULT_VARIABLE result)
+if(result)
+ message(SEND_ERROR "Error running:\n ${perconfig_file}\n(${result})")
+endif()