From 05c087d8934168f6dda429de5b0925a7be0cc9a3 Mon Sep 17 00:00:00 2001 From: Andrew Trick Date: Thu, 16 Jun 2011 01:33:35 +0000 Subject: 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 --- test/Makefile | 1 + test/lit.site.cfg.in | 2 +- utils/lit/lit/TestRunner.py | 6 ++++-- utils/lit/lit/TestingConfig.py | 7 +++++++ 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) -- cgit v1.2.3