[lit] Extract Display.print_header function
authorJulian Lettner <julian.lettner@gmail.com>
Mon, 25 Feb 2019 07:37:44 +0000 (23:37 -0800)
committerJulian Lettner <julian.lettner@apple.com>
Thu, 31 Oct 2019 18:43:20 +0000 (11:43 -0700)
llvm/utils/lit/lit/ProgressBar.py
llvm/utils/lit/lit/display.py
llvm/utils/lit/lit/main.py

index 57b354e..cefde67 100644 (file)
@@ -241,7 +241,7 @@ class ProgressBar:
         self.useETA = useETA
         if self.useETA:
             self.startTime = time.time()
-        self.update(0, '')
+        self.update(0, '')
 
     def update(self, percent, message):
         if self.cleared:
index 687c57e..05b752a 100644 (file)
@@ -14,30 +14,33 @@ def create_display(opts, tests, total_tests, workers):
         try:
             tc = lit.ProgressBar.TerminalController()
             progress_bar = lit.ProgressBar.ProgressBar(tc, header)
+            header = None
         except ValueError:
-            print(header)
             progress_bar = lit.ProgressBar.SimpleProgressBar('Testing: ')
-    else:
-        print(header)
 
-    if progress_bar:
-        progress_bar.update(0, '')
-
-    return Display(opts, tests, progress_bar)
+    return Display(opts, tests, header, progress_bar)
 
 
 class NopDisplay(object):
+    def print_header(self): pass
     def update(self, test): pass
-    def finish(self): pass
+    def clear(self): pass
 
 
 class Display(object):
-    def __init__(self, opts, tests, progress_bar):
+    def __init__(self, opts, tests, header, progress_bar):
         self.opts = opts
         self.tests = tests
+        self.header = header
         self.progress_bar = progress_bar
         self.completed = 0
 
+    def print_header(self):
+        if self.header:
+            print(self.header)
+        if self.progress_bar:
+            self.progress_bar.update(0.0, '')
+
     def update(self, test):
         self.completed += 1
 
@@ -45,6 +48,8 @@ class Display(object):
                 self.opts.showAllOutput or \
                 (not self.opts.quiet and not self.opts.succinct)
         if show_result:
+            if self.progress_bar:
+                self.progress_bar.clear()
             self.print_result(test)
 
         if self.progress_bar:
@@ -53,15 +58,12 @@ class Display(object):
             percent = float(self.completed) / self.tests
             self.progress_bar.update(percent, test.getFullName())
 
-    def finish(self):
+    def clear(self):
         if self.progress_bar:
             self.progress_bar.clear()
         sys.stdout.write('\n')
 
     def print_result(self, test):
-        if self.progress_bar:
-            self.progress_bar.clear()
-
         # Show the test result line.
         test_name = test.getFullName()
         print('%s: %s (%d of %d)' % (test.result.code.name, test_name,
index 81731e7..337d154 100755 (executable)
@@ -179,6 +179,7 @@ def run_tests(tests, litConfig, opts, numTotalTests):
     run = lit.run.create_run(tests, litConfig, opts.numWorkers,
                              progress_callback, opts.timeout)
 
+    display.print_header()
     try:
         elapsed = execute_in_tmp_dir(run, litConfig)
     except KeyboardInterrupt:
@@ -188,9 +189,9 @@ def run_tests(tests, litConfig, opts, numTotalTests):
     # TODO(yln): change display to update when test starts, not when test completes
     # Ensure everything still works with SimpleProgressBar as well
     # finally:
-    #     display.finish()
+    #     display.clear()
 
-    display.finish()
+    display.clear()
     return elapsed
 
 def execute_in_tmp_dir(run, litConfig):