diff options
author | Greg Parker <gparker@apple.com> | 2017-01-25 02:26:03 +0000 |
---|---|---|
committer | Greg Parker <gparker@apple.com> | 2017-01-25 02:26:03 +0000 |
commit | 4a50c7f39c7ad7204fbff83e529c0b30365ee987 (patch) | |
tree | 3fb4fbd1e5cedc43e7106876042f9eb691da6a0a /utils/lit/tests | |
parent | 431645e04393da431451561fb889d71ea5a2bf4e (diff) |
Reinstate "r292904 - [lit] Allow boolean expressions in REQUIRES and XFAIL
and UNSUPPORTED"
This reverts the revert in r292942.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293007 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/lit/tests')
12 files changed, 109 insertions, 7 deletions
diff --git a/utils/lit/tests/Inputs/shtest-format/requires-missing.txt b/utils/lit/tests/Inputs/shtest-format/requires-missing.txt index 9e6648d8b8f..d643e57edca 100644 --- a/utils/lit/tests/Inputs/shtest-format/requires-missing.txt +++ b/utils/lit/tests/Inputs/shtest-format/requires-missing.txt @@ -1,2 +1,5 @@ -RUN: true -REQUIRES: a-missing-feature +# REQUIRES with a false clause. Test should not run. +REQUIRES: true +REQUIRES: a-missing-feature, true +REQUIRES: true +RUN: false diff --git a/utils/lit/tests/Inputs/shtest-format/requires-present.txt b/utils/lit/tests/Inputs/shtest-format/requires-present.txt index 064f7074a76..9fcbdca69be 100644 --- a/utils/lit/tests/Inputs/shtest-format/requires-present.txt +++ b/utils/lit/tests/Inputs/shtest-format/requires-present.txt @@ -1,2 +1,4 @@ +# REQUIRES with only true clauses. Test should run. +REQUIRES: a-present-feature, true, !not-true +REQUIRES: true RUN: true -REQUIRES: a-present-feature diff --git a/utils/lit/tests/Inputs/shtest-format/requires-star.txt b/utils/lit/tests/Inputs/shtest-format/requires-star.txt new file mode 100644 index 00000000000..5566d8b15b0 --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/requires-star.txt @@ -0,0 +1,3 @@ +# '*' only works in XFAIL +REQUIRES: * +RUN: false diff --git a/utils/lit/tests/Inputs/shtest-format/requires-triple.txt b/utils/lit/tests/Inputs/shtest-format/requires-triple.txt new file mode 100644 index 00000000000..6470bf40414 --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/requires-triple.txt @@ -0,0 +1,3 @@ +# REQUIRES line that uses target triple, which doesn't work. Test should not run +REQUIRES: x86_64 +RUN: false diff --git a/utils/lit/tests/Inputs/shtest-format/unsupported-expr-false.txt b/utils/lit/tests/Inputs/shtest-format/unsupported-expr-false.txt new file mode 100644 index 00000000000..00c6160a367 --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/unsupported-expr-false.txt @@ -0,0 +1,9 @@ +# UNSUPPORTED with only false clauses. Test should run. +UNSUPPORTED: false +UNSUPPORTED: false, not-true +UNSUPPORTED: false +UNSUPPORTED: still-not-true +UNSUPPORTED: false +UNSUPPORTED: false +UNSUPPORTED: false +RUN: true diff --git a/utils/lit/tests/Inputs/shtest-format/unsupported-expr-true.txt b/utils/lit/tests/Inputs/shtest-format/unsupported-expr-true.txt new file mode 100644 index 00000000000..f48ba7b2c2d --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/unsupported-expr-true.txt @@ -0,0 +1,4 @@ +# UNSUPPORTED with a true clause. Test should not run. +UNSUPPORTED: false +UNSUPPORTED: false, false, false, _64-unk && a-present-feature, false +RUN: false diff --git a/utils/lit/tests/Inputs/shtest-format/unsupported-star.txt b/utils/lit/tests/Inputs/shtest-format/unsupported-star.txt new file mode 100644 index 00000000000..16630207dac --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/unsupported-star.txt @@ -0,0 +1,3 @@ +# '*' only works in XFAIL +UNSUPPORTED: * +RUN: false diff --git a/utils/lit/tests/Inputs/shtest-format/xfail-expr-false.txt b/utils/lit/tests/Inputs/shtest-format/xfail-expr-false.txt new file mode 100644 index 00000000000..83b0de1621d --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/xfail-expr-false.txt @@ -0,0 +1,3 @@ +# XFAIL with only false clauses. Test should run. +XFAIL: false, a-missing-feature || ! a-present-feature || ! x86_64, false +RUN: true diff --git a/utils/lit/tests/Inputs/shtest-format/xfail-expr-true.txt b/utils/lit/tests/Inputs/shtest-format/xfail-expr-true.txt new file mode 100644 index 00000000000..3c197484897 --- /dev/null +++ b/utils/lit/tests/Inputs/shtest-format/xfail-expr-true.txt @@ -0,0 +1,4 @@ +# XFAIL with a true clause. Test should not run. +XFAIL: false +XFAIL: false, a-present-feature && ! a-missing-feature && x86_64 +RUN: false diff --git a/utils/lit/tests/boolean-parsing.py b/utils/lit/tests/boolean-parsing.py new file mode 100644 index 00000000000..372a94d2332 --- /dev/null +++ b/utils/lit/tests/boolean-parsing.py @@ -0,0 +1,4 @@ +# Test the boolean expression parser +# used for REQUIRES and UNSUPPORTED and XFAIL + +# RUN: %{python} -m lit.BooleanExpression diff --git a/utils/lit/tests/shtest-format.py b/utils/lit/tests/shtest-format.py index 20884f8c485..37e3e1c1262 100644 --- a/utils/lit/tests/shtest-format.py +++ b/utils/lit/tests/shtest-format.py @@ -50,7 +50,14 @@ # CHECK: PASS: shtest-format :: requires-any-present.txt # 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 :: unsupported-expr-false.txt +# CHECK: UNSUPPORTED: shtest-format :: unsupported-expr-true.txt +# CHECK: UNRESOLVED: shtest-format :: unsupported-star.txt # CHECK: UNSUPPORTED: shtest-format :: unsupported_dir/some-test.txt +# CHECK: PASS: shtest-format :: xfail-expr-false.txt +# CHECK: XFAIL: shtest-format :: xfail-expr-true.txt # CHECK: XFAIL: shtest-format :: xfail-feature.txt # CHECK: XFAIL: shtest-format :: xfail-target.txt # CHECK: XFAIL: shtest-format :: xfail.txt @@ -70,9 +77,9 @@ # CHECK: shtest-format :: external_shell/fail_with_bad_encoding.txt # CHECK: shtest-format :: fail.txt -# CHECK: Expected Passes : 5 -# CHECK: Expected Failures : 3 -# CHECK: Unsupported Tests : 3 -# CHECK: Unresolved Tests : 1 +# CHECK: Expected Passes : 7 +# CHECK: Expected Failures : 4 +# CHECK: Unsupported Tests : 5 +# CHECK: Unresolved Tests : 3 # CHECK: Unexpected Passes : 1 # CHECK: Unexpected Failures: 3 diff --git a/utils/lit/tests/unit/TestRunner.py b/utils/lit/tests/unit/TestRunner.py index ff11834fed7..ed0affa2832 100644 --- a/utils/lit/tests/unit/TestRunner.py +++ b/utils/lit/tests/unit/TestRunner.py @@ -108,6 +108,63 @@ class TestIntegratedTestKeywordParser(unittest.TestCase): value = custom_parser.getValue() self.assertItemsEqual(value, ['a', 'b', 'c']) + def test_bad_keywords(self): + def custom_parse(line_number, line, output): + return output + + try: + IntegratedTestKeywordParser("TAG_NO_SUFFIX", ParserKind.TAG), + self.fail("TAG_NO_SUFFIX failed to raise an exception") + except ValueError as e: + pass + except BaseException as e: + self.fail("TAG_NO_SUFFIX raised the wrong exception: %r" % e) + + try: + IntegratedTestKeywordParser("TAG_WITH_COLON:", ParserKind.TAG), + self.fail("TAG_WITH_COLON: failed to raise an exception") + except ValueError as e: + pass + except BaseException as e: + self.fail("TAG_WITH_COLON: raised the wrong exception: %r" % e) + + try: + IntegratedTestKeywordParser("LIST_WITH_DOT.", ParserKind.LIST), + self.fail("LIST_WITH_DOT. failed to raise an exception") + except ValueError as e: + pass + except BaseException as e: + self.fail("LIST_WITH_DOT. raised the wrong exception: %r" % e) + + try: + IntegratedTestKeywordParser("CUSTOM_NO_SUFFIX", + ParserKind.CUSTOM, custom_parse), + self.fail("CUSTOM_NO_SUFFIX failed to raise an exception") + except ValueError as e: + pass + except BaseException as e: + self.fail("CUSTOM_NO_SUFFIX raised the wrong exception: %r" % e) + + # Both '.' and ':' are allowed for CUSTOM keywords. + try: + IntegratedTestKeywordParser("CUSTOM_WITH_DOT.", + ParserKind.CUSTOM, custom_parse), + except BaseException as e: + self.fail("CUSTOM_WITH_DOT. raised an exception: %r" % e) + try: + IntegratedTestKeywordParser("CUSTOM_WITH_COLON:", + ParserKind.CUSTOM, custom_parse), + except BaseException as e: + self.fail("CUSTOM_WITH_COLON: raised an exception: %r" % e) + + try: + IntegratedTestKeywordParser("CUSTOM_NO_PARSER:", + ParserKind.CUSTOM), + self.fail("CUSTOM_NO_PARSER: failed to raise an exception") + except ValueError as e: + pass + except BaseException as e: + self.fail("CUSTOM_NO_PARSER: raised the wrong exception: %r" % e) if __name__ == '__main__': TestIntegratedTestKeywordParser.load_keyword_parser_lit_tests() |