diff options
-rw-r--r-- | llvm/cmake/modules/AddLLVM.cmake | 18 | ||||
-rw-r--r-- | llvm/test/CMakeLists.txt | 16 | ||||
-rw-r--r-- | llvm/test/Unit/lit.cfg.py (renamed from llvm/test/Unit/lit.cfg) | 0 | ||||
-rw-r--r-- | llvm/test/Unit/lit.site.cfg.py.in (renamed from llvm/test/Unit/lit.site.cfg.in) | 2 | ||||
-rw-r--r-- | llvm/test/lit.cfg.py (renamed from llvm/test/lit.cfg) | 0 | ||||
-rw-r--r-- | llvm/test/lit.site.cfg.py.in (renamed from llvm/test/lit.site.cfg.in) | 2 | ||||
-rw-r--r-- | llvm/utils/lit/lit/LitConfig.py | 7 | ||||
-rw-r--r-- | llvm/utils/lit/lit/discovery.py | 21 | ||||
-rw-r--r-- | llvm/utils/lit/tests/Inputs/py-config-discovery/lit.site.cfg.py | 5 | ||||
-rw-r--r-- | llvm/utils/lit/tests/discovery.py | 28 |
10 files changed, 72 insertions, 27 deletions
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 7c26e396caf..f328e049764 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -1112,7 +1112,13 @@ endfunction(llvm_canonicalize_cmake_booleans) # variables needed for the 'lit.site.cfg' files. This function bundles the # common variables that any Lit instance is likely to need, and custom # variables can be passed in. -function(configure_lit_site_cfg input output) +function(configure_lit_site_cfg site_in site_out) + cmake_parse_arguments(ARG "" "" "MAIN_CONFIG" ${ARGN}) + + if ("${ARG_MAIN_CONFIG}" STREQUAL "") + set(ARG_MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg") + endif() + foreach(c ${LLVM_TARGETS_TO_BUILD}) set(TARGETS_BUILT "${TARGETS_BUILT} ${c}") endforeach(c) @@ -1158,7 +1164,7 @@ function(configure_lit_site_cfg input output) set(HOST_CXX "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}") set(HOST_LDFLAGS "${CMAKE_EXE_LINKER_FLAGS}") - set(LIT_SITE_CFG_IN_HEADER "## Autogenerated from ${input}\n## Do not edit!") + set(LIT_SITE_CFG_IN_HEADER "## Autogenerated from ${site_in}\n## Do not edit!") # Override config_target_triple (and the env) if(LLVM_TARGET_TRIPLE_ENV) @@ -1177,10 +1183,10 @@ function(configure_lit_site_cfg input output) "import lit.llvm\n" "lit.llvm.initialize(lit_config, config)\n") - configure_file(${input} ${output} @ONLY) - get_filename_component(INPUT_DIR ${input} DIRECTORY) - if (EXISTS "${INPUT_DIR}/lit.cfg") - set(PYTHON_STATEMENT "map_config('${INPUT_DIR}/lit.cfg', '${output}')") + configure_file(${site_in} ${site_out} @ONLY) + get_filename_component(INPUT_DIR ${site_in} DIRECTORY) + if (EXISTS "${ARG_MAIN_CONFIG}") + set(PYTHON_STATEMENT "map_config('${ARG_MAIN_CONFIG}', '${site_out}')") get_property(LLVM_LIT_CONFIG_MAP GLOBAL PROPERTY LLVM_LIT_CONFIG_MAP) set(LLVM_LIT_CONFIG_MAP "${LLVM_LIT_CONFIG_MAP}\n${PYTHON_STATEMENT}") set_property(GLOBAL PROPERTY LLVM_LIT_CONFIG_MAP ${LLVM_LIT_CONFIG_MAP}) diff --git a/llvm/test/CMakeLists.txt b/llvm/test/CMakeLists.txt index 28bec84989f..33e5da0eb1b 100644 --- a/llvm/test/CMakeLists.txt +++ b/llvm/test/CMakeLists.txt @@ -11,12 +11,16 @@ llvm_canonicalize_cmake_booleans( BUILD_SHARED_LIBS) configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in - ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py + MAIN_CONFIG + ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py ) configure_lit_site_cfg( - ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in - ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg + ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py + MAIN_CONFIG + ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py ) # Don't include check-llvm into check-all without LLVM_BUILD_TOOLS. @@ -148,15 +152,11 @@ set_target_properties(llvm-test-depends PROPERTIES FOLDER "Tests") add_lit_testsuite(check-llvm "Running the LLVM regression tests" ${CMAKE_CURRENT_BINARY_DIR} - PARAMS llvm_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg - llvm_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg DEPENDS ${LLVM_TEST_DEPENDS} ) set_target_properties(check-llvm PROPERTIES FOLDER "Tests") add_lit_testsuites(LLVM ${CMAKE_CURRENT_SOURCE_DIR} - PARAMS llvm_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg - llvm_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg DEPENDS ${LLVM_TEST_DEPENDS} ) diff --git a/llvm/test/Unit/lit.cfg b/llvm/test/Unit/lit.cfg.py index 609408d1dd8..609408d1dd8 100644 --- a/llvm/test/Unit/lit.cfg +++ b/llvm/test/Unit/lit.cfg.py diff --git a/llvm/test/Unit/lit.site.cfg.in b/llvm/test/Unit/lit.site.cfg.py.in index 9d736f473ce..1fef001be62 100644 --- a/llvm/test/Unit/lit.site.cfg.in +++ b/llvm/test/Unit/lit.site.cfg.py.in @@ -20,4 +20,4 @@ except KeyError: lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key)) # Let the main config do the real work. -lit_config.load_config(config, "@LLVM_SOURCE_DIR@/test/Unit/lit.cfg") +lit_config.load_config(config, "@LLVM_SOURCE_DIR@/test/Unit/lit.cfg.py") diff --git a/llvm/test/lit.cfg b/llvm/test/lit.cfg.py index 87e2a06e387..87e2a06e387 100644 --- a/llvm/test/lit.cfg +++ b/llvm/test/lit.cfg.py diff --git a/llvm/test/lit.site.cfg.in b/llvm/test/lit.site.cfg.py.in index a45a000624c..45f265afb97 100644 --- a/llvm/test/lit.site.cfg.in +++ b/llvm/test/lit.site.cfg.py.in @@ -55,4 +55,4 @@ except KeyError: @LIT_SITE_CFG_IN_FOOTER@ # Let the main config do the real work. -lit_config.load_config(config, "@LLVM_SOURCE_DIR@/test/lit.cfg") +lit_config.load_config(config, "@LLVM_SOURCE_DIR@/test/lit.cfg.py") diff --git a/llvm/utils/lit/lit/LitConfig.py b/llvm/utils/lit/lit/LitConfig.py index fbb04dc4e6f..389e5652e9b 100644 --- a/llvm/utils/lit/lit/LitConfig.py +++ b/llvm/utils/lit/lit/LitConfig.py @@ -44,9 +44,10 @@ class LitConfig(object): # Configuration files to look for when discovering test suites. self.config_prefix = config_prefix or 'lit' - self.config_name = '%s.cfg' % (self.config_prefix,) - self.site_config_name = '%s.site.cfg' % (self.config_prefix,) - self.local_config_name = '%s.local.cfg' % (self.config_prefix,) + self.suffixes = ['cfg.py', 'cfg'] + self.config_names = ['%s.%s' % (self.config_prefix,x) for x in self.suffixes] + self.site_config_names = ['%s.site.%s' % (self.config_prefix,x) for x in self.suffixes] + self.local_config_names = ['%s.local.%s' % (self.config_prefix,x) for x in self.suffixes] self.numErrors = 0 self.numWarnings = 0 diff --git a/llvm/utils/lit/lit/discovery.py b/llvm/utils/lit/lit/discovery.py index e276829db39..66c1181017a 100644 --- a/llvm/utils/lit/lit/discovery.py +++ b/llvm/utils/lit/lit/discovery.py @@ -10,13 +10,18 @@ import lit.run from lit.TestingConfig import TestingConfig from lit import LitConfig, Test +def chooseConfigFileFromDir(dir, config_names): + for name in config_names: + p = os.path.join(dir, name) + if os.path.exists(p): + return p + return None + def dirContainsTestSuite(path, lit_config): - cfgpath = os.path.join(path, lit_config.site_config_name) - if os.path.exists(cfgpath): - return cfgpath - cfgpath = os.path.join(path, lit_config.config_name) - if os.path.exists(cfgpath): - return cfgpath + cfgpath = chooseConfigFileFromDir(path, lit_config.site_config_names) + if not cfgpath: + cfgpath = chooseConfigFileFromDir(path, lit_config.config_names) + return cfgpath def getTestSuite(item, litConfig, cache): """getTestSuite(item, litConfig, cache) -> (suite, relative_path) @@ -99,10 +104,10 @@ def getLocalConfig(ts, path_in_suite, litConfig, cache): # Check if there is a local configuration file. source_path = ts.getSourcePath(path_in_suite) - cfgpath = os.path.join(source_path, litConfig.local_config_name) + cfgpath = chooseConfigFileFromDir(source_path, litConfig.local_config_names) # If not, just reuse the parent config. - if not os.path.exists(cfgpath): + if not cfgpath: return parent # Otherwise, copy the current config and load the local configuration diff --git a/llvm/utils/lit/tests/Inputs/py-config-discovery/lit.site.cfg.py b/llvm/utils/lit/tests/Inputs/py-config-discovery/lit.site.cfg.py new file mode 100644 index 00000000000..ac273c797c5 --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/py-config-discovery/lit.site.cfg.py @@ -0,0 +1,5 @@ +# Load the discovery suite, but with a separate exec root. +import os +config.test_exec_root = os.path.dirname(__file__) +config.test_source_root = os.path.join(os.path.dirname(config.test_exec_root), "discovery") +lit_config.load_config(config, os.path.join(config.test_source_root, "lit.cfg")) diff --git a/llvm/utils/lit/tests/discovery.py b/llvm/utils/lit/tests/discovery.py index 7d71436b0fe..ba5247337a8 100644 --- a/llvm/utils/lit/tests/discovery.py +++ b/llvm/utils/lit/tests/discovery.py @@ -38,6 +38,34 @@ # CHECK-EXACT-TEST: sub-suite :: test-one # CHECK-EXACT-TEST: top-level-suite :: subdir/test-three +# Check discovery when config files end in .py +# RUN: %{lit} %{inputs}/py-config-discovery \ +# RUN: -j 1 --debug --show-tests --show-suites \ +# RUN: -v > %t.out 2> %t.err +# RUN: FileCheck --check-prefix=CHECK-PYCONFIG-OUT < %t.out %s +# RUN: FileCheck --check-prefix=CHECK-PYCONFIG-ERR < %t.err %s +# +# CHECK-PYCONFIG-ERR: loading suite config '{{.*(/|\\\\)py-config-discovery(/|\\\\)lit.site.cfg.py}}' +# CHECK-PYCONFIG-ERR: load_config from '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}' +# CHECK-PYCONFIG-ERR: loaded config '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}' +# CHECK-PYCONFIG-ERR: loaded config '{{.*(/|\\\\)py-config-discovery(/|\\\\)lit.site.cfg.py}}' +# CHECK-PYCONFIG-ERR-DAG: loading suite config '{{.*(/|\\\\)discovery(/|\\\\)subsuite(/|\\\\)lit.cfg}}' +# CHECK-PYCONFIG-ERR-DAG: loading local config '{{.*(/|\\\\)discovery(/|\\\\)subdir(/|\\\\)lit.local.cfg}}' +# +# CHECK-PYCONFIG-OUT: -- Test Suites -- +# CHECK-PYCONFIG-OUT: sub-suite - 2 tests +# CHECK-PYCONFIG-OUT: Source Root: {{.*[/\\]discovery[/\\]subsuite$}} +# CHECK-PYCONFIG-OUT: Exec Root : {{.*[/\\]discovery[/\\]subsuite$}} +# CHECK-PYCONFIG-OUT: top-level-suite - 3 tests +# CHECK-PYCONFIG-OUT: Source Root: {{.*[/\\]discovery$}} +# CHECK-PYCONFIG-OUT: Exec Root : {{.*[/\\]py-config-discovery$}} +# +# CHECK-PYCONFIG-OUT: -- Available Tests -- +# CHECK-PYCONFIG-OUT: sub-suite :: test-one +# CHECK-PYCONFIG-OUT: sub-suite :: test-two +# CHECK-PYCONFIG-OUT: top-level-suite :: subdir/test-three +# CHECK-PYCONFIG-OUT: top-level-suite :: test-one +# CHECK-PYCONFIG-OUT: top-level-suite :: test-two # Check discovery when using an exec path. # |