This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via 0ac1b0beaaed6eb468d84d95ae3880709e98cdfd (commit) via 55b2aa884cdb3df9a32152ee1df60e708d2c5ec9 (commit) via eb33000d75e0e41a2412db9a75597dbee6bfdad6 (commit) via 42a81e7119fab94afcb0c87f93c314af1689e1f7 (commit) from a948b62ff8c0f72f89f2638222986d782cba47f1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0ac1b0beaaed6eb468d84d95ae3880709e98cdfd commit 0ac1b0beaaed6eb468d84d95ae3880709e98cdfd Merge: a948b62 55b2aa8 Author: Brad King <brad.k...@kitware.com> AuthorDate: Mon Mar 12 09:40:42 2012 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Mon Mar 12 09:40:42 2012 -0400 Merge topic 'test-RunCMake' into next 55b2aa8 Use generalized RunCMake test infrastrucure for build_command test eb33000 Use generalized RunCMake test infrastrucure for find_package test 42a81e7 Add stronger infrastructure for CMake-only tests http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55b2aa884cdb3df9a32152ee1df60e708d2c5ec9 commit 55b2aa884cdb3df9a32152ee1df60e708d2c5ec9 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Mar 9 16:47:19 2012 -0500 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Mar 12 09:33:21 2012 -0400 Use generalized RunCMake test infrastrucure for build_command test The CMakeCommands.build_command test performs output/error checking so move it over to RunCMake to re-use the generalized infrastrucure. This is the only test left using Tests/CMakeCommands/CMakeLists.txt so remove it. diff --git a/Tests/CMakeCommands/CMakeLists.txt b/Tests/CMakeCommands/CMakeLists.txt deleted file mode 100644 index e9e4020..0000000 --- a/Tests/CMakeCommands/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -macro(add_CMakeCommands_test test) - add_test(CMakeCommands.${test} ${CMAKE_CMAKE_COMMAND} - -DCMake_SOURCE_DIR=${CMake_SOURCE_DIR} # TODO: Remove - -Ddir=${CMAKE_CURRENT_BINARY_DIR}/${test} - -Dgen=${CMAKE_TEST_GENERATOR} - -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/test.cmake" - ) -endmacro() - -add_CMakeCommands_test(build_command) diff --git a/Tests/CMakeCommands/build_command/test.cmake b/Tests/CMakeCommands/build_command/test.cmake deleted file mode 100644 index 55d9359..0000000 --- a/Tests/CMakeCommands/build_command/test.cmake +++ /dev/null @@ -1,86 +0,0 @@ -if(NOT DEFINED CMake_SOURCE_DIR) - message(FATAL_ERROR "CMake_SOURCE_DIR not defined") -endif() - -if(NOT DEFINED dir) - message(FATAL_ERROR "dir not defined") -endif() - -if(NOT DEFINED gen) - message(FATAL_ERROR "gen not defined") -endif() - -message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)") - -# Run cmake: -# -function(run_cmake build_dir extra_args expected_result expected_output expected_error) - message(STATUS "run_cmake build_dir='${build_dir}' extra_args='${extra_args}'") - - # Ensure build_dir exists: - # - execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${build_dir}) - - # Run cmake: - # - execute_process(COMMAND ${CMAKE_COMMAND} - ${extra_args} - -G ${gen} ${CMake_SOURCE_DIR}/Tests/CMakeCommands/build_command - RESULT_VARIABLE result - OUTPUT_VARIABLE stdout - ERROR_VARIABLE stderr - WORKING_DIRECTORY ${build_dir} - ) - - message(STATUS "result='${result}'") - message(STATUS "stdout='${stdout}'") - message(STATUS "stderr='${stderr}'") - message(STATUS "") - - # Verify result and output match expectations: - # - if("0" STREQUAL "${expected_result}") - if(NOT "${result}" STREQUAL "0") - message(FATAL_ERROR - "error: result='${result}' is non-zero and different than expected_result='${expected_result}'") - endif() - else() - if("${result}" STREQUAL "0") - message(FATAL_ERROR - "error: result='${result}' is zero and different than expected_result='${expected_result}'") - endif() - endif() - - foreach(e ${expected_output}) - if(NOT stdout MATCHES "${e}") - message(FATAL_ERROR - "error: stdout does not match expected_output item e='${e}'") - else() - message(STATUS "info: stdout matches '${e}'") - endif() - endforeach() - - foreach(e ${expected_error}) - if(NOT stderr MATCHES "${e}") - message(FATAL_ERROR - "error: stderr does not match expected_error item e='${e}'") - else() - message(STATUS "info: stderr matches '${e}'") - endif() - endforeach() - - message(STATUS "result, stdout and stderr match all expectations: test passes") - message(STATUS "") -endfunction() - - -# Expect this case to succeed: -run_cmake("${dir}/b1" "" 0 - "Build files have been written to:" - "skipping cases 1, 2 and 3 because TEST_ERROR_CONDITIONS is OFF") - - -# Expect this one to fail: -run_cmake("${dir}/b2" "-DTEST_ERROR_CONDITIONS:BOOL=ON" 1 - "Configuring incomplete, errors occurred!" - "build_command requires at least one argument naming a CMake variable;build_command unknown argument ") diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 0eb4859..cf4dc44 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -53,7 +53,6 @@ IF(BUILD_TESTING) ADD_SUBDIRECTORY(CMakeLib) ADD_SUBDIRECTORY(CMakeOnly) - ADD_SUBDIRECTORY(CMakeCommands) ADD_SUBDIRECTORY(RunCMake) ADD_SUBDIRECTORY(FindPackageModeMakefileTest) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 2dbb08e..63fc9f8 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -40,4 +40,5 @@ macro(add_RunCMake_test test) ) endmacro() +add_RunCMake_test(build_command) add_RunCMake_test(find_package) diff --git a/Tests/CMakeCommands/build_command/CMakeLists.txt b/Tests/RunCMake/build_command/CMakeLists.txt similarity index 96% rename from Tests/CMakeCommands/build_command/CMakeLists.txt rename to Tests/RunCMake/build_command/CMakeLists.txt index 990ac90..0fbb948 100644 --- a/Tests/CMakeCommands/build_command/CMakeLists.txt +++ b/Tests/RunCMake/build_command/CMakeLists.txt @@ -1,3 +1,7 @@ +cmake_minimum_required(VERSION 2.8) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) + # This CMakeLists file is *sometimes expected* to result in a configure error. # # expect this to succeed: @@ -12,12 +16,9 @@ # ...even purposefully calling it with known-bad argument lists to cover # error handling code. # -cmake_minimum_required(VERSION 2.8) -project(test_build_command) set(cmd "initial") -message("CTEST_FULL_OUTPUT") message("0. begin") if(TEST_ERROR_CONDITIONS) diff --git a/Tests/RunCMake/build_command/ErrorsOFF-stderr.txt b/Tests/RunCMake/build_command/ErrorsOFF-stderr.txt new file mode 100644 index 0000000..331885b --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsOFF-stderr.txt @@ -0,0 +1 @@ +skipping cases 1, 2 and 3 because TEST_ERROR_CONDITIONS is OFF diff --git a/Tests/RunCMake/build_command/ErrorsOFF-stdout.txt b/Tests/RunCMake/build_command/ErrorsOFF-stdout.txt new file mode 100644 index 0000000..cf66a9d --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsOFF-stdout.txt @@ -0,0 +1 @@ +Build files have been written to: diff --git a/Tests/RunCMake/build_command/ErrorsOFF.cmake b/Tests/RunCMake/build_command/ErrorsOFF.cmake new file mode 100644 index 0000000..a243fab --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsOFF.cmake @@ -0,0 +1 @@ +set(TEST_ERROR_CONDITIONS OFF) diff --git a/Tests/RunCMake/build_command/ErrorsON-result.txt b/Tests/RunCMake/build_command/ErrorsON-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsON-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/build_command/ErrorsON-stderr.txt b/Tests/RunCMake/build_command/ErrorsON-stderr.txt new file mode 100644 index 0000000..0be7475 --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsON-stderr.txt @@ -0,0 +1,12 @@ +CMake Error at CMakeLists.txt:[0-9]+ \(build_command\): + build_command requires at least one argument naming a CMake variable + ++ +1. cmd='initial' +CMake Error at CMakeLists.txt:[0-9]+ \(build_command\): + build_command unknown argument "BOGUS" + ++ +2. cmd='initial' +CMake Error at CMakeLists.txt:[0-9]+ \(build_command\): + build_command unknown argument "STUFF" diff --git a/Tests/RunCMake/build_command/ErrorsON-stdout.txt b/Tests/RunCMake/build_command/ErrorsON-stdout.txt new file mode 100644 index 0000000..841dd0d --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsON-stdout.txt @@ -0,0 +1 @@ +Configuring incomplete, errors occurred! diff --git a/Tests/RunCMake/build_command/ErrorsON.cmake b/Tests/RunCMake/build_command/ErrorsON.cmake new file mode 100644 index 0000000..27814bf --- /dev/null +++ b/Tests/RunCMake/build_command/ErrorsON.cmake @@ -0,0 +1 @@ +set(TEST_ERROR_CONDITIONS ON) diff --git a/Tests/RunCMake/build_command/RunCMakeTest.cmake b/Tests/RunCMake/build_command/RunCMakeTest.cmake new file mode 100644 index 0000000..4525c57 --- /dev/null +++ b/Tests/RunCMake/build_command/RunCMakeTest.cmake @@ -0,0 +1,4 @@ +include(RunCMake) + +run_cmake(ErrorsOFF) +run_cmake(ErrorsON) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eb33000d75e0e41a2412db9a75597dbee6bfdad6 commit eb33000d75e0e41a2412db9a75597dbee6bfdad6 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Mar 9 16:34:09 2012 -0500 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Mar 12 09:33:21 2012 -0400 Use generalized RunCMake test infrastrucure for find_package test diff --git a/Tests/CMakeCommands/CMakeLists.txt b/Tests/CMakeCommands/CMakeLists.txt index aa400d0..e9e4020 100644 --- a/Tests/CMakeCommands/CMakeLists.txt +++ b/Tests/CMakeCommands/CMakeLists.txt @@ -8,4 +8,3 @@ macro(add_CMakeCommands_test test) endmacro() add_CMakeCommands_test(build_command) -add_CMakeCommands_test(find_package) diff --git a/Tests/CMakeCommands/find_package/CMakeLists.txt b/Tests/CMakeCommands/find_package/CMakeLists.txt deleted file mode 100644 index c2deed0..0000000 --- a/Tests/CMakeCommands/find_package/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -cmake_minimum_required(VERSION 2.8) -project(${TEST} NONE) -include(${TEST}.cmake) diff --git a/Tests/CMakeCommands/find_package/test.cmake b/Tests/CMakeCommands/find_package/test.cmake deleted file mode 100644 index dd1072e..0000000 --- a/Tests/CMakeCommands/find_package/test.cmake +++ /dev/null @@ -1,80 +0,0 @@ -if(NOT DEFINED dir) - message(FATAL_ERROR "dir not defined") -endif() - -if(NOT DEFINED gen) - message(FATAL_ERROR "gen not defined") -endif() - -# TODO: Generalize this for other tests. -function(run_test test) - set(top_src "${CMAKE_CURRENT_LIST_DIR}") - set(top_bin "${dir}") - if(EXISTS ${top_src}/${test}-result.txt) - file(READ ${top_src}/${test}-result.txt expect_result) - string(REGEX REPLACE "\n+$" "" expect_result "${expect_result}") - else() - set(expect_result 0) - endif() - foreach(o out err) - if(EXISTS ${top_src}/${test}-std${o}.txt) - file(READ ${top_src}/${test}-std${o}.txt expect_std${o}) - string(REGEX REPLACE "\n+$" "" expect_std${o} "${expect_std${o}}") - else() - unset(expect_std${o}) - endif() - endforeach() - set(source_dir "${top_src}") - set(binary_dir "${top_bin}/${test}-build") - file(REMOVE_RECURSE "${binary_dir}") - file(MAKE_DIRECTORY "${binary_dir}") - execute_process( - COMMAND ${CMAKE_COMMAND} "${source_dir}" -G "${gen}" -DTEST=${test} - WORKING_DIRECTORY "${binary_dir}" - OUTPUT_VARIABLE actual_stdout - ERROR_VARIABLE actual_stderr - RESULT_VARIABLE actual_result - ) - set(msg "") - if(NOT "${actual_result}" STREQUAL "${expect_result}") - set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n") - endif() - foreach(o out err) - string(REGEX REPLACE "\n+$" "" actual_std${o} "${actual_std${o}}") - set(expect_${o} "") - if(DEFINED expect_std${o}) - if(NOT "${actual_std${o}}" MATCHES "${expect_std${o}}") - string(REGEX REPLACE "\n" "\n expect-${o}> " expect_${o} - " expect-${o}> ${expect_std${o}}") - set(expect_${o} "Expected std${o} to match:\n${expect_${o}}\n") - set(msg "${msg}std${o} does not match that expected.\n") - endif() - endif() - endforeach() - if(msg) - string(REGEX REPLACE "\n" "\n actual-out> " actual_out " actual-out> ${actual_stdout}") - string(REGEX REPLACE "\n" "\n actual-err> " actual_err " actual-err> ${actual_stderr}") - message(SEND_ERROR "${test} - FAILED:\n" - "${msg}" - "${expect_out}" - "Actual stdout:\n${actual_out}\n" - "${expect_err}" - "Actual stderr:\n${actual_err}\n" - ) - else() - message(STATUS "${test} - PASSED") - endif() -endfunction() - -run_test(MissingNormal) -run_test(MissingNormalRequired) -run_test(MissingNormalVersion) -run_test(MissingNormalWarnNoModuleOld) -run_test(MissingNormalWarnNoModuleNew) -run_test(MissingModule) -run_test(MissingModuleRequired) -run_test(MissingConfig) -run_test(MissingConfigOneName) -run_test(MissingConfigRequired) -run_test(MissingConfigVersion) -run_test(MixedModeOptions) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 5f10bd7..2dbb08e 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -39,3 +39,5 @@ macro(add_RunCMake_test test) -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" ) endmacro() + +add_RunCMake_test(find_package) diff --git a/Tests/RunCMake/find_package/CMakeLists.txt b/Tests/RunCMake/find_package/CMakeLists.txt new file mode 100644 index 0000000..e8db6b0 --- /dev/null +++ b/Tests/RunCMake/find_package/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/CMakeCommands/find_package/MissingConfig-stderr.txt b/Tests/RunCMake/find_package/MissingConfig-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfig-stderr.txt rename to Tests/RunCMake/find_package/MissingConfig-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingConfig.cmake b/Tests/RunCMake/find_package/MissingConfig.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfig.cmake rename to Tests/RunCMake/find_package/MissingConfig.cmake diff --git a/Tests/CMakeCommands/find_package/MissingConfigOneName-stderr.txt b/Tests/RunCMake/find_package/MissingConfigOneName-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigOneName-stderr.txt rename to Tests/RunCMake/find_package/MissingConfigOneName-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingConfigOneName.cmake b/Tests/RunCMake/find_package/MissingConfigOneName.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigOneName.cmake rename to Tests/RunCMake/find_package/MissingConfigOneName.cmake diff --git a/Tests/CMakeCommands/find_package/MissingConfigRequired-result.txt b/Tests/RunCMake/find_package/MissingConfigRequired-result.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigRequired-result.txt rename to Tests/RunCMake/find_package/MissingConfigRequired-result.txt diff --git a/Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt b/Tests/RunCMake/find_package/MissingConfigRequired-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigRequired-stderr.txt rename to Tests/RunCMake/find_package/MissingConfigRequired-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingConfigRequired.cmake b/Tests/RunCMake/find_package/MissingConfigRequired.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigRequired.cmake rename to Tests/RunCMake/find_package/MissingConfigRequired.cmake diff --git a/Tests/CMakeCommands/find_package/MissingConfigVersion-stderr.txt b/Tests/RunCMake/find_package/MissingConfigVersion-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigVersion-stderr.txt rename to Tests/RunCMake/find_package/MissingConfigVersion-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingConfigVersion.cmake b/Tests/RunCMake/find_package/MissingConfigVersion.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingConfigVersion.cmake rename to Tests/RunCMake/find_package/MissingConfigVersion.cmake diff --git a/Tests/CMakeCommands/find_package/MissingModule-stderr.txt b/Tests/RunCMake/find_package/MissingModule-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingModule-stderr.txt rename to Tests/RunCMake/find_package/MissingModule-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingModule.cmake b/Tests/RunCMake/find_package/MissingModule.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingModule.cmake rename to Tests/RunCMake/find_package/MissingModule.cmake diff --git a/Tests/CMakeCommands/find_package/MissingModuleRequired-result.txt b/Tests/RunCMake/find_package/MissingModuleRequired-result.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingModuleRequired-result.txt rename to Tests/RunCMake/find_package/MissingModuleRequired-result.txt diff --git a/Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt b/Tests/RunCMake/find_package/MissingModuleRequired-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingModuleRequired-stderr.txt rename to Tests/RunCMake/find_package/MissingModuleRequired-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingModuleRequired.cmake b/Tests/RunCMake/find_package/MissingModuleRequired.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingModuleRequired.cmake rename to Tests/RunCMake/find_package/MissingModuleRequired.cmake diff --git a/Tests/CMakeCommands/find_package/MissingNormal-stderr.txt b/Tests/RunCMake/find_package/MissingNormal-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormal-stderr.txt rename to Tests/RunCMake/find_package/MissingNormal-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormal.cmake b/Tests/RunCMake/find_package/MissingNormal.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormal.cmake rename to Tests/RunCMake/find_package/MissingNormal.cmake diff --git a/Tests/CMakeCommands/find_package/MissingNormalRequired-result.txt b/Tests/RunCMake/find_package/MissingNormalRequired-result.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalRequired-result.txt rename to Tests/RunCMake/find_package/MissingNormalRequired-result.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt b/Tests/RunCMake/find_package/MissingNormalRequired-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalRequired-stderr.txt rename to Tests/RunCMake/find_package/MissingNormalRequired-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormalRequired.cmake b/Tests/RunCMake/find_package/MissingNormalRequired.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalRequired.cmake rename to Tests/RunCMake/find_package/MissingNormalRequired.cmake diff --git a/Tests/CMakeCommands/find_package/MissingNormalVersion-stderr.txt b/Tests/RunCMake/find_package/MissingNormalVersion-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalVersion-stderr.txt rename to Tests/RunCMake/find_package/MissingNormalVersion-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormalVersion.cmake b/Tests/RunCMake/find_package/MissingNormalVersion.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalVersion.cmake rename to Tests/RunCMake/find_package/MissingNormalVersion.cmake diff --git a/Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleNew-stderr.txt b/Tests/RunCMake/find_package/MissingNormalWarnNoModuleNew-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleNew-stderr.txt rename to Tests/RunCMake/find_package/MissingNormalWarnNoModuleNew-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleNew.cmake b/Tests/RunCMake/find_package/MissingNormalWarnNoModuleNew.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleNew.cmake rename to Tests/RunCMake/find_package/MissingNormalWarnNoModuleNew.cmake diff --git a/Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleOld-stderr.txt b/Tests/RunCMake/find_package/MissingNormalWarnNoModuleOld-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleOld-stderr.txt rename to Tests/RunCMake/find_package/MissingNormalWarnNoModuleOld-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleOld.cmake b/Tests/RunCMake/find_package/MissingNormalWarnNoModuleOld.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MissingNormalWarnNoModuleOld.cmake rename to Tests/RunCMake/find_package/MissingNormalWarnNoModuleOld.cmake diff --git a/Tests/CMakeCommands/find_package/MixedModeOptions-result.txt b/Tests/RunCMake/find_package/MixedModeOptions-result.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MixedModeOptions-result.txt rename to Tests/RunCMake/find_package/MixedModeOptions-result.txt diff --git a/Tests/CMakeCommands/find_package/MixedModeOptions-stderr.txt b/Tests/RunCMake/find_package/MixedModeOptions-stderr.txt similarity index 100% rename from Tests/CMakeCommands/find_package/MixedModeOptions-stderr.txt rename to Tests/RunCMake/find_package/MixedModeOptions-stderr.txt diff --git a/Tests/CMakeCommands/find_package/MixedModeOptions.cmake b/Tests/RunCMake/find_package/MixedModeOptions.cmake similarity index 100% rename from Tests/CMakeCommands/find_package/MixedModeOptions.cmake rename to Tests/RunCMake/find_package/MixedModeOptions.cmake diff --git a/Tests/RunCMake/find_package/RunCMakeTest.cmake b/Tests/RunCMake/find_package/RunCMakeTest.cmake new file mode 100644 index 0000000..ba57f99 --- /dev/null +++ b/Tests/RunCMake/find_package/RunCMakeTest.cmake @@ -0,0 +1,14 @@ +include(RunCMake) + +run_cmake(MissingNormal) +run_cmake(MissingNormalRequired) +run_cmake(MissingNormalVersion) +run_cmake(MissingNormalWarnNoModuleOld) +run_cmake(MissingNormalWarnNoModuleNew) +run_cmake(MissingModule) +run_cmake(MissingModuleRequired) +run_cmake(MissingConfig) +run_cmake(MissingConfigOneName) +run_cmake(MissingConfigRequired) +run_cmake(MissingConfigVersion) +run_cmake(MixedModeOptions) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=42a81e7119fab94afcb0c87f93c314af1689e1f7 commit 42a81e7119fab94afcb0c87f93c314af1689e1f7 Author: Brad King <brad.k...@kitware.com> AuthorDate: Fri Mar 9 16:24:43 2012 -0500 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Mar 12 09:33:21 2012 -0400 Add stronger infrastructure for CMake-only tests The CMakeOnly directory added by commit 9a20abf0 (Add infrastructure for CMake-only tests, 2012-01-11) was sufficient only for tests that always run CMake to successfully configure a project. Later commit eeaaffcb (find_package: Test error and warning messages in failure cases, 2012-02-28) added a sample test that covers failure cases. Generalize the above to create new "RunCMake" test infrastructure that can run CMake multiple times for a single project with different variations and check for expected result/stdout/stderr. Allow for both successful and failing CMake project configuration cases. This will be useful to test error messages and failure behavior. diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 07a6c36..0eb4859 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -54,6 +54,7 @@ IF(BUILD_TESTING) ADD_SUBDIRECTORY(CMakeLib) ADD_SUBDIRECTORY(CMakeOnly) ADD_SUBDIRECTORY(CMakeCommands) + ADD_SUBDIRECTORY(RunCMake) ADD_SUBDIRECTORY(FindPackageModeMakefileTest) diff --git a/Tests/README b/Tests/README index 9b0f5c1..8b2fda8 100644 --- a/Tests/README +++ b/Tests/README @@ -16,10 +16,15 @@ your test to the test runs. This includes tests that will build something using try_compile() and friends, but nothing that expects add_executable(), add_library(), or add_test() to run. -If this matches your test you should put it into the Tests/CMakeOnly/ directory. -Create a subdirectory named like your test and write the CMakeLists.txt you -need into that subdirectory. Use the add_CMakeOnly_test() macro from -Tests/CMakeOnly/CMakeLists.txt to add your test to the test runs. +If the test configures the project only once and it must succeed then put it +into the Tests/CMakeOnly/ directory. Create a subdirectory named like your +test and write the CMakeLists.txt you need into that subdirectory. Use the +add_CMakeOnly_test() macro from Tests/CMakeOnly/CMakeLists.txt to add your +test to the test runs. + +If the test configures the project with multiple variations and verifies +success or failure each time then put it into the Tests/RunCMake/ directory. +Read the instructions in Tests/RunCMake/CMakeLists.txt to add a test. 3. If you are testing something from the Modules directory diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt new file mode 100644 index 0000000..5f10bd7 --- /dev/null +++ b/Tests/RunCMake/CMakeLists.txt @@ -0,0 +1,41 @@ +# This directory contains tests that run CMake to configure a project +# but do not actually build anything. To add a test: +# +# 1.) Add a subdirectory named for the test. +# +# 2.) Call add_RunCMake_test and pass the test directory name. +# +# 3.) Create a RunCMakeTest.cmake script in the directory containing +# include(RunCMake) +# run_cmake(SubTest1) +# ... +# run_cmake(SubTestN) +# where SubTest1..SubTestN are sub-test names each corresponding to +# an independent CMake run and project configuration. +# +# 3.) Create a CMakeLists.txt file in the directory containing +# cmake_minimum_required(...) +# project(${RunCMake_TEST} NONE) # or languages needed +# include(${RunCMake_TEST}.cmake) +# where "${RunCMake_TEST}" is literal. A value for RunCMake_TEST +# will be passed to CMake by the run_cmake macro when running each +# sub-test. +# +# 4.) Create a <SubTest>.cmake file for each sub-test named above +# containing the actual test code. Optionally create files +# containing expected test results: +# <SubTest>-result.txt = Process result expected if not "0" +# <SubTest>-stdout.txt = Regex matching expected stdout content +# <SubTest>-stderr.txt = Regex matching expected stderr content +# Note that trailing newlines will be stripped from actual test +# output before matching against the stdout and stderr expressions. + +macro(add_RunCMake_test test) + add_test(RunCMake.${test} ${CMAKE_CMAKE_COMMAND} + -DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR} + -DRunCMake_GENERATOR=${CMAKE_TEST_GENERATOR} + -DRunCMake_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${test} + -DRunCMake_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/${test} + -P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake" + ) +endmacro() diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake new file mode 100644 index 0000000..2639463 --- /dev/null +++ b/Tests/RunCMake/RunCMake.cmake @@ -0,0 +1,69 @@ +foreach(arg + RunCMake_GENERATOR + RunCMake_SOURCE_DIR + RunCMake_BINARY_DIR + ) + if(NOT DEFINED ${arg}) + message(FATAL_ERROR "${arg} not given!") + endif() +endforeach() + +function(run_cmake test) + set(top_src "${RunCMake_SOURCE_DIR}") + set(top_bin "${RunCMake_BINARY_DIR}") + if(EXISTS ${top_src}/${test}-result.txt) + file(READ ${top_src}/${test}-result.txt expect_result) + string(REGEX REPLACE "\n+$" "" expect_result "${expect_result}") + else() + set(expect_result 0) + endif() + foreach(o out err) + if(EXISTS ${top_src}/${test}-std${o}.txt) + file(READ ${top_src}/${test}-std${o}.txt expect_std${o}) + string(REGEX REPLACE "\n+$" "" expect_std${o} "${expect_std${o}}") + else() + unset(expect_std${o}) + endif() + endforeach() + set(source_dir "${top_src}") + set(binary_dir "${top_bin}/${test}-build") + file(REMOVE_RECURSE "${binary_dir}") + file(MAKE_DIRECTORY "${binary_dir}") + execute_process( + COMMAND ${CMAKE_COMMAND} "${source_dir}" + -G "${RunCMake_GENERATOR}" -DRunCMake_TEST=${test} + WORKING_DIRECTORY "${binary_dir}" + OUTPUT_VARIABLE actual_stdout + ERROR_VARIABLE actual_stderr + RESULT_VARIABLE actual_result + ) + set(msg "") + if(NOT "${actual_result}" STREQUAL "${expect_result}") + set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n") + endif() + foreach(o out err) + string(REGEX REPLACE "\n+$" "" actual_std${o} "${actual_std${o}}") + set(expect_${o} "") + if(DEFINED expect_std${o}) + if(NOT "${actual_std${o}}" MATCHES "${expect_std${o}}") + string(REGEX REPLACE "\n" "\n expect-${o}> " expect_${o} + " expect-${o}> ${expect_std${o}}") + set(expect_${o} "Expected std${o} to match:\n${expect_${o}}\n") + set(msg "${msg}std${o} does not match that expected.\n") + endif() + endif() + endforeach() + if(msg) + string(REGEX REPLACE "\n" "\n actual-out> " actual_out " actual-out> ${actual_stdout}") + string(REGEX REPLACE "\n" "\n actual-err> " actual_err " actual-err> ${actual_stderr}") + message(SEND_ERROR "${test} - FAILED:\n" + "${msg}" + "${expect_out}" + "Actual stdout:\n${actual_out}\n" + "${expect_err}" + "Actual stderr:\n${actual_err}\n" + ) + else() + message(STATUS "${test} - PASSED") + endif() +endfunction() ----------------------------------------------------------------------- Summary of changes: Tests/CMakeCommands/CMakeLists.txt | 11 --- Tests/CMakeCommands/build_command/test.cmake | 86 -------------------- Tests/CMakeCommands/find_package/CMakeLists.txt | 3 - Tests/CMakeLists.txt | 2 +- Tests/README | 13 ++- Tests/RunCMake/CMakeLists.txt | 44 ++++++++++ .../test.cmake => RunCMake/RunCMake.cmake} | 39 +++------ .../build_command/CMakeLists.txt | 7 +- Tests/RunCMake/build_command/ErrorsOFF-stderr.txt | 1 + Tests/RunCMake/build_command/ErrorsOFF-stdout.txt | 1 + Tests/RunCMake/build_command/ErrorsOFF.cmake | 1 + .../build_command/ErrorsON-result.txt} | 0 Tests/RunCMake/build_command/ErrorsON-stderr.txt | 12 +++ Tests/RunCMake/build_command/ErrorsON-stdout.txt | 1 + Tests/RunCMake/build_command/ErrorsON.cmake | 1 + Tests/RunCMake/build_command/RunCMakeTest.cmake | 4 + Tests/RunCMake/find_package/CMakeLists.txt | 3 + .../find_package/MissingConfig-stderr.txt | 0 .../find_package/MissingConfig.cmake | 0 .../find_package/MissingConfigOneName-stderr.txt | 0 .../find_package/MissingConfigOneName.cmake | 0 .../find_package/MissingConfigRequired-result.txt | 0 .../find_package/MissingConfigRequired-stderr.txt | 0 .../find_package/MissingConfigRequired.cmake | 0 .../find_package/MissingConfigVersion-stderr.txt | 0 .../find_package/MissingConfigVersion.cmake | 0 .../find_package/MissingModule-stderr.txt | 0 .../find_package/MissingModule.cmake | 0 .../find_package/MissingModuleRequired-result.txt | 0 .../find_package/MissingModuleRequired-stderr.txt | 0 .../find_package/MissingModuleRequired.cmake | 0 .../find_package/MissingNormal-stderr.txt | 0 .../find_package/MissingNormal.cmake | 0 .../find_package/MissingNormalRequired-result.txt | 0 .../find_package/MissingNormalRequired-stderr.txt | 0 .../find_package/MissingNormalRequired.cmake | 0 .../find_package/MissingNormalVersion-stderr.txt | 0 .../find_package/MissingNormalVersion.cmake | 0 .../MissingNormalWarnNoModuleNew-stderr.txt | 0 .../MissingNormalWarnNoModuleNew.cmake | 0 .../MissingNormalWarnNoModuleOld-stderr.txt | 0 .../MissingNormalWarnNoModuleOld.cmake | 0 .../find_package/MixedModeOptions-result.txt | 0 .../find_package/MixedModeOptions-stderr.txt | 0 .../find_package/MixedModeOptions.cmake | 0 Tests/RunCMake/find_package/RunCMakeTest.cmake | 14 +++ 46 files changed, 110 insertions(+), 133 deletions(-) delete mode 100644 Tests/CMakeCommands/CMakeLists.txt delete mode 100644 Tests/CMakeCommands/build_command/test.cmake delete mode 100644 Tests/CMakeCommands/find_package/CMakeLists.txt create mode 100644 Tests/RunCMake/CMakeLists.txt rename Tests/{CMakeCommands/find_package/test.cmake => RunCMake/RunCMake.cmake} (73%) rename Tests/{CMakeCommands => RunCMake}/build_command/CMakeLists.txt (96%) create mode 100644 Tests/RunCMake/build_command/ErrorsOFF-stderr.txt create mode 100644 Tests/RunCMake/build_command/ErrorsOFF-stdout.txt create mode 100644 Tests/RunCMake/build_command/ErrorsOFF.cmake copy Tests/{CMakeCommands/find_package/MissingConfigRequired-result.txt => RunCMake/build_command/ErrorsON-result.txt} (100%) create mode 100644 Tests/RunCMake/build_command/ErrorsON-stderr.txt create mode 100644 Tests/RunCMake/build_command/ErrorsON-stdout.txt create mode 100644 Tests/RunCMake/build_command/ErrorsON.cmake create mode 100644 Tests/RunCMake/build_command/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/find_package/CMakeLists.txt rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfig-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfig.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigOneName-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigOneName.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigRequired-result.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigRequired-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigRequired.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigVersion-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingConfigVersion.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingModule-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingModule.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingModuleRequired-result.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingModuleRequired-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingModuleRequired.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormal-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormal.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalRequired-result.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalRequired-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalRequired.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalVersion-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalVersion.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalWarnNoModuleNew-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalWarnNoModuleNew.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalWarnNoModuleOld-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MissingNormalWarnNoModuleOld.cmake (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MixedModeOptions-result.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MixedModeOptions-stderr.txt (100%) rename Tests/{CMakeCommands => RunCMake}/find_package/MixedModeOptions.cmake (100%) create mode 100644 Tests/RunCMake/find_package/RunCMakeTest.cmake hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits