[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