summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2011-06-16 01:33:35 +0000
committerAndrew Trick <atrick@apple.com>2011-06-16 01:33:35 +0000
commit05c087d8934168f6dda429de5b0925a7be0cc9a3 (patch)
tree631a9da577f5eb8b8388c51c5155dacd0ae9a903
parent6fce128dd1e160a5d2d11cddec336686ff1f8706 (diff)
downloadllvm-05c087d8934168f6dda429de5b0925a7be0cc9a3.tar.gz
llvm-05c087d8934168f6dda429de5b0925a7be0cc9a3.tar.bz2
llvm-05c087d8934168f6dda429de5b0925a7be0cc9a3.tar.xz
Add support to lit for build mode requirements. e.g.
REQUIRES: Asserts REQUIRES: Debug This required chaining test configuration properties. It seems like a generally good thing to do. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133131 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Makefile1
-rw-r--r--test/lit.site.cfg.in2
-rw-r--r--utils/lit/lit/TestRunner.py6
-rw-r--r--utils/lit/lit/TestingConfig.py7
4 files changed, 13 insertions, 3 deletions
diff --git a/test/Makefile b/test/Makefile
index 0d84186b1e..e38226a468 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -176,6 +176,7 @@ lit.site.cfg: site.exp
@$(ECHOPATH) s=@LLVM_SOURCE_DIR@=$(LLVM_SRC_ROOT)=g > lit.tmp
@$(ECHOPATH) s=@LLVM_BINARY_DIR@=$(LLVM_OBJ_ROOT)=g >> lit.tmp
@$(ECHOPATH) s=@LLVM_TOOLS_DIR@=$(ToolDir)=g >> lit.tmp
+ @$(ECHOPATH) s=@LLVM_BUILD_MODE@=$(BuildMode)=g >> lit.tmp
@$(ECHOPATH) s=@LLVMGCCDIR@=$(LLVMGCCDIR)=g >> lit.tmp
@$(ECHOPATH) s=@PYTHON_EXECUTABLE@=python=g >> lit.tmp
@$(ECHOPATH) s=@ENABLE_SHARED@=$(ENABLE_SHARED)=g >> lit.tmp
diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in
index 3588aa6245..5931a1c961 100644
--- a/test/lit.site.cfg.in
+++ b/test/lit.site.cfg.in
@@ -4,7 +4,7 @@ config.llvm_src_root = "@LLVM_SOURCE_DIR@"
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
config.llvmgcc_dir = "@LLVMGCCDIR@"
-config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
+config.llvm_build_modes = "@LLVM_BUILD_MODE@".split('+')
config.python_executable = "@PYTHON_EXECUTABLE@"
config.enable_shared = @ENABLE_SHARED@
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
index 80d0ba1183..83603cc798 100644
--- a/utils/lit/lit/TestRunner.py
+++ b/utils/lit/lit/TestRunner.py
@@ -473,9 +473,11 @@ def parseIntegratedTestScript(test, normalize_slashes=False):
if script[-1][-1] == '\\':
return (Test.UNRESOLVED, "Test has unterminated run lines (with '\\')")
- # Check that we have the required features:
+ # Check that we have the required features or build modes:
missing_required_features = [f for f in requires
- if f not in test.config.available_features]
+ if f not in test.config.available_features
+ and f not in test.config.llvm_build_modes]
+
if missing_required_features:
msg = ', '.join(missing_required_features)
return (Test.UNSUPPORTED,
diff --git a/utils/lit/lit/TestingConfig.py b/utils/lit/lit/TestingConfig.py
index 25bb3417de..2d8d3d0165 100644
--- a/utils/lit/lit/TestingConfig.py
+++ b/utils/lit/lit/TestingConfig.py
@@ -74,6 +74,7 @@ class TestingConfig:
def clone(self, path):
# FIXME: Chain implementations?
+ # See attribute chaining in finish()
#
# FIXME: Allow extra parameters?
cfg = TestingConfig(self, self.name, self.suffixes, self.test_format,
@@ -101,3 +102,9 @@ class TestingConfig:
# files. Should we distinguish them?
self.test_source_root = str(self.test_source_root)
self.excludes = set(self.excludes)
+
+ # chain attributes by copying them
+ if self.parent:
+ for k,v in vars(self.parent).items():
+ if not hasattr(self, k):
+ setattr(self, k, v)