summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tests/Contracts/Trilinos-10-6/CMakeLists.txt6
-rw-r--r--Tests/Contracts/Trilinos-10-6/Dashboard.cmake.in3
-rw-r--r--Tests/Contracts/Trilinos-10-6/Patch.cmake20
-rw-r--r--Tests/Contracts/Trilinos-10-6/RunTest.cmake5
-rw-r--r--Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake4
-rw-r--r--Tests/Contracts/Trilinos-10-6/ValidateBuild.cmake.in39
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.")