[Lit] Sort previously failed tests early
authorDavid Green <david.green@arm.com>
Wed, 27 Jul 2022 16:55:11 +0000 (17:55 +0100)
committerDavid Green <david.green@arm.com>
Wed, 27 Jul 2022 16:55:11 +0000 (17:55 +0100)
D98179 added a mechanism to sort tests by test time to run slow tests
early, increasing potential parallelism. It also added a feature where
negative tests would be marked as negative, allowing subsequent test
runs to run them earlier. Unfortunately it never actually stored the
negative time, even if all the other code seemed to be inplace to sort
them early. Luckily the fix seems simple.

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

llvm/utils/lit/lit/TestTimes.py
llvm/utils/lit/tests/Inputs/reorder/.lit_test_times.txt
llvm/utils/lit/tests/Inputs/reorder/fff.txt [new file with mode: 0644]
llvm/utils/lit/tests/reorder.py

index 621343f..8379cf5 100644 (file)
@@ -28,7 +28,7 @@ def record_test_times(tests, lit_config):
         # used as an actual path to a filesystem API, therefore we use '/' as
         # the canonical separator so that Unix and Windows machines can share
         # timing data.
-        times_by_suite[t.suite.exec_root]['/'.join(t.path_in_suite)] = t.result.elapsed
+        times_by_suite[t.suite.exec_root]['/'.join(t.path_in_suite)] = time
 
     for s, value in times_by_suite.items():
         try:
diff --git a/llvm/utils/lit/tests/Inputs/reorder/fff.txt b/llvm/utils/lit/tests/Inputs/reorder/fff.txt
new file mode 100644 (file)
index 0000000..49932c3
--- /dev/null
@@ -0,0 +1 @@
+# RUN: false
index f911de2..b4d7beb 100644 (file)
@@ -1,7 +1,7 @@
 ## Check that we can reorder test runs.
 
 # RUN: cp %{inputs}/reorder/.lit_test_times.txt %{inputs}/reorder/.lit_test_times.txt.orig
-# RUN: %{lit-no-order-opt} %{inputs}/reorder > %t.out
+# RUN: not %{lit-no-order-opt} %{inputs}/reorder > %t.out
 # RUN: cp %{inputs}/reorder/.lit_test_times.txt %{inputs}/reorder/.lit_test_times.txt.new
 # RUN: cp %{inputs}/reorder/.lit_test_times.txt.orig %{inputs}/reorder/.lit_test_times.txt
 # RUN: not diff %{inputs}/reorder/.lit_test_times.txt.new %{inputs}/reorder/.lit_test_times.txt.orig
 # TIMES: not-executed.txt
 # TIMES-NEXT: subdir/ccc.txt
 # TIMES-NEXT: bbb.txt
+# TIMES-NEXT: -{{.*}} fff.txt
 # TIMES-NEXT: aaa.txt
 # TIMES-NEXT: new-test.txt
 
-# CHECK:     -- Testing: 4 tests, 1 workers --
+# CHECK:     -- Testing: 5 tests, 1 workers --
+# CHECK-NEXT: FAIL: reorder :: fff.txt
 # CHECK-NEXT: PASS: reorder :: subdir/ccc.txt
 # CHECK-NEXT: PASS: reorder :: bbb.txt
 # CHECK-NEXT: PASS: reorder :: aaa.txt