Adds timer next to progress bar in run_tests.py.
[pyutils.git] / tests / run_tests.py
index 06d4a9c839f71013674f907391c2b64eea610d67..3b74ccb8cd6a3aa9d008e262b849b21938e72965 100755 (executable)
@@ -18,7 +18,6 @@ from overrides import overrides
 
 from pyutils import ansi, bootstrap, config, dict_utils, exec_utils, text_utils
 from pyutils.files import file_utils
-from pyutils.parallelize import deferred_operand
 from pyutils.parallelize import parallelize as par
 from pyutils.parallelize import smart_future, thread_utils
 
@@ -122,7 +121,7 @@ class TestResults:
             out += '\n'
 
         if len(self.tests_timed_out) > 0:
-            out += f'  ..{ansi.fg("yellow")}'
+            out += f'  ..{ansi.fg("lightning yellow")}'
             out += f'{len(self.tests_timed_out)} tests timed out'
             out += f'{ansi.reset()}:\n'
             for test in self.tests_failed:
@@ -289,8 +288,7 @@ class TemplatedTestRunner(TestRunner, ABC):
             )
             self.test_results.tests_executed[test_to_run.name] = time.time()
 
-        for future in smart_future.wait_any(running, log_exceptions=False):
-            result = deferred_operand.DeferredOperand.resolve(future)
+        for result in smart_future.wait_any(running, log_exceptions=False):
             logger.debug('Test %s finished.', result.name)
 
             # We sometimes run the same test more than once.  Do not allow
@@ -590,13 +588,14 @@ def main() -> Optional[int]:
                     done,
                     started,
                     text=text_utils.BarGraphText.FRACTION,
-                    width=80,
+                    width=72,
                     fgcolor=color,
                 ),
-                end='\r',
+                end='',
                 flush=True,
             )
-        time.sleep(0.5)
+            print(f'  {color}{now - start_time:.1f}s{ansi.reset()}', end='\r')
+        time.sleep(0.1)
 
     print(f'{ansi.clear_line()}Final Report:')
     if config.config['coverage']: