<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Joel,<div class=""><br class=""></div><div class="">Thanks for letting me know.  I reverted the change until I have time to investigate.</div><div class="">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,</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Julian</div><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Nov 5, 2019, at 10:54 AM, Joel E. Denny <<a href="mailto:jdenny.ornl@gmail.com" class="">jdenny.ornl@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Hi Julian,</div><div class=""><br class=""></div><div class="">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 class=""></div><div class=""></div><div class=""><br class=""></div><div class=""><div class="">Also, was there a review for this patch?  I don't see one referenced in the commit log.</div><div class=""></div></div><div class=""><br class=""></div><div class="">Thanks.</div><div class=""><br class=""></div><div class="">Joel<br class=""></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 4, 2019 at 1:17 PM Julian Lettner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br class="">
Author: Julian Lettner<br class="">
Date: 2019-11-04T10:16:24-08:00<br class="">
New Revision: d8f2bff75126c6dde694ad245f9807fa12ad5630<br class="">
<br class="">
URL: <a href="https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630" rel="noreferrer" target="_blank" class="">https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630</a><br class="">
DIFF: <a href="https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630.diff" rel="noreferrer" target="_blank" class="">https://github.com/llvm/llvm-project/commit/d8f2bff75126c6dde694ad245f9807fa12ad5630.diff</a><br class="">
<br class="">
LOG: [lit] Better/earlier errors when no tests are executed<br class="">
<br class="">
Fail early, when we discover no tests at all, or filter out all of them.<br class="">
<br class="">
Added: <br class="">
<br class="">
<br class="">
Modified: <br class="">
    llvm/utils/lit/lit/cl_arguments.py<br class="">
    llvm/utils/lit/lit/main.py<br class="">
    llvm/utils/lit/lit/run.py<br class="">
    llvm/utils/lit/tests/selecting.py<br class="">
<br class="">
Removed: <br class="">
<br class="">
<br class="">
<br class="">
################################################################################<br class="">
diff  --git a/llvm/utils/lit/lit/cl_arguments.py b/llvm/utils/lit/lit/cl_arguments.py<br class="">
index 7b15041d1905..c17f6c7824e1 100644<br class="">
--- a/llvm/utils/lit/lit/cl_arguments.py<br class="">
+++ b/llvm/utils/lit/lit/cl_arguments.py<br class="">
@@ -5,6 +5,7 @@<br class="">
<br class="">
 import lit.util<br class="">
<br class="">
+# TODO(yln): scan dest, to see if is redundant<br class="">
 def parse_args():<br class="">
     parser = argparse.ArgumentParser()<br class="">
     parser.add_argument('test_paths',<br class="">
<br class="">
diff  --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py<br class="">
index 337d154a560d..af36b07f1fef 100755<br class="">
--- a/llvm/utils/lit/lit/main.py<br class="">
+++ b/llvm/utils/lit/lit/main.py<br class="">
@@ -42,6 +42,9 @@ def main(builtin_params = {}):<br class="">
         echo_all_commands = opts.echoAllCommands)<br class="">
<br class="">
     tests = lit.discovery.find_tests_for_inputs(litConfig, opts.test_paths)<br class="">
+    if not tests:<br class="">
+        sys.stderr.write('Did not disover any tests for provided path(s).\n')<br class="">
+        sys.exit(2)<br class="">
<br class="">
     # Command line overrides configuration for maxIndividualTestTime.<br class="">
     if opts.maxIndividualTestTime is not None:  # `not None` is important (default: 0)<br class="">
@@ -62,12 +65,20 @@ def main(builtin_params = {}):<br class="">
<br class="">
     if opts.filter:<br class="">
         tests = [t for t in tests if opts.filter.search(t.getFullName())]<br class="">
+        if not tests:<br class="">
+            sys.stderr.write('Filter did not match any tests '<br class="">
+                             '(of %d discovered).\n' % numTotalTests)<br class="">
+            sys.exit(2)<br class="">
<br class="">
     determine_order(tests, opts.order)<br class="">
<br class="">
     if opts.shard:<br class="">
         (run, shards) = opts.shard<br class="">
         tests = filter_by_shard(tests, run, shards, litConfig)<br class="">
+        if not tests:<br class="">
+            sys.stderr.write('Shard does not contain any tests.  Consider '<br class="">
+                             'decreasing the shard count.\n')<br class="">
+            sys.exit(0)<br class="">
<br class="">
     if opts.max_tests:<br class="">
         tests = tests[:opts.max_tests]<br class="">
@@ -84,7 +95,7 @@ def main(builtin_params = {}):<br class="">
         write_test_results_xunit(tests, opts)<br class="">
<br class="">
     if litConfig.numErrors:<br class="">
