|
|
@@ -0,0 +1,45 @@
|
|
|
+cmake_minimum_required(VERSION 3.8)
|
|
|
+
|
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/gitlab_ci.cmake")
|
|
|
+
|
|
|
+# Read the files from the build directory.
|
|
|
+ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
|
|
|
+
|
|
|
+# Pick up from where the configure left off.
|
|
|
+ctest_start(APPEND)
|
|
|
+
|
|
|
+include(ProcessorCount)
|
|
|
+ProcessorCount(nproc)
|
|
|
+if (NOT "$ENV{CTEST_MAX_PARALLELISM}" STREQUAL "")
|
|
|
+ if (nproc GREATER "$ENV{CTEST_MAX_PARALLELISM}")
|
|
|
+ set(nproc "$ENV{CTEST_MAX_PARALLELISM}")
|
|
|
+ endif ()
|
|
|
+endif ()
|
|
|
+
|
|
|
+set(CTEST_MEMORYCHECK_TYPE "$ENV{CTEST_MEMORYCHECK_TYPE}")
|
|
|
+set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS "$ENV{CTEST_MEMORYCHECK_SANITIZER_OPTIONS}")
|
|
|
+
|
|
|
+set(lsan_suppressions "${CMAKE_CURRENT_LIST_DIR}/ctest_memcheck_$ENV{CMAKE_CONFIGURATION}.lsan.supp")
|
|
|
+if (EXISTS "${lsan_suppressions}")
|
|
|
+ set(ENV{LSAN_OPTIONS} "suppressions='${lsan_suppressions}'")
|
|
|
+endif ()
|
|
|
+
|
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/ctest_exclusions.cmake")
|
|
|
+ctest_memcheck(
|
|
|
+ PARALLEL_LEVEL "${nproc}"
|
|
|
+ TEST_LOAD "${nproc}"
|
|
|
+ RETURN_VALUE test_result
|
|
|
+ EXCLUDE "${test_exclusions}"
|
|
|
+ DEFECT_COUNT defects)
|
|
|
+ctest_submit(PARTS Test)
|
|
|
+ctest_submit(PARTS Memcheck)
|
|
|
+
|
|
|
+if (test_result)
|
|
|
+ message(FATAL_ERROR
|
|
|
+ "Failed to test")
|
|
|
+endif ()
|
|
|
+
|
|
|
+if (defects)
|
|
|
+ message(FATAL_ERROR
|
|
|
+ "Found ${defects} memcheck defects")
|
|
|
+endif ()
|