<div dir="ltr"><div>Hi Julian,</div><div><br></div><div>It looks like your check-all is running lit only once.  What subprojects do you have enabled?  I have most of them enabled.</div><div><br></div><div>Thanks.</div><div><br></div><div>Joel<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 7, 2019 at 1:50 PM Julian Lettner <<a href="mailto:julian.lettner@apple.com">julian.lettner@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div dir="auto" style="overflow-wrap: break-word;"><span><span>Hi Joel,</span></span></div><div dir="auto" style="overflow-wrap: break-word;"><span><span><br></span></span></div><div dir="auto" style="overflow-wrap: break-word;">I can’t reproduce your issue.  Can you describe what happened?</div><div dir="auto" style="overflow-wrap: break-word;">When I run `env LIT_FILTER=xxx ninja check-all` I get the following:</div><div dir="auto" style="overflow-wrap: break-word;"><br></div><div dir="auto" style="overflow-wrap: break-word;"><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">➤ env LIT_FILTER=deadlock ninja check-all</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">[3/6] cd /Users/yln/work/llvm-upstream/llvm-project/clang/binding...work/llvm-upstream/build/lib /usr/bin/python -m unittest discover</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><snip></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">[4/6] Checking TSan Go runtime...</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><snip></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">[5/6] Running lint check for sanitizer sources...</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><lots of linter output></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">Total errors found: 0</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">[5/6] Running all regression tests</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><lots of lit notes and warnings></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><br></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">Testing Time: 50.04s</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">  Expected Passes    : 23</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">  Expected Failures  : 2</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">  Unsupported Tests  : 5</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><br></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">40 warning(s) in tests.</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><br></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">➤ echo $status</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">0</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><br></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">➤ env LIT_FILTER=does_not_exist ninja check-all</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><same as above></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">[5/6] Running all regression tests</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><lots of lit notes and warnings></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">Filter did not match any tests (of 62432 discovered).</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">FAILED: CMakeFiles/check-all </font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">cd /Users/yln/work/llvm-upstream/build && /usr/bin/python /Users/yln/work/llvm-upstream/build/./bin/llvm-lit -sv --param clang_site_config=/Users/yln/work/llvm-upstream/build/tools/clang/test/lit.site.cfg --param USE_Z3_SOLVER=0 <long list of test suites></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">ninja: build stopped: subcommand failed.</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New"><br></font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">➤ echo $status</font></div><div dir="auto" style="overflow-wrap: break-word;"><font face="Courier New">1</font></div><div><br></div></div><div dir="auto" style="overflow-wrap: break-word;"><span><span><br><blockquote type="cite">On Nov 5, 2019, at 12:32 PM, Joel E. Denny <<a href="mailto:jdenny.ornl@gmail.com" target="_blank">jdenny.ornl@gmail.com</a>> wrote:<br><br>Hi Julian,<br><br>I don't know that I would have thought of the check-all issue during a patch review, but someone might have, and my understanding is that patch reviews are required in LLVM.<br><br>Thanks for the fast response.  I do appreciate your effort to address empty lit runs.<br><br>Joel<br><br>On Tue, Nov 5, 2019 at 3:20 PM Julian Lettner <<a href="mailto:jlettner@apple.com" target="_blank">jlettner@apple.com</a>> wrote:<br>Hi Joel,<br><br>Thanks for letting me know.  I reverted the change until I have time to investigate.<br>I didn’t create a review for this change, but I have learned my lesson and will definitely include you in the review for the re-land.  Sorry for the churn,<br><br>Thanks,<br>Julian<br><br><blockquote type="cite">On Nov 5, 2019, at 10:54 AM, Joel E. Denny <<a href="mailto:jdenny.ornl@gmail.com" target="_blank">jdenny.ornl@gmail.com</a>> wrote:<br><br>Hi Julian,<br><br>This patch breaks LIT_FILTER for check-all, which runs lit multiple times.  For such use cases, maybe there should be a command-line option to suppress this error.<br><br>Also, was there a review for this patch?  I don't see one referenced in the commit log.<br><br>Thanks.<br><br>Joel<br><br>On Mon, Nov 4, 2019 at 1:17 PM Julian Lettner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br><br>Author: Julian Lettner<br>Date: 2019-11-04T10:16:24-08:00<br>New Revision: d8f2bff75126c6dde694ad245f9807fa12ad5630<br><br>URL: <a href="https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630" target="_blank">https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630</a><br>DIFF: <a href="https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630.diff" target="_blank">https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630.diff</a><br><br>LOG: [lit] Better/earlier errors when no tests are executed<br><br>Fail early, when we discover no tests at all, or filter out all of them.<br><br>Added: <br><br><br>Modified: <br>    llvm/utils/lit/lit/cl_arguments.py<br>    llvm/utils/lit/lit/main.py<br>    llvm/utils/lit/lit/run.py<br>    llvm/utils/lit/tests/selecting.py<br><br>Removed: <br><br><br><br>################################################################################<br>diff  --git a/llvm/utils/lit/lit/cl_arguments.py b/llvm/utils/lit/lit/cl_arguments.py<br>index 7b15041d1905..c17f6c7824e1 100644<br>--- a/llvm/utils/lit/lit/cl_arguments.py<br>+++ b/llvm/utils/lit/lit/cl_arguments.py<br>@@ -5,6 +5,7 @@<br><br> import lit.util<br><br>+# TODO(yln): scan dest, to see if is redundant<br> def parse_args():<br>     parser = argparse.ArgumentParser()<br>     parser.add_argument('test_paths',<br><br>diff  --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py<br>index 337d154a560d..af36b07f1fef 100755<br>--- a/llvm/utils/lit/lit/main.py<br>+++ b/llvm/utils/lit/lit/main.py<br>@@ -42,6 +42,9 @@ def main(builtin_params = {}):<br>         echo_all_commands = opts.echoAllCommands)<br><br>     tests = lit.discovery.find_tests_for_inputs(litConfig, opts.test_paths)<br>+    if not tests:<br>+        sys.stderr.write('Did not disover any tests for provided path(s).\n')<br>+        sys.exit(2)<br><br>     # Command line overrides configuration for maxIndividualTestTime.<br>     if opts.maxIndividualTestTime is not None:  # `not None` is important (default: 0)<br>@@ -62,12 +65,20 @@ def main(builtin_params = {}):<br><br>     if opts.filter:<br>         tests = [t for t in tests if opts.filter.search(t.getFullName())]<br>+        if not tests:<br>+            sys.stderr.write('Filter did not match any tests '<br>+                             '(of %d discovered).\n' % numTotalTests)<br>+            sys.exit(2)<br><br>     determine_order(tests, opts.order)<br><br>     if opts.shard:<br>         (run, shards) = opts.shard<br>         tests = filter_by_shard(tests, run, shards, litConfig)<br>+        if not tests:<br>+            sys.stderr.write('Shard does not contain any tests.  Consider '<br>+                             'decreasing the shard count.\n')<br>+            sys.exit(0)<br><br>     if opts.max_tests:<br>         tests = tests[:opts.max_tests]<br>@@ -84,7 +95,7 @@ def main(builtin_params = {}):<br>         write_test_results_xunit(tests, opts)<br><br>     if litConfig.numErrors:<br>-        sys.stderr.write('\n%d error(s), exiting.\n' % litConfig.numErrors)<br>+        sys.stderr.write('\n%d error(s) in tests.\n' % litConfig.numErrors)<br>         sys.exit(2)<br><br>     if litConfig.numWarnings:<br><br>diff  --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py<br>index 4d16399fec47..11992c8073d2 100644<br>--- a/llvm/utils/lit/lit/run.py<br>+++ b/llvm/utils/lit/lit/run.py<br>@@ -13,7 +13,7 @@ def acquire(self): pass<br>     def release(self): pass<br><br> def create_run(tests, lit_config, workers, progress_callback, timeout=None):<br>-    # TODO(yln) assert workers > 0<br>+    assert workers > 0<br>     if workers == 1:<br>         return SerialRun(tests, lit_config, progress_callback, timeout)<br>     return ParallelRun(tests, lit_config, progress_callback, timeout, workers)<br>@@ -45,9 +45,6 @@ def execute(self):<br>         computed. Tests which were not actually executed (for any reason) will<br>         be given an UNRESOLVED result.<br>         """<br>-        if not self.tests:<br>-            return 0.0<br>-<br>         self.failure_count = 0<br>         self.hit_max_failures = False<br><br><br>diff  --git a/llvm/utils/lit/tests/selecting.py b/llvm/utils/lit/tests/selecting.py<br>index 0921cdd31ac9..cfbb9d19b6dc 100644<br>--- a/llvm/utils/lit/tests/selecting.py<br>+++ b/llvm/utils/lit/tests/selecting.py<br>@@ -1,6 +1,18 @@<br> # RUN: %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-BASIC %s<br> # CHECK-BASIC: Testing: 5 tests<br><br>+<br>+# Check that we exit with an error if we do not discover any tests.<br>+#<br>+# RUN: not %{lit} %{inputs}/nonexistent 2>&1 | FileCheck --check-prefix=CHECK-BAD-PATH %s<br>+# CHECK-BAD-PATH: Did not disover any tests for provided path(s).<br>+<br>+# Check that we exit with an error if we filter out all tests.<br>+#<br>+# RUN: not %{lit} --filter 'nonexistent' %{inputs}/discovery 2>&1 | FileCheck --check-prefix=CHECK-BAD-FILTER %s<br>+# CHECK-BAD-FILTER: Filter did not match any tests (of 5 discovered).<br>+<br>+<br> # Check that regex-filtering works, is case-insensitive, and can be configured via env var.<br> #<br> # RUN: %{lit} --filter 'o[a-z]e' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s<br>@@ -8,6 +20,7 @@<br> # RUN: env LIT_FILTER='o[a-z]e' %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s<br> # CHECK-FILTER: Testing: 2 of 5 tests<br><br>+<br> # Check that maximum counts work<br> #<br> # RUN: %{lit} --max-tests 3 %{inputs}/discovery | FileCheck --check-prefix=CHECK-MAX %s<br>@@ -68,15 +81,13 @@<br> #<br> # RUN: %{lit} --num-shards 100 --run-shard 6 %{inputs}/discovery >%t.out 2>%t.err<br> # RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR2 < %t.err %s<br>-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-OUT2 < %t.out %s<br> # CHECK-SHARD-BIG-ERR2: note: Selecting shard 6/100 = size 0/5 = tests #(100*k)+6 = []<br>-# CHECK-SHARD-BIG-OUT2: Testing: 0 of 5 tests<br>+# CHECK-SHARD-BIG-ERR2: Shard does not contain any tests.  Consider decreasing the shard count.<br> #<br> # RUN: %{lit} --num-shards 100 --run-shard 50 %{inputs}/discovery >%t.out 2>%t.err<br> # RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR3 < %t.err %s<br>-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-OUT3 < %t.out %s<br> # CHECK-SHARD-BIG-ERR3: note: Selecting shard 50/100 = size 0/5 = tests #(100*k)+50 = []<br>-# CHECK-SHARD-BIG-OUT3: Testing: 0 of 5 tests<br>+# CHECK-SHARD-BIG-ERR3: Shard does not contain any tests.  Consider decreasing the shard count.<br><br><br> # Check that range constraints are enforced<br><br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br></blockquote><br></blockquote><br></span></span></div></div></blockquote></div></div>