summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/cmake/modules/AddLLVM.cmake18
-rw-r--r--llvm/test/CMakeLists.txt16
-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.py7
-rw-r--r--llvm/utils/lit/lit/discovery.py21
-rw-r--r--llvm/utils/lit/tests/Inputs/py-config-discovery/lit.site.cfg.py5
-rw-r--r--llvm/utils/lit/tests/discovery.py28
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.
#
OpenPOWER on IntegriCloud