Reapply "[lit] Have REQUIRES support the target triple"

This reverts commit 3229c97151.

With a2acac6 in place this should provide enough info to work out
any repeat of the failure in cross_ovver_uniform_dist.test.
This commit is contained in:
Paul Robinson 2021-08-09 06:38:28 -07:00
parent 116b112bbf
commit 187c69e9ef
5 changed files with 15 additions and 13 deletions

View File

@ -443,7 +443,7 @@ with debug builds or on particular platforms. Use ``REQUIRES``
and ``UNSUPPORTED`` to control when the test is enabled.
Some tests are expected to fail. For example, there may be a known bug
that the test detect. Use ``XFAIL`` to mark a test as an expected failure.
that a test detects. Use ``XFAIL`` to mark a test as an expected failure.
An ``XFAIL`` test will be successful if its execution fails, and
will be a failure if its execution succeeds.
@ -465,9 +465,11 @@ list of boolean expressions. The values in each expression may be:
expression is satisfied if any feature matches the regular expression. Regular
expressions can appear inside an identifier, so for example ``he{{l+}}o`` would match
``helo``, ``hello``, ``helllo``, and so on.
- Substrings of the target triple (``UNSUPPORTED`` and ``XFAIL`` only).
- Substrings of the target triple. These must be exact substrings, not regular
expressions.
| ``REQUIRES`` enables the test if all expressions are true.
| ``REQUIRES`` disables the test if any expression is false (that is,
the test requires all expressions to be true).
| ``UNSUPPORTED`` disables the test if any expression is true.
| ``XFAIL`` expects the test to fail if any expression is true.

View File

@ -362,9 +362,10 @@ class Test:
return True
def getMissingRequiredFeaturesFromList(self, features):
triple = getattr(self.suite.config, 'target_triple', "")
try:
return [item for item in self.requires
if not BooleanExpression.evaluate(item, features)]
if not BooleanExpression.evaluate(item, features, triple)]
except ValueError as e:
raise ValueError('Error in REQUIRES list:\n%s' % str(e))

View File

@ -1,3 +1,3 @@
# REQUIRES line that uses target triple, which doesn't work. Test should not run
# REQUIRES line that uses target triple.
REQUIRES: x86_64
RUN: false
RUN: true

View File

@ -7,4 +7,4 @@ config.suffixes = ['.ini']
config.test_format = dummy_format.DummyFormat()
config.test_source_root = None
config.test_exec_root = None
config.target_triple = None
config.target_triple = ''

View File

@ -61,7 +61,7 @@
# CHECK: UNSUPPORTED: shtest-format :: requires-missing.txt
# CHECK: PASS: shtest-format :: requires-present.txt
# CHECK: UNRESOLVED: shtest-format :: requires-star.txt
# CHECK: UNSUPPORTED: shtest-format :: requires-triple.txt
# CHECK: PASS: shtest-format :: requires-triple.txt
# CHECK: PASS: shtest-format :: unsupported-expr-false.txt
# CHECK: UNSUPPORTED: shtest-format :: unsupported-expr-true.txt
# CHECK: UNRESOLVED: shtest-format :: unsupported-star.txt
@ -88,8 +88,8 @@
# CHECK: shtest-format :: xpass.txt
# CHECK: Testing Time:
# CHECK: Unsupported : 4
# CHECK: Passed : 6
# CHECK: Unsupported : 3
# CHECK: Passed : 7
# CHECK: Expectedly Failed : 4
# CHECK: Unresolved : 3
# CHECK: Failed : 4
@ -98,7 +98,7 @@
# XUNIT: <?xml version="1.0" encoding="UTF-8"?>
# XUNIT-NEXT: <testsuites time="{{[0-9.]+}}">
# XUNIT-NEXT: <testsuite name="shtest-format" tests="22" failures="8" skipped="4">
# XUNIT-NEXT: <testsuite name="shtest-format" tests="22" failures="8" skipped="3">
# XUNIT: <testcase classname="shtest-format.external_shell" name="fail.txt" time="{{[0-9]+\.[0-9]+}}">
# XUNIT-NEXT: <failure{{[ ]*}}>
@ -144,8 +144,7 @@
# XUNIT-NEXT: </testcase>
# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-triple.txt" time="{{[0-9]+\.[0-9]+}}">
# XUNIT-NEXT:<skipped message="Missing required feature(s): x86_64"/>
# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-triple.txt" time="{{[0-9]+\.[0-9]+}}"/>
# XUNIT: <testcase classname="shtest-format.shtest-format" name="unsupported-expr-false.txt" time="{{[0-9]+\.[0-9]+}}"/>