Make the bar graph thing do fractions.
[python_utils.git] / tests / run_tests.py
index 5162e238f1d37181b5dc9ea3988e1a443b3231c4..6f4b399e0e65286e9860fe92376746575dfc297a 100755 (executable)
@@ -372,6 +372,10 @@ def main() -> Optional[int]:
         failed = 0
 
         for thread in threads:
+            (s, tr) = thread.get_status()
+            started += s
+            failed += len(tr.tests_failed) + len(tr.tests_timed_out)
+            done += failed + len(tr.tests_succeeded)
             if not thread.is_alive():
                 tid = thread.name
                 if tid not in results:
@@ -383,11 +387,6 @@ def main() -> Optional[int]:
                                 'Thread %s returned abnormal results; killing the others.', tid
                             )
                             halt_event.set()
-            else:
-                (s, tr) = thread.get_status()
-                started += s
-                failed += len(tr.tests_failed) + len(tr.tests_timed_out)
-                done += failed + len(tr.tests_succeeded)
 
         if started > 0:
             percent_done = done / started
@@ -401,18 +400,19 @@ def main() -> Optional[int]:
 
         if percent_done < 100.0:
             print(
-                text_utils.bar_graph(
-                    percent_done,
+                text_utils.bar_graph_string(
+                    done,
+                    started,
+                    text=text_utils.BarGraphText.FRACTION,
                     width=80,
                     fgcolor=color,
                 ),
                 end='\r',
                 flush=True,
             )
-        else:
-            print("Finished.\n")
         time.sleep(0.5)
 
+    print('\e[2K\rFinal Report:')
     if config.config['coverage']:
         code_coverage_report()
     total_problems = test_results_report(results)