aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-06-05 23:57:17 +0000
committerDouglas Gregor <dgregor@apple.com>2009-06-05 23:57:17 +0000
commit798651952788e52acaa841f61c3694e6e4a823cf (patch)
tree46ac580fcc5dc46cdd07495d817889451b852ce1
parent412485d6659214285607aacd34ab2a25cfb6a67a (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.txt51
-rw-r--r--CMake/RunTests/dummy.c1
-rw-r--r--test/CMakeLists.txt80
-rwxr-xr-xutils/test/MultiTestRunner.py9
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),)