lit: Allow configurations to restrict the set of tests to run
authorArnold Schwaighofer <aschwaighofer@apple.com>
Mon, 1 Jun 2015 17:50:03 +0000 (17:50 +0000)
committerArnold Schwaighofer <aschwaighofer@apple.com>
Mon, 1 Jun 2015 17:50:03 +0000 (17:50 +0000)
By setting limit_to_features to a non empty list of features a configuration can
restrict the set of tests to run to only include tests that require a feature in
this list.

rdar://21082253

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238766 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py
utils/lit/lit/TestingConfig.py

index f1734eca37263f36ac060e1c42a59bd580836ee5..70382b472f5c8fb7251320e85cff6ade311c58f0 100644 (file)
@@ -513,6 +513,15 @@ def parseIntegratedTestScript(test, normalize_slashes=False,
         return lit.Test.Result(Test.UNSUPPORTED,
                     "Test is unsupported with the following features: %s" % msg)
 
+    if test.config.limit_to_features:
+        # Check that we have one of the limit_to_features features in requires.
+        limit_to_features_tests = [f for f in test.config.limit_to_features
+                                   if f in requires]
+        if not limit_to_features_tests:
+            msg = ', '.join(test.config.limit_to_features)
+            return lit.Test.Result(Test.UNSUPPORTED,
+                 "Test requires one of the limit_to_features features %s" % msg)
+
     return script,tmpBase,execdir
 
 def _runShTest(test, litConfig, useExternalSh,
index c7ef94dc11fa91d512c0bc0c4b78c124859f7f1d..1d51c1cee97b04eb041c2a6831f8d19ee4afa447 100644 (file)
@@ -118,7 +118,7 @@ class TestingConfig:
     def __init__(self, parent, name, suffixes, test_format,
                  environment, substitutions, unsupported,
                  test_exec_root, test_source_root, excludes,
-                 available_features, pipefail):
+                 available_features, pipefail, limit_to_features = []):
         self.parent = parent
         self.name = str(name)
         self.suffixes = set(suffixes)
@@ -131,6 +131,10 @@ class TestingConfig:
         self.excludes = set(excludes)
         self.available_features = set(available_features)
         self.pipefail = pipefail
+        # This list is used by TestRunner.py to restrict running only tests that
+        # require one of the features in this list if this list is non-empty.
+        # Configurations can set this list to restrict the set of tests to run.
+        self.limit_to_features = set(limit_to_features)
 
     def finish(self, litConfig):
         """finish() - Finish this config object, after loading is complete."""