[llvm] 355bf7c - [lit] Extend --xfail/LIT_XFAIL to take full test name

Joel E. Denny via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 1 12:47:53 PDT 2021


Author: Joel E. Denny
Date: 2021-07-01T15:46:37-04:00
New Revision: 355bf7c1f0b25310b814f7733fa59767e474de0b

URL: https://github.com/llvm/llvm-project/commit/355bf7c1f0b25310b814f7733fa59767e474de0b
DIFF: https://github.com/llvm/llvm-project/commit/355bf7c1f0b25310b814f7733fa59767e474de0b.diff

LOG: [lit] Extend --xfail/LIT_XFAIL to take full test name

The new documentation entry gives an example use case from
libomptarget.

Reviewed By: yln, jhenderson, davezarzycki

Differential Revision: https://reviews.llvm.org/D105208

Added: 
    llvm/utils/lit/tests/Inputs/xfail-cl/a/false.txt
    llvm/utils/lit/tests/Inputs/xfail-cl/a/lit.cfg
    llvm/utils/lit/tests/Inputs/xfail-cl/a/test.txt
    llvm/utils/lit/tests/Inputs/xfail-cl/b/false.txt
    llvm/utils/lit/tests/Inputs/xfail-cl/b/lit.cfg
    llvm/utils/lit/tests/Inputs/xfail-cl/b/test.txt

Modified: 
    llvm/docs/CommandGuide/lit.rst
    llvm/utils/lit/lit/main.py
    llvm/utils/lit/tests/xfail-cl.py

Removed: 
    


################################################################################
diff  --git a/llvm/docs/CommandGuide/lit.rst b/llvm/docs/CommandGuide/lit.rst
index 413b64e95007..dc2b57cda8a4 100644
--- a/llvm/docs/CommandGuide/lit.rst
+++ b/llvm/docs/CommandGuide/lit.rst
@@ -239,6 +239,31 @@ The timing data is stored in the `test_exec_root` in a file named
   this option, which is especially useful in environments where the call to
   ``lit`` is issued indirectly.
 
+  A test name can specified as a file name relative to the test suite directory.
+  For example:
+
+  .. code-block:: none
+
+    LIT_XFAIL="affinity/kmp-hw-subset.c;offloading/memory_manager.cpp"
+
+  In this case, all of the following tests are treated as ``XFAIL``:
+
+  .. code-block:: none
+
+    libomp :: affinity/kmp-hw-subset.c
+    libomptarget :: nvptx64-nvidia-cuda :: offloading/memory_manager.cpp
+    libomptarget :: x86_64-pc-linux-gnu :: offloading/memory_manager.cpp
+
+  Alternatively, a test name can be specified as the full test name
+  reported in LIT output.  For example, we can adjust the previous
+  example not to treat the ``nvptx64-nvidia-cuda`` version of
+  ``offloading/memory_manager.cpp`` as XFAIL:
+
+  .. code-block:: none
+
+    LIT_XFAIL="affinity/kmp-hw-subset.c;libomptarget :: x86_64-pc-linux-gnu :: offloading/memory_manager.cpp"
+
+
 ADDITIONAL OPTIONS
 ------------------
 

diff  --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py
index 47fe73388eaa..b60c30c68457 100755
--- a/llvm/utils/lit/lit/main.py
+++ b/llvm/utils/lit/lit/main.py
@@ -193,7 +193,9 @@ def filter_by_shard(tests, run, shards, lit_config):
 
 def mark_xfail(selected_tests, opts):
     for t in selected_tests:
-        if os.sep.join(t.path_in_suite) in opts.xfail:
+        test_file = os.sep.join(t.path_in_suite)
+        test_full_name = t.getFullName()
+        if test_file in opts.xfail or test_full_name in opts.xfail:
             t.xfails += '*'
 
 def mark_excluded(discovered_tests, selected_tests):

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/a/false.txt b/llvm/utils/lit/tests/Inputs/xfail-cl/a/false.txt
new file mode 100644
index 000000000000..49932c3006e1
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/a/false.txt
@@ -0,0 +1 @@
+# RUN: false

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/a/lit.cfg b/llvm/utils/lit/tests/Inputs/xfail-cl/a/lit.cfg
new file mode 100644
index 000000000000..09f49c32a173
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/a/lit.cfg
@@ -0,0 +1,4 @@
+import lit.formats
+config.name = 'top-level-suite :: a'
+config.suffixes = ['.txt']
+config.test_format = lit.formats.ShTest()

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/a/test.txt b/llvm/utils/lit/tests/Inputs/xfail-cl/a/test.txt
new file mode 100644
index 000000000000..b80b60b7a279
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/a/test.txt
@@ -0,0 +1 @@
+# RUN: true

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/b/false.txt b/llvm/utils/lit/tests/Inputs/xfail-cl/b/false.txt
new file mode 100644
index 000000000000..49932c3006e1
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/b/false.txt
@@ -0,0 +1 @@
+# RUN: false

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/b/lit.cfg b/llvm/utils/lit/tests/Inputs/xfail-cl/b/lit.cfg
new file mode 100644
index 000000000000..62f721c67139
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/b/lit.cfg
@@ -0,0 +1,4 @@
+import lit.formats
+config.name = 'top-level-suite :: b'
+config.suffixes = ['.txt']
+config.test_format = lit.formats.ShTest()

diff  --git a/llvm/utils/lit/tests/Inputs/xfail-cl/b/test.txt b/llvm/utils/lit/tests/Inputs/xfail-cl/b/test.txt
new file mode 100644
index 000000000000..49932c3006e1
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/xfail-cl/b/test.txt
@@ -0,0 +1 @@
+# RUN: false

diff  --git a/llvm/utils/lit/tests/xfail-cl.py b/llvm/utils/lit/tests/xfail-cl.py
index 129e3092b996..1d5fdb079c2c 100644
--- a/llvm/utils/lit/tests/xfail-cl.py
+++ b/llvm/utils/lit/tests/xfail-cl.py
@@ -1,9 +1,20 @@
-# Check that regex-XFAILing works and can be configured via env var.
-#
-# RUN: %{lit} --xfail 'false.txt;false2.txt' %{inputs}/xfail-cl | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: env LIT_XFAIL='false.txt;false2.txt' %{lit} %{inputs}/xfail-cl | FileCheck --check-prefix=CHECK-FILTER %s
+# Check that XFAILing works via command line or env var.
+
+# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \
+# RUN:        %{inputs}/xfail-cl \
+# RUN: | FileCheck --check-prefix=CHECK-FILTER %s
+
+# RUN: env LIT_XFAIL='false.txt;false2.txt;top-level-suite :: b :: test.txt' \
+# RUN: %{lit} %{inputs}/xfail-cl \
+# RUN: | FileCheck --check-prefix=CHECK-FILTER %s
+
 # END.
-# CHECK-FILTER: Testing: 3 tests, {{[1-3]}} workers
-# CHECK-FILTER-DAG: XFAIL: top-level-suite :: false.txt
-# CHECK-FILTER-DAG: XFAIL: top-level-suite :: false2.txt
-# CHECK-FILTER-DAG: PASS: top-level-suite :: true.txt
+
+# CHECK-FILTER: Testing: 7 tests, {{[1-7]}} 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
+# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: b :: false.txt
+# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: false.txt
+# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: false2.txt
+# CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: true.txt


        


More information about the llvm-commits mailing list