diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-06-05 23:57:17 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-06-05 23:57:17 +0000 |
commit | 798651952788e52acaa841f61c3694e6e4a823cf (patch) | |
tree | 46ac580fcc5dc46cdd07495d817889451b852ce1 | |
parent | 412485d6659214285607aacd34ab2a25cfb6a67a (diff) |
Switch CMake testing over to use Daniels new(er) Python-based infrastructure.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72977 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | CMake/RunTests/CMakeLists.txt | 51 | ||||
-rw-r--r-- | CMake/RunTests/dummy.c | 1 | ||||
-rw-r--r-- | test/CMakeLists.txt | 80 | ||||
-rwxr-xr-x | utils/test/MultiTestRunner.py | 9 |
4 files changed, 54 insertions, 87 deletions
diff --git a/CMake/RunTests/CMakeLists.txt b/CMake/RunTests/CMakeLists.txt deleted file mode 100644 index fe838ef2ad..0000000000 --- a/CMake/RunTests/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# Project that runs the Clang regression tests for a given glob pattern. -# -# There are several CMake cache variabes that must be set for this -# project to work: -# -# CLANG_TEST_RUNNER: The TestRunner.sh shell script, which is used to test -# Clang. -# -# CLANG_TEST_GLOB_PATTERNS: Set to a GLOB pattern to identify the kind of -# tests, e.g., *.cpp for C++ tests. -# -# LLVM_TOOLS_PATH: The directory where the Clang and LLVM tool -# executables (such as opt) are generated. -# -# LLVM_SCRIPTS_PATH: The directory where the LLVM test scripts are -# located. -cmake_minimum_required(VERSION 2.6) -project(ClangTest) - -enable_testing() - -# Computes the normalized name of a test from its path name. -macro(compute_test_name var filename) - get_filename_component(test_name ${filename} NAME_WE) - get_filename_component(test_path ${filename} PATH) - get_filename_component(test_lastpath ${test_path} NAME_WE) - set(${var} "${test_lastpath}-${test_name}") -endmacro() - -# FIXME: This is a hack to make sure that there is a proper "clean" target. -# There must be a better way. -file(WRITE dummy.c "int dummy() { return 0; }") -add_library(dummy dummy.c) -set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "dummy.c") - -# Set the path appropriately -set(PATH $ENV{PATH}) -set(PATH "${LLVM_TOOLS_PATH}:${LLVM_SCRIPTS_PATH}:${PATH}") - -# Find the test files -string(REPLACE ":" ";" CLANG_TEST_GLOB_PATTERNS ${CLANG_TEST_GLOB_PATTERNS}) -separate_arguments(CLANG_TEST_GLOB_PATTERNS) -file(GLOB_RECURSE tests ${CLANG_TEST_GLOB_PATTERNS}) - -# Add individual tests for each file we found. -foreach(test ${tests}) - compute_test_name(testname ${test}) - add_test(${testname} ${CLANG_TEST_RUNNER} ${test}) - set_tests_properties(${testname} PROPERTIES - ENVIRONMENT "PATH=${PATH}") -endforeach(test ${tests})
\ No newline at end of file diff --git a/CMake/RunTests/dummy.c b/CMake/RunTests/dummy.c deleted file mode 100644 index ddba74f1c8..0000000000 --- a/CMake/RunTests/dummy.c +++ /dev/null @@ -1 +0,0 @@ -int dummy() { return 0; }
\ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cdf45712c3..ba5a025234 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,40 +2,52 @@ find_file(CLANG_TEST_RUNNER TestRunner.sh PATHS ${CMAKE_CURRENT_SOURCE_DIR} DOC "Clang's regression testing script") mark_as_advanced(CLANG_TEST_RUNNER) -get_target_property(LLVM_TOOLS_PATH clang RUNTIME_OUTPUT_DIRECTORY) +set(CLANG_TEST_DIRECTORIES + "Analysis" + "CodeGen" + "CodeGenCXX" + "CodeGenObjC" + "Coverage" + "Driver" + "FixIt" + "Frontend" + "Lexer" + "Misc" + "PCH" + "Parser" + "Preprocessor" + "Rewriter" + "Sema" + "SemaCXX" + "SemaObjC" + "SemaObjCXX" + "SemaTemplate") -macro(add_clang_test_suite language target) - set(PATTERNS) - foreach (extension ${ARGN}) - set(PATTERNS "${PATTERNS}:${CMAKE_CURRENT_SOURCE_DIR}/*.${extension}") - endforeach() - - if (${language} STREQUAL "ALL") - set(TEST_COMMENT "Running Clang regression tests") - else() - set(TEST_COMMENT "Running Clang ${language} regression tests") - endif () +include(FindPythonInterp) +if(PYTHONINTERP_FOUND) + get_target_property(LLVM_TOOLS_PATH clang RUNTIME_OUTPUT_DIRECTORY) + set(TESTING_EXTRA_PATHS + "${LLVM_TOOLS_PATH}/${CMAKE_CFG_INTDIR}:${LLVM_SOURCE_DIR}/test/Scripts") + set(all_testdirs) + foreach(testdir ${CLANG_TEST_DIRECTORIES}) + add_custom_target(clang-test-${testdir} + ${PYTHON_EXECUTABLE} + ${LLVM_SOURCE_DIR}/tools/clang/utils/test/MultiTestRunner.py + -s + "--path=${TESTING_EXTRA_PATHS}" + ${CMAKE_CURRENT_SOURCE_DIR}/${testdir}/ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Running Clang regression tests in ${testdir}") - add_custom_target(${target} - ${CMAKE_CTEST_COMMAND} - --build-and-test - ${LLVM_SOURCE_DIR}/tools/clang/CMake/RunTests - ${CMAKE_CURRENT_BINARY_DIR}/${target} - --build-generator ${CMAKE_GENERATOR} - --build-makeprogram ${CMAKE_MAKE_PROGRAM} - --build-project ClangTest - --build-target test - --build-options - "-DCLANG_TEST_RUNNER=${CLANG_TEST_RUNNER}" - "-DCLANG_TEST_GLOB_PATTERNS=${PATTERNS}" - "-DLLVM_TOOLS_PATH=${LLVM_TOOLS_PATH}" - "-DLLVM_SCRIPTS_PATH=${LLVM_SOURCE_DIR}/test/Scripts" - COMMENT ${TEST_COMMENT}) -endmacro(add_clang_test_suite) + list(APPEND all_testdirs ${CMAKE_CURRENT_SOURCE_DIR}/${testdir}/) + endforeach() -add_clang_test_suite(C clang-test-c c) -add_clang_test_suite(Objective-C clang-test-objc m) -add_clang_test_suite(C++ clang-test-cxx cpp) -add_clang_test_suite(Objective-C++ clang-test-objcxx mm) -add_clang_test_suite(Assembler clang-test-asm S) -add_clang_test_suite(ALL clang-test c m cpp mm S)
\ No newline at end of file + add_custom_target(clang-test + ${PYTHON_EXECUTABLE} + ${LLVM_SOURCE_DIR}/tools/clang/utils/test/MultiTestRunner.py + "--path=${TESTING_EXTRA_PATHS}" + ${all_testdirs} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS clang clang-cc + COMMENT "Running Clang regression tests") +endif() diff --git a/utils/test/MultiTestRunner.py b/utils/test/MultiTestRunner.py index 57650f9e27..5dde1bd775 100755 --- a/utils/test/MultiTestRunner.py +++ b/utils/test/MultiTestRunner.py @@ -249,6 +249,10 @@ def main(): parser.add_option("", "--debug-do-not-test", dest="debugDoNotTest", help="DEBUG: Skip running actual test script", action="store_true", default=False) + parser.add_option("", "--path", dest="path", + help="Additional paths to add to testing environment", + action="store", type=str, default=None) + (opts, args) = parser.parse_args() if not args: @@ -269,7 +273,10 @@ def main(): random.shuffle(tests) if opts.maxTests is not None: tests = tests[:opts.maxTests] - + if opts.path is not None: + os.environ["PATH"] = opts.path + ":" + os.environ["PATH"]; + print "Current PATH is: ", os.environ["PATH"] + extra = '' if len(tests) != len(allTests): extra = ' of %d'%(len(allTests),) |