summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/lit/lit/TestRunner.py12
-rw-r--r--llvm/utils/lit/tests/Inputs/shtest-format/requires-any-missing.txt2
-rw-r--r--llvm/utils/lit/tests/Inputs/shtest-format/requires-any-present.txt2
-rw-r--r--llvm/utils/lit/tests/shtest-format.py6
4 files changed, 19 insertions, 3 deletions
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 38224add85a..3f02420572a 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -616,8 +616,10 @@ def parseIntegratedTestScript(test, require_script=True):
sourcepath = test.getSourcePath()
script = []
requires = []
+ requires_any = []
unsupported = []
- keywords = ['RUN:', 'XFAIL:', 'REQUIRES:', 'UNSUPPORTED:', 'END.']
+ keywords = ['RUN:', 'XFAIL:', 'REQUIRES:', 'REQUIRES-ANY:',
+ 'UNSUPPORTED:', 'END.']
for line_number, command_type, ln in \
parseIntegratedTestScriptCommands(sourcepath, keywords):
if command_type == 'RUN':
@@ -642,6 +644,8 @@ def parseIntegratedTestScript(test, require_script=True):
test.xfails.extend([s.strip() for s in ln.split(',')])
elif command_type == 'REQUIRES':
requires.extend([s.strip() for s in ln.split(',')])
+ elif command_type == 'REQUIRES-ANY':
+ requires_any.extend([s.strip() for s in ln.split(',')])
elif command_type == 'UNSUPPORTED':
unsupported.extend([s.strip() for s in ln.split(',')])
elif command_type == 'END':
@@ -668,6 +672,12 @@ def parseIntegratedTestScript(test, require_script=True):
msg = ', '.join(missing_required_features)
return lit.Test.Result(Test.UNSUPPORTED,
"Test requires the following features: %s" % msg)
+ requires_any_features = [f for f in requires_any
+ if f in test.config.available_features]
+ if requires_any and not requires_any_features:
+ msg = ' ,'.join(requires_any)
+ return lit.Test.Result(Test.UNSUPPORTED,
+ "Test requires any of the following features: %s" % msg)
unsupported_features = [f for f in unsupported
if f in test.config.available_features]
if unsupported_features:
diff --git a/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-missing.txt b/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-missing.txt
new file mode 100644
index 00000000000..c977ee90c9e
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-missing.txt
@@ -0,0 +1,2 @@
+RUN: true
+REQUIRES-ANY: a-missing-feature, a-missing-feature-2
diff --git a/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-present.txt b/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-present.txt
new file mode 100644
index 00000000000..f3be518b258
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/shtest-format/requires-any-present.txt
@@ -0,0 +1,2 @@
+RUN: true
+REQUIRES-ANY: a-missing-feature, a-present-feature
diff --git a/llvm/utils/lit/tests/shtest-format.py b/llvm/utils/lit/tests/shtest-format.py
index 751f0d70803..39b0e9c9c62 100644
--- a/llvm/utils/lit/tests/shtest-format.py
+++ b/llvm/utils/lit/tests/shtest-format.py
@@ -47,6 +47,8 @@
# CHECK: UNRESOLVED: shtest-format :: no-test-line.txt
# CHECK: PASS: shtest-format :: pass.txt
+# CHECK: UNSUPPORTED: shtest-format :: requires-any-missing.txt
+# CHECK: PASS: shtest-format :: requires-any-present.txt
# CHECK: UNSUPPORTED: shtest-format :: requires-missing.txt
# CHECK: PASS: shtest-format :: requires-present.txt
# CHECK: UNSUPPORTED: shtest-format :: unsupported_dir/some-test.txt
@@ -69,9 +71,9 @@
# CHECK: shtest-format :: external_shell/fail_with_bad_encoding.txt
# CHECK: shtest-format :: fail.txt
-# CHECK: Expected Passes : 4
+# CHECK: Expected Passes : 5
# CHECK: Expected Failures : 3
-# CHECK: Unsupported Tests : 2
+# CHECK: Unsupported Tests : 3
# CHECK: Unresolved Tests : 1
# CHECK: Unexpected Passes : 1
# CHECK: Unexpected Failures: 3
OpenPOWER on IntegriCloud