Преглед изворни кода

Tests: Add additional launcher tests

Modify the launcher test to also try to build two executables, having
respectively build and link errors. This is intended to test that
launchers are used when running compile and link commands, as well as
custom commands. (In particular, this should catch breakage such as that
fixed by ce71bd9505a.)
Matthew Woehlke пре 9 година
родитељ
комит
4b0c13a87f

+ 7 - 0
Tests/CTestTestLaunchers/launcher_compiler_test_project/CMakeLists.txt

@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(launcher_compiler_test_project)
+
+include(CTest)
+
+add_executable(build_error build_error.cxx)

+ 0 - 0
Tests/CTestTestLaunchers/launcher_test_project/CTestConfig.cmake → Tests/CTestTestLaunchers/launcher_compiler_test_project/CTestConfig.cmake


+ 5 - 0
Tests/CTestTestLaunchers/launcher_compiler_test_project/build_error.cxx

@@ -0,0 +1,5 @@
+int main()
+{
+  int = 3;
+  return;
+}

+ 1 - 1
Tests/CTestTestLaunchers/launcher_test_project/CMakeLists.txt → Tests/CTestTestLaunchers/launcher_custom_command_test_project/CMakeLists.txt

@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.8.12)
 
-project(launcher_test_project)
+project(launcher_custom_command_test_project)
 
 include(CTest)
 

+ 8 - 0
Tests/CTestTestLaunchers/launcher_custom_command_test_project/CTestConfig.cmake

@@ -0,0 +1,8 @@
+set(CTEST_USE_LAUNCHERS 1)
+set(CTEST_PROJECT_NAME "CTestTestLaunchers")
+set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
+set(CTEST_DART_SERVER_VERSION "2")
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "open.cdash.org")
+set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
+set(CTEST_DROP_SITE_CDASH TRUE)

+ 0 - 0
Tests/CTestTestLaunchers/launcher_test_project/command.cmake → Tests/CTestTestLaunchers/launcher_custom_command_test_project/command.cmake


+ 7 - 0
Tests/CTestTestLaunchers/launcher_linker_test_project/CMakeLists.txt

@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(launcher_linker_test_project)
+
+include(CTest)
+
+add_executable(link_error link_error.cxx)

+ 8 - 0
Tests/CTestTestLaunchers/launcher_linker_test_project/CTestConfig.cmake

@@ -0,0 +1,8 @@
+set(CTEST_USE_LAUNCHERS 1)
+set(CTEST_PROJECT_NAME "CTestTestLaunchers")
+set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
+set(CTEST_DART_SERVER_VERSION "2")
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "open.cdash.org")
+set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
+set(CTEST_DROP_SITE_CDASH TRUE)

+ 6 - 0
Tests/CTestTestLaunchers/launcher_linker_test_project/link_error.cxx

@@ -0,0 +1,6 @@
+extern int foo();
+
+int main()
+{
+  return foo();
+}

+ 46 - 34
Tests/CTestTestLaunchers/test.cmake.in

@@ -1,39 +1,51 @@
 cmake_minimum_required(VERSION 2.8.12)
 