-        sys.stderr.write('\n%d error(s), exiting.\n' % litConfig.numErrors)<br class="">
+        sys.stderr.write('\n%d error(s) in tests.\n' % litConfig.numErrors)<br class="">
         sys.exit(2)<br class="">
<br class="">
     if litConfig.numWarnings:<br class="">
<br class="">
diff  --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py<br class="">
index 4d16399fec47..11992c8073d2 100644<br class="">
--- a/llvm/utils/lit/lit/run.py<br class="">
+++ b/llvm/utils/lit/lit/run.py<br class="">
@@ -13,7 +13,7 @@ def acquire(self): pass<br class="">
     def release(self): pass<br class="">
<br class="">
 def create_run(tests, lit_config, workers, progress_callback, timeout=None):<br class="">
-    # TODO(yln) assert workers > 0<br class="">
+    assert workers > 0<br class="">
     if workers == 1:<br class="">
         return SerialRun(tests, lit_config, progress_callback, timeout)<br class="">
     return ParallelRun(tests, lit_config, progress_callback, timeout, workers)<br class="">
@@ -45,9 +45,6 @@ def execute(self):<br class="">
         computed. Tests which were not actually executed (for any reason) will<br class="">
         be given an UNRESOLVED result.<br class="">
         """<br class="">
-        if not self.tests:<br class="">
-            return 0.0<br class="">
-<br class="">
         self.failure_count = 0<br class="">
         self.hit_max_failures = False<br class="">
<br class="">
<br class="">
diff  --git a/llvm/utils/lit/tests/selecting.py b/llvm/utils/lit/tests/selecting.py<br class="">
index 0921cdd31ac9..cfbb9d19b6dc 100644<br class="">
--- a/llvm/utils/lit/tests/selecting.py<br class="">
+++ b/llvm/utils/lit/tests/selecting.py<br class="">
@@ -1,6 +1,18 @@<br class="">
 # RUN: %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-BASIC %s<br class="">
 # CHECK-BASIC: Testing: 5 tests<br class="">
<br class="">
+<br class="">
+# Check that we exit with an error if we do not discover any tests.<br class="">
+#<br class="">
+# RUN: not %{lit} %{inputs}/nonexistent 2>&1 | FileCheck --check-prefix=CHECK-BAD-PATH %s<br class="">
+# CHECK-BAD-PATH: Did not disover any tests for provided path(s).<br class="">
+<br class="">
+# Check that we exit with an error if we filter out all tests.<br class="">
+#<br class="">
+# RUN: not %{lit} --filter 'nonexistent' %{inputs}/discovery 2>&1 | FileCheck --check-prefix=CHECK-BAD-FILTER %s<br class="">
+# CHECK-BAD-FILTER: Filter did not match any tests (of 5 discovered).<br class="">
+<br class="">
+<br class="">
 # Check that regex-filtering works, is case-insensitive, and can be configured via env var.<br class="">
 #<br class="">
 # RUN: %{lit} --filter 'o[a-z]e' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s<br class="">
@@ -8,6 +20,7 @@<br class="">
 # RUN: env LIT_FILTER='o[a-z]e' %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s<br class="">
 # CHECK-FILTER: Testing: 2 of 5 tests<br class="">
<br class="">
+<br class="">
 # Check that maximum counts work<br class="">
 #<br class="">
 # RUN: %{lit} --max-tests 3 %{inputs}/discovery | FileCheck --check-prefix=CHECK-MAX %s<br class="">
@@ -68,15 +81,13 @@<br class="">
 #<br class="">
 # RUN: %{lit} --num-shards 100 --run-shard 6 %{inputs}/discovery >%t.out 2>%t.err<br class="">
 # RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR2 < %t.err %s<br class="">
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-OUT2 < %t.out %s<br class="">
 # CHECK-SHARD-BIG-ERR2: note: Selecting shard 6/100 = size 0/5 = tests #(100*k)+6 = []<br class="">
-# CHECK-SHARD-BIG-OUT2: Testing: 0 of 5 tests<br class="">
+# CHECK-SHARD-BIG-ERR2: Shard does not contain any tests.  Consider decreasing the shard count.<br class="">
 #<br class="">
 # RUN: %{lit} --num-shards 100 --run-shard 50 %{inputs}/discovery >%t.out 2>%t.err<br class="">
 # RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR3 < %t.err %s<br class="">
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-OUT3 < %t.out %s<br class="">
 # CHECK-SHARD-BIG-ERR3: note: Selecting shard 50/100 = size 0/5 = tests #(100*k)+50 = []<br class="">
-# CHECK-SHARD-BIG-OUT3: Testing: 0 of 5 tests<br class="">
+# CHECK-SHARD-BIG-ERR3: Shard does not contain any tests.  Consider decreasing the shard count.<br class="">
<br class="">
<br class="">
 # Check that range constraints are enforced<br class="">
<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div></div>
</div></blockquote></div><br class=""></div></body></html>