diff options
author | Daniel Dunbar <daniel@zuster.org> | 2012-10-18 20:43:04 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2012-10-18 20:43:04 +0000 |
commit | 44a83f092029fa76bce05ff0c0598afc55215767 (patch) | |
tree | 64d64a8fcf554ad73832b5b724f8f992c2b10aa2 | |
parent | 3298959540ca744ec16b4c65db244534a929a862 (diff) |
lit: Allow XFAIL: lines to also refer to "features".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166224 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/TestingGuide.html | 17 | ||||
-rw-r--r-- | utils/lit/lit/ExampleTests/xfail-feature.c | 4 | ||||
-rw-r--r-- | utils/lit/lit/TestRunner.py | 15 |
3 files changed, 23 insertions, 13 deletions
diff --git a/docs/TestingGuide.html b/docs/TestingGuide.html index 1f9c915730..fa3ff2b039 100644 --- a/docs/TestingGuide.html +++ b/docs/TestingGuide.html @@ -798,14 +798,15 @@ define two separate CHECK lines that match on the same line. <p>Sometimes it is necessary to mark a test case as "expected fail" or XFAIL. You can easily mark a test as XFAIL just by including <tt>XFAIL: </tt> on a line near the top of the file. This signals that the test case should succeed - if the test fails. Such test cases are counted separately by the testing tool. To - specify an expected fail, use the XFAIL keyword in the comments of the test - program followed by a colon and one or more regular expressions (separated by - a comma). The regular expressions allow you to XFAIL the test conditionally by - host platform. The regular expressions following the : are matched against the - target triplet for the host machine. If there is a match, the test is expected - to fail. If not, the test is expected to succeed. To XFAIL everywhere just - specify <tt>XFAIL: *</tt>. Here is an example of an <tt>XFAIL</tt> line:</p> + if the test fails. Such test cases are counted separately by the testing + tool. To specify an expected fail, use the XFAIL keyword in the comments of + the test program followed by a colon and one or more failure patterns. Each + failure pattern can be either '*' (to specify fail everywhere), or a part of a + target triple (indicating the test should fail on that platfomr), or the name + of a configurable feature (for example, "loadable_module").. If there is a + match, the test is expected to fail. If not, the test is expected to + succeed. To XFAIL everywhere just specify <tt>XFAIL: *</tt>. Here is an + example of an <tt>XFAIL</tt> line:</p> <div class="doc_code"> <pre> diff --git a/utils/lit/lit/ExampleTests/xfail-feature.c b/utils/lit/lit/ExampleTests/xfail-feature.c new file mode 100644 index 0000000000..3444bf8700 --- /dev/null +++ b/utils/lit/lit/ExampleTests/xfail-feature.c @@ -0,0 +1,4 @@ +// This test should XPASS. + +// RUN: true +// XFAIL: some-feature-name diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index 71882b76f8..62a795671e 100644 --- a/utils/lit/lit/TestRunner.py +++ b/utils/lit/lit/TestRunner.py @@ -370,10 +370,15 @@ def executeScript(test, litConfig, tmpBase, commands, cwd): return executeCommand(command, cwd=cwd, env=test.config.environment) -def isExpectedFail(xfails, xtargets, target_triple): - # Check if any xfail matches this target. +def isExpectedFail(test, xfails, xtargets): + # If the xfail matches an available feature, it always fails. for item in xfails: - if item == '*' or item in target_triple: + if item in test.config.available_features: + return True + + # Otherwise, check if any xfail matches this target. + for item in xfails: + if item == '*' or item in test.suite.config.target_triple: break else: return False @@ -382,7 +387,7 @@ def isExpectedFail(xfails, xtargets, target_triple): # # FIXME: Rename XTARGET to something that makes sense, like XPASS. for item in xtargets: - if item == '*' or item in target_triple: + if item == '*' or item in test.suite.config.target_triple: return False return True @@ -491,7 +496,7 @@ def parseIntegratedTestScript(test, normalize_slashes=False, return (Test.UNSUPPORTED, "Test requires the following features: %s" % msg) - isXFail = isExpectedFail(xfails, xtargets, test.suite.config.target_triple) + isXFail = isExpectedFail(test, xfails, xtargets) return script,isXFail,tmpBase,execdir def formatTestOutput(status, out, err, exitCode, failDueToStderr, script): |