-# Settings:
-set(CTEST_DASHBOARD_SOURCE              "@CMake_SOURCE_DIR@/Tests/CTestTestLaunchers")
-set(CTEST_DASHBOARD_ROOT                "@CMake_BINARY_DIR@/Tests/CTestTestLaunchers")
-set(CTEST_SITE                          "@SITE@")
-set(CTEST_BUILD_NAME                    "Launchers-@BUILDNAME@-CTestTestLaunchers")
-
-set(CTEST_SOURCE_DIRECTORY              "${CTEST_DASHBOARD_SOURCE}/launcher_test_project")
-set(CTEST_BINARY_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/launcher_test_project-bin")
-set(CTEST_CMAKE_GENERATOR               "@CMAKE_GENERATOR@")
-set(CTEST_CMAKE_GENERATOR_PLATFORM      "@CMAKE_GENERATOR_PLATFORM@")
-set(CTEST_CMAKE_GENERATOR_TOOLSET       "@CMAKE_GENERATOR_TOOLSET@")
-set(CTEST_BUILD_CONFIGURATION           "$ENV{CMAKE_CONFIG_TYPE}")
-set(CTEST_NOTES_FILES                   "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
-
-ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
-
-file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
-CMAKE_CXX_FLAGS:STRING=@CMAKE_CXX_FLAGS@
-CMAKE_C_FLAGS:STRING=@CMAKE_C_FLAGS@
-CMAKE_C_COMPILER:STRING=@CMAKE_C_COMPILER@
-CMAKE_CXX_COMPILER:STRING=@CMAKE_CXX_COMPILER@
-CMAKE_C_COMPILER_ARG1:STRING=@CMAKE_C_COMPILER_ARG1@
-CMAKE_CXX_COMPILER_ARG1:STRING=@CMAKE_CXX_COMPILER_ARG1@
-")
-
-set(TEST_SUCCESS FALSE)
-
-ctest_start(Experimental)
-ctest_configure(OPTIONS "-DCTEST_USE_LAUNCHERS=1")
-ctest_build(NUMBER_ERRORS error_count)
-
-if("${error_count}" STREQUAL "1")
-  set(TEST_SUCCESS TRUE)
-endif()
+set(TEST_SUCCESS TRUE)
+
+function(run_test_case NAME WHAT)
+  set(_message "Testing that launchers are used when running ${WHAT}")
+  message(STATUS "${_message}...")
+
+  # Settings:
+  set(CTEST_DASHBOARD_SOURCE              "@CMake_SOURCE_DIR@/Tests/CTestTestLaunchers")
+  set(CTEST_DASHBOARD_ROOT                "@CMake_BINARY_DIR@/Tests/CTestTestLaunchers")
+  set(CTEST_SITE                          "@SITE@")
+  set(CTEST_BUILD_NAME                    "Launchers-@BUILDNAME@-CTestTestLaunchers")
+
+  set(CTEST_SOURCE_DIRECTORY              "${CTEST_DASHBOARD_SOURCE}/${NAME}")
+  set(CTEST_BINARY_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/${NAME}-bin")
+  set(CTEST_CMAKE_GENERATOR               "@CMAKE_GENERATOR@")
+  set(CTEST_CMAKE_GENERATOR_PLATFORM      "@CMAKE_GENERATOR_PLATFORM@")
+  set(CTEST_CMAKE_GENERATOR_TOOLSET       "@CMAKE_GENERATOR_TOOLSET@")
+  set(CTEST_BUILD_CONFIGURATION           "$ENV{CMAKE_CONFIG_TYPE}")
+  set(CTEST_NOTES_FILES                   "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
+
+  ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
+
+  file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
+  CMAKE_CXX_FLAGS:STRING=@CMAKE_CXX_FLAGS@
+  CMAKE_C_FLAGS:STRING=@CMAKE_C_FLAGS@
+  CMAKE_C_COMPILER:STRING=@CMAKE_C_COMPILER@
+  CMAKE_CXX_COMPILER:STRING=@CMAKE_CXX_COMPILER@
+  CMAKE_C_COMPILER_ARG1:STRING=@CMAKE_C_COMPILER_ARG1@
+  CMAKE_CXX_COMPILER_ARG1:STRING=@CMAKE_CXX_COMPILER_ARG1@
+  ")
+
+  ctest_start(Experimental)
+  ctest_configure(OPTIONS "-DCTEST_USE_LAUNCHERS=1")
+  ctest_build(NUMBER_ERRORS error_count)
+
+  if("${error_count}" STREQUAL "0")
+    set(TEST_SUCCESS FALSE PARENT_SCOPE)
+    message(STATUS "${_message}... FAIL")
+  else()
+    message(STATUS "${_message}... PASS")
+  endif()
+endfunction()
+
+run_test_case(launcher_compiler_test_project "the compiler")
+run_test_case(launcher_linker_test_project "the linker")
+run_test_case(launcher_custom_command_test_project "a custom command")
 
 if(TEST_SUCCESS)
   message("CTEST_TEST_LAUNCHER_SUCCESS")