summaryrefslogtreecommitdiffstats
path: root/.gitlab/ci/ctest_test_external.cmake
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2020-05-26 13:18:37 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2020-05-26 16:50:16 (GMT)
commite63fe4a58863e4a8fe6cee55e6ffd4324f5e10d4 (patch)
treefd85bc290d57d956465ef4e538f717ceff24bda2 /.gitlab/ci/ctest_test_external.cmake
parent9893e159cc0f9ae61dc205d52192e1d1fe1ab532 (diff)
downloadCMake-e63fe4a58863e4a8fe6cee55e6ffd4324f5e10d4.zip
CMake-e63fe4a58863e4a8fe6cee55e6ffd4324f5e10d4.tar.gz
CMake-e63fe4a58863e4a8fe6cee55e6ffd4324f5e10d4.tar.bz2
ci: add a script to run the tests with an external CMake
Diffstat (limited to '.gitlab/ci/ctest_test_external.cmake')
-rw-r--r--.gitlab/ci/ctest_test_external.cmake66
1 files changed, 66 insertions, 0 deletions
diff --git a/.gitlab/ci/ctest_test_external.cmake b/.gitlab/ci/ctest_test_external.cmake
new file mode 100644
index 0000000..1e61d52
--- /dev/null
+++ b/.gitlab/ci/ctest_test_external.cmake
@@ -0,0 +1,66 @@
+cmake_minimum_required(VERSION 3.8)
+
+include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
+
+set(cmake_args
+ -C "${CMAKE_CURRENT_LIST_DIR}/configure_$ENV{CMAKE_CONFIGURATION}.cmake")
+
+# Create an entry in CDash.
+ctest_start(Experimental TRACK "${ctest_track}")
+
+# Gather update information.
+find_package(Git)
+set(CTEST_UPDATE_VERSION_ONLY ON)
+set(CTEST_UPDATE_COMMAND "${GIT_EXECUTABLE}")
+ctest_update()
+
+# Configure the project.
+ctest_configure(
+ OPTIONS "${cmake_args}"
+ RETURN_VALUE configure_result)
+
+# Read the files from the build directory.
+ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
+
+# We can now submit because we've configured. This is a cmb-superbuild-ism.
+ctest_submit(PARTS Update)
+ctest_submit(PARTS Configure)
+
+if (configure_result)
+ message(FATAL_ERROR
+ "Failed to configure")
+endif ()
+
+include(ProcessorCount)
+ProcessorCount(nproc)
+
+if (CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles")
+ set(CTEST_BUILD_FLAGS "-j${nproc}")
+endif ()
+
+ctest_build(
+ NUMBER_WARNINGS num_warnings
+ RETURN_VALUE build_result)
+ctest_submit(PARTS Build)
+
+if (build_result)
+ message(FATAL_ERROR
+ "Failed to build")
+endif ()
+
+if ("$ENV{CTEST_NO_WARNINGS_ALLOWED}" AND num_warnings GREATER 0)
+ message(FATAL_ERROR
+ "Found ${num_warnings} warnings (treating as fatal).")
+endif ()
+
+include("${CMAKE_CURRENT_LIST_DIR}/ctest_exclusions.cmake")
+ctest_test(
+ PARALLEL_LEVEL "${nproc}"
+ RETURN_VALUE test_result
+ EXCLUDE "${test_exclusions}")
+ctest_submit(PARTS Test)
+
+if (test_result)
+ message(FATAL_ERROR
+ "Failed to test")
+endif ()