diff options
Diffstat (limited to 'llvm/utils/lit')
-rw-r--r-- | llvm/utils/lit/lit/Test.py | 3 | ||||
-rw-r--r-- | llvm/utils/lit/lit/TestRunner.py | 2 | ||||
-rw-r--r-- | llvm/utils/lit/lit/cl_arguments.py | 10 | ||||
-rwxr-xr-x | llvm/utils/lit/lit/main.py | 2 | ||||
-rw-r--r-- | llvm/utils/lit/tests/Inputs/xfail-cl/true-xfail-conditionally.txt | 2 | ||||
-rw-r--r-- | llvm/utils/lit/tests/xfail-cl.py | 28 |
6 files changed, 46 insertions, 1 deletions
diff --git a/llvm/utils/lit/lit/Test.py b/llvm/utils/lit/lit/Test.py index 1bd5ba8..7290977 100644 --- a/llvm/utils/lit/lit/Test.py +++ b/llvm/utils/lit/lit/Test.py @@ -247,6 +247,9 @@ class Test: # and will be honored when the test result is supplied. self.xfails = [] + # Exclude this test if it's xfail. + self.exclude_xfail = False + # If true, ignore all items in self.xfails. self.xfail_not = False diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index 73db67a..e7cd707 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -2175,6 +2175,8 @@ def parseIntegratedTestScript(test, additional_parsers=[], require_script=True): assert parsed["DEFINE:"] == script assert parsed["REDEFINE:"] == script test.xfails += parsed["XFAIL:"] or [] + if test.exclude_xfail and test.isExpectedToFail(): + return lit.Test.Result(Test.EXCLUDED, "excluding XFAIL tests") test.requires += parsed["REQUIRES:"] or [] test.unsupported += parsed["UNSUPPORTED:"] or [] if parsed["ALLOW_RETRIES:"]: diff --git a/llvm/utils/lit/lit/cl_arguments.py b/llvm/utils/lit/lit/cl_arguments.py index 3292554..e889515 100644 --- a/llvm/utils/lit/lit/cl_arguments.py +++ b/llvm/utils/lit/lit/cl_arguments.py @@ -304,6 +304,16 @@ def parse_args(): default=os.environ.get("LIT_XFAIL_NOT", ""), ) selection_group.add_argument( + "--exclude-xfail", + help="exclude XFAIL tests (unless they are in the --xfail-not list). " + "Note: This option is implemented in " + "lit.TestRunner.parseIntegratedTestScript and so will have no effect on " + "test formats that do not call that and do not implement the option " + "separately.", + default=False, + action="store_true", + ) + selection_group.add_argument( "--num-shards", dest="numShards", metavar="M", diff --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py index 0939838..9650a0e 100755 --- a/llvm/utils/lit/lit/main.py +++ b/llvm/utils/lit/lit/main.py @@ -240,6 +240,8 @@ def mark_xfail(selected_tests, opts): t.xfails += "*" if test_file in opts.xfail_not or test_full_name in opts.xfail_not: t.xfail_not = True + if opts.exclude_xfail: + t.exclude_xfail = True def mark_excluded(discovered_tests, selected_tests): diff --git a/llvm/utils/lit/tests/Inputs/xfail-cl/true-xfail-conditionally.txt b/llvm/utils/lit/tests/Inputs/xfail-cl/true-xfail-conditionally.txt new file mode 100644 index 0000000..6fdecd6 --- /dev/null +++ b/llvm/utils/lit/tests/Inputs/xfail-cl/true-xfail-conditionally.txt @@ -0,0 +1,2 @@ +# XFAIL: this-does-not-exist +# RUN: true
\ No newline at end of file diff --git a/llvm/utils/lit/tests/xfail-cl.py b/llvm/utils/lit/tests/xfail-cl.py index ef1bb04..f1e0e33 100644 --- a/llvm/utils/lit/tests/xfail-cl.py +++ b/llvm/utils/lit/tests/xfail-cl.py @@ -5,6 +5,18 @@ # RUN: %{inputs}/xfail-cl \ # RUN: | FileCheck --check-prefix=CHECK-FILTER %s +# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \ +# RUN: --exclude-xfail \ +# RUN: %{inputs}/xfail-cl \ +# RUN: | FileCheck --check-prefixes=CHECK-EXCLUDED,CHECK-EXCLUDED-NOOVERRIDE %s + +# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \ +# RUN: --xfail-not 'true-xfail.txt' \ +# RUN: --exclude-xfail \ +# RUN: %{inputs}/xfail-cl \ +# RUN: | FileCheck --check-prefixes=CHECK-EXCLUDED,CHECK-EXCLUDED-OVERRIDE %s + + # RUN: env LIT_XFAIL='false.txt;false2.txt;top-level-suite :: b :: test.txt' \ # RUN: LIT_XFAIL_NOT='true-xfail.txt;top-level-suite :: a :: test-xfail.txt' \ # RUN: %{lit} %{inputs}/xfail-cl \ @@ -23,7 +35,7 @@ # END. -# CHECK-FILTER: Testing: 10 tests, {{[0-9]*}} workers +# CHECK-FILTER: Testing: 11 tests, {{[0-9]*}} workers # CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: a :: test.txt # CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: b :: test.txt # CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: a :: false.txt @@ -37,3 +49,17 @@ # CHECK-OVERRIDE: Testing: 1 tests, {{[0-9]*}} workers # CHECK-OVERRIDE: {{^}}PASS: top-level-suite :: true-xfail.txt + +# CHECK-EXCLUDED: Testing: 11 tests, {{[0-9]*}} workers +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: a :: false.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: a :: test-xfail.txt +# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: a :: test.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: false.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: test-xfail.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: test.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: false.txt +# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: false2.txt +# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: true-xfail-conditionally.txt +# CHECK-EXCLUDED-NOOVERRIDE-DAG: {{^}}EXCLUDED: top-level-suite :: true-xfail.txt +# CHECK-EXCLUDED-OVERRIDE-DAG: {{^}}PASS: top-level-suite :: true-xfail.txt +# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: true.txt |