diff options
author | David Cole <david.cole@kitware.com> | 2010-12-28 16:27:56 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2010-12-28 16:27:56 (GMT) |
commit | 81136214f3a45c84686461eab3917b6e1115f771 (patch) | |
tree | 2f53d1c08f722a88d1e7e65692de8c8b589e2b89 /Tests | |
parent | 73485615b2d66123b4952118440612d4f7bc9d0a (diff) | |
download | CMake-81136214f3a45c84686461eab3917b6e1115f771.zip CMake-81136214f3a45c84686461eab3917b6e1115f771.tar.gz CMake-81136214f3a45c84686461eab3917b6e1115f771.tar.bz2 |
Establish pass criteria for the Trilinos contract test.
Add a ValidateBuild.cmake script that runs after the Trilinos
dashboard run is complete. In that script, look for some expected
Trilinos executable files. Run the basic Teuchos unit tests
executable and expect it to return 0 for no errors.
Also, patch the main CMakeLists.txt file to get rid of new warnings
from CMake when variables passed in on the command line go
un-referenced in the CMakeLists processing.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in | 3 | ||||
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/Patch.cmake | 20 | ||||
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/RunTest.cmake | 5 | ||||
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake | 4 | ||||
-rw-r--r-- | Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake.in | 39 |
6 files changed, 71 insertions, 6 deletions
diff --git a/Tests/Contracts/Trilinos-10-6/CMakeLists.txt b/Tests/Contracts/Trilinos-10-6/CMakeLists.txt index 3e06d4f..79ed669 100644 --- a/Tests/Contracts/Trilinos-10-6/CMakeLists.txt +++ b/Tests/Contracts/Trilinos-10-6/CMakeLists.txt @@ -61,6 +61,11 @@ configure_file( "${script_dir}/Dashboard.cmake" @ONLY) +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/ValidateBuild.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/ValidateBuild.cmake" + @ONLY) + # Source dir for this project exists outside the CMake build tree because it # is absolutely huge. Source dir is therefore cached under a '.cmake/Contracts' # dir in your HOME directory. Downloads are cached under '.cmake/Downloads' @@ -82,6 +87,7 @@ else() URL "${url}" URL_MD5 "${md5}" SOURCE_DIR "${source_dir}" + PATCH_COMMAND ${CMAKE_COMMAND} -Dsource_dir=${source_dir} -P "${CMAKE_CURRENT_SOURCE_DIR}/Patch.cmake" CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" diff --git a/Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in b/Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in index 1209dc8..cc29502 100644 --- a/Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in +++ b/Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in @@ -56,7 +56,8 @@ execute_process(COMMAND ) if(NOT "${rv}" STREQUAL "0") - message(FATAL_ERROR "error(s) running Trilinos dashboard script experimental_build_test.cmake + message("error(s) (or warnings or test failures) running Trilinos dashboard +script experimental_build_test.cmake... ctest returned rv='${rv}' ") endif() diff --git a/Tests/Contracts/Trilinos-10-6/Patch.cmake b/Tests/Contracts/Trilinos-10-6/Patch.cmake new file mode 100644 index 0000000..a7aae27 --- /dev/null +++ b/Tests/Contracts/Trilinos-10-6/Patch.cmake @@ -0,0 +1,20 @@ +if(NOT DEFINED source_dir) + message(FATAL_ERROR "variable 'source_dir' not defined") +endif() + +if(NOT EXISTS "${source_dir}/CMakeLists.txt") + message(FATAL_ERROR "error: No CMakeLists.txt file to patch!") +endif() + +set(text " + +# +# Reference variables typically given as experimental_build_test configure +# options to avoid CMake warnings about unused variables +# + +MESSAGE(\"Trilinos_ALLOW_NO_PACKAGES='\${Trilinos_ALLOW_NO_PACKAGES}'\") +MESSAGE(\"Trilinos_WARNINGS_AS_ERRORS_FLAGS='\${Trilinos_WARNINGS_AS_ERRORS_FLAGS}'\") +") + +file(APPEND "${source_dir}/CMakeLists.txt" "${text}") diff --git a/Tests/Contracts/Trilinos-10-6/RunTest.cmake b/Tests/Contracts/Trilinos-10-6/RunTest.cmake index 93c1505..30124d8 100644 --- a/Tests/Contracts/Trilinos-10-6/RunTest.cmake +++ b/Tests/Contracts/Trilinos-10-6/RunTest.cmake @@ -1,4 +1,7 @@ -get_filename_component(dir "${CMAKE_CURRENT_LIST_FILE}" PATH) +# ValidateBuild.cmake is configured into this location when the test is built: +set(dir "${CMAKE_CURRENT_BINARY_DIR}/Contracts/${project}") + set(exe "${CMAKE_COMMAND}") set(args -P "${dir}/ValidateBuild.cmake") + set(Trilinos-10-6_RUN_TEST ${exe} ${args}) diff --git a/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake b/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake deleted file mode 100644 index 6942b09..0000000 --- a/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: put some actual code here to validate that the Trilinos build was -# "successful enough" -# -message(STATUS "Trilinos-10-6 build validated") diff --git a/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake.in b/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake.in new file mode 100644 index 0000000..04bbf21 --- /dev/null +++ b/Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake.in @@ -0,0 +1,39 @@ +# +# This code validates that the Trilinos build was "successful enough" (since it +# is difficult to detect this from the caller of the experimental_build_test +# dashboard script...) +# +set(binary_dir "@binary_dir@") +message("binary_dir='${binary_dir}'") + + +# Count *.exe files: +# +file(GLOB_RECURSE exes "${binary_dir}/*.exe") +message(STATUS "exes='${exes}'") +list(LENGTH exes len) +if(len LESS 47) + message(FATAL_ERROR "len='${len}' is less than minimum expected='47' (count of executables)") +endif() +message(STATUS "Found len='${len}' *.exe files") + + +# Try to find the Teuchos unit tests executable: +# +file(GLOB_RECURSE exe "${binary_dir}/Teuchos_UnitTest_UnitTests.exe") +list(LENGTH exe len) +if(NOT len EQUAL 1) + message(FATAL_ERROR "len='${len}' is not the expected='1' (count of Teuchos_UnitTest_UnitTests.exe)") +endif() +message(STATUS "Found exe='${exe}'") + + +# Try to run it: +execute_process(COMMAND ${exe} RESULT_VARIABLE rv) +if(NOT "${rv}" STREQUAL "0") + message(FATAL_ERROR "rv='${rv}' is not the expected='0' (result of running Teuchos_UnitTest_UnitTests.exe)") +endif() +message(STATUS "Ran exe='${exe}' rv='${rv}'") + + +message(STATUS "All Trilinos build validation tests pass.") |