diff options
author | David Cole <david.cole@kitware.com> | 2008-11-26 19:38:43 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2008-11-26 19:38:43 (GMT) |
commit | ceaef94cccf10a02e1bcce29d3cfa6955acf4565 (patch) | |
tree | a0cbd04050fee7082c6e3e3ad38c73877fa6f806 /Tests | |
parent | 003dbff85d58d6fc2668f2e1819b413a6357b2bc (diff) | |
download | CMake-ceaef94cccf10a02e1bcce29d3cfa6955acf4565.zip CMake-ceaef94cccf10a02e1bcce29d3cfa6955acf4565.tar.gz CMake-ceaef94cccf10a02e1bcce29d3cfa6955acf4565.tar.bz2 |
ENH: Implement feature request from issue 7885. Allow setting environment variables on a per-test basis for ctest using set_test_properties ENVIRONMENT.
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/CMakeLists.txt | 13 | ||||
-rw-r--r-- | Tests/Environment/CMakeLists.txt | 26 | ||||
-rw-r--r-- | Tests/Environment/main.cxx | 16 |
3 files changed, 55 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 1035427..05dafb0 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -497,6 +497,19 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel ) LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Example") + ADD_TEST(Environment ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMake_SOURCE_DIR}/Tests/Environment" + "${CMake_BINARY_DIR}/Tests/Environment" + --build-generator ${CMAKE_TEST_GENERATOR} + --build-project EnvironmentProj + --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} + --build-exe-dir "${CMake_BINARY_DIR}/Tests/Environment" + --force-new-ctest-process + --test-command ${CMAKE_CTEST_COMMAND} -VV + ) + LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Environment") + # do each of the tutorial steps FOREACH(STP RANGE 1 7) ADD_TEST(TutorialStep${STP} ${CMAKE_CTEST_COMMAND} diff --git a/Tests/Environment/CMakeLists.txt b/Tests/Environment/CMakeLists.txt new file mode 100644 index 0000000..2b18d24 --- /dev/null +++ b/Tests/Environment/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 2.6) +project(EnvironmentProj) + +add_executable(Environment main.cxx) + +enable_testing() + +add_test(Environment1 Environment) +add_test(Environment2 Environment) +add_test(EchoEnvironment1 ${CMAKE_COMMAND} -E environment) +add_test(EchoEnvironment2 ${CMAKE_COMMAND} -E environment) + +# Make sure "CMAKE_ENV.*Happy Thanksgiving" is in the output of +# the "1" tests: +# +set_tests_properties(Environment1 EchoEnvironment1 PROPERTIES + ENVIRONMENT "CMAKE_ENVIRONMENT_TEST_VAR=Happy Thanksgiving!" + PASS_REGULAR_EXPRESSION "CMAKE_ENV.*Happy Thanksgiving" +) + +# Make sure "CMAKE_ENV.*Happy Thanksgiving" is *NOT* in the output of +# the "2" tests: +# +set_tests_properties(Environment2 EchoEnvironment2 PROPERTIES + FAIL_REGULAR_EXPRESSION "CMAKE_ENV.*Happy Thanksgiving" +) diff --git a/Tests/Environment/main.cxx b/Tests/Environment/main.cxx new file mode 100644 index 0000000..2e1bf4c --- /dev/null +++ b/Tests/Environment/main.cxx @@ -0,0 +1,16 @@ +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char *argv[]) +{ + char* var = getenv("CMAKE_ENVIRONMENT_TEST_VAR"); + if (!var) + { + var = "(null)"; + } + + fprintf(stdout, "Environment:\n"); + fprintf(stdout, " CMAKE_ENVIRONMENT_TEST_VAR='%s'\n", var); + + return 0; +} |