[libcxx] Add UNSUPPORTED tag to lit. It mirrors REQUIRES.
Summary: This patch adds support for // UNSUPPORTED: feature. If an excluded feature is found in the list of available features then the test is marked unsupported. I hope to use this to mark test unsupported if the fail with msan on asan. As well as tests that fail in particular standard modes. Reviewers: mclow.lists, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4950 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215883 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
caf1c029cb
commit
da98ce033e
11
test/lit.cfg
11
test/lit.cfg
@ -64,6 +64,7 @@ class LibcxxTestFormat(lit.formats.FileBasedTest):
|
|||||||
def _execute(self, test, lit_config):
|
def _execute(self, test, lit_config):
|
||||||
# Extract test metadata from the test file.
|
# Extract test metadata from the test file.
|
||||||
requires = []
|
requires = []
|
||||||
|
unsupported = []
|
||||||
with open(test.getSourcePath()) as f:
|
with open(test.getSourcePath()) as f:
|
||||||
for ln in f:
|
for ln in f:
|
||||||
if 'XFAIL:' in ln:
|
if 'XFAIL:' in ln:
|
||||||
@ -72,6 +73,9 @@ class LibcxxTestFormat(lit.formats.FileBasedTest):
|
|||||||
elif 'REQUIRES:' in ln:
|
elif 'REQUIRES:' in ln:
|
||||||
items = ln[ln.index('REQUIRES:') + 9:].split(',')
|
items = ln[ln.index('REQUIRES:') + 9:].split(',')
|
||||||
requires.extend([s.strip() for s in items])
|
requires.extend([s.strip() for s in items])
|
||||||
|
elif 'UNSUPPORTED:' in ln:
|
||||||
|
items = ln[ln.index('UNSUPPORTED:') + 12:].split(',')
|
||||||
|
unsupported.extend([s.strip() for s in items])
|
||||||
elif not ln.strip().startswith("//") and ln.strip():
|
elif not ln.strip().startswith("//") and ln.strip():
|
||||||
# Stop at the first non-empty line that is not a C++
|
# Stop at the first non-empty line that is not a C++
|
||||||
# comment.
|
# comment.
|
||||||
@ -89,6 +93,13 @@ class LibcxxTestFormat(lit.formats.FileBasedTest):
|
|||||||
"Test requires the following features: %s" % (
|
"Test requires the following features: %s" % (
|
||||||
', '.join(missing_required_features),))
|
', '.join(missing_required_features),))
|
||||||
|
|
||||||
|
unsupported_features = [f for f in unsupported
|
||||||
|
if f in test.config.available_features]
|
||||||
|
if unsupported_features:
|
||||||
|
return (lit.Test.UNSUPPORTED,
|
||||||
|
"Test is unsupported with the following features: %s" % (
|
||||||
|
', '.join(unsupported_features),))
|
||||||
|
|
||||||
# Evaluate the test.
|
# Evaluate the test.
|
||||||
return self._evaluate_test(test, lit_config)
|
return self._evaluate_test(test, lit_config)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user