diff options
| -rwxr-xr-x | lldb/test/dotest.py | 2 | ||||
| -rwxr-xr-x | lldb/test/progress.py | 40 | ||||
| -rw-r--r-- | lldb/test/unittest2/runner.py | 60 |
3 files changed, 57 insertions, 45 deletions
diff --git a/lldb/test/dotest.py b/lldb/test/dotest.py index 599bfda2649..4898004c61a 100755 --- a/lldb/test/dotest.py +++ b/lldb/test/dotest.py @@ -1343,7 +1343,7 @@ for ia in range(len(archs) if iterArchs else 1): self.counter = 0 (width, height) = LLDBTestResult.getTerminalSize() if width > 10: - self.progressbar = progress.AnimatedProgressBar(stdout=self.stream,start=0,end=suite.countTestCases(),width=width-10) + self.progressbar = progress.ProgressWithEvents(stdout=self.stream,start=0,end=suite.countTestCases(),width=width-10) def _exc_info_to_string(self, err, test): """Overrides superclass TestResult's method in order to append diff --git a/lldb/test/progress.py b/lldb/test/progress.py index 2d400a6e446..e35080bc5bc 100755 --- a/lldb/test/progress.py +++ b/lldb/test/progress.py @@ -96,6 +96,46 @@ class AnimatedProgressBar(ProgressBar): self.stdout.write(str(self)) self.stdout.flush() +class ProgressWithEvents(AnimatedProgressBar): + """Extends AnimatedProgressBar to allow you to track a set of events that + cause the progress to move. For instance, in a deletion progress bar, you + can track files that were nuked and files that the user doesn't have access to + """ + def __init__(self, + start=0, + end=10, + width=12, + fill=unichr(0x25C9).encode("utf-8"), + blank=unichr(0x25CC).encode("utf-8"), + marker=unichr(0x25CE).encode("utf-8"), + format='[%(fill)s%(marker)s%(blank)s] %(progress)s%%', + incremental=True, + stdout=sys.stdout): + super(ProgressWithEvents, self).__init__(start,end,width,fill,blank,marker,format,incremental,stdout) + self.events = {} + + def add_event(self,event): + if event in self.events: + self.events[event] += 1 + else: + self.events[event] = 1 + + def show_progress(self): + isatty = hasattr(self.stdout, 'isatty') and self.stdout.isatty() + if isatty: + self.stdout.write('\r') + else: + self.stdout.write('\n') + self.stdout.write(str(self)) + if len(self.events) == 0: + return + self.stdout.write('\n') + for key in self.events.keys(): + self.stdout.write(str(key) + ' = ' + str(self.events[key]) + ' ') + if isatty: + self.stdout.write('\033[1A') + self.stdout.flush() + if __name__ == '__main__': p = AnimatedProgressBar(end=200, width=200) diff --git a/lldb/test/unittest2/runner.py b/lldb/test/unittest2/runner.py index accd7f10609..f68e2093ed6 100644 --- a/lldb/test/unittest2/runner.py +++ b/lldb/test/unittest2/runner.py @@ -62,71 +62,43 @@ class TextTestResult(result.TestResult): self.stream.write(" ... ") self.stream.flush() - def addSuccess(self, test): - super(TextTestResult, self).addSuccess(test) + def newTestResult(self,test,result_short,result_long): if self.showAll: - self.stream.writeln("ok") + self.stream.writeln(result_long) elif self.progressbar: self.progressbar.__add__(1) + self.progressbar.add_event(result_short) self.progressbar.show_progress() elif self.dots: - self.stream.write('.') + self.stream.write(result_short) self.stream.flush() + def addSuccess(self, test): + super(TextTestResult, self).addSuccess(test) + if self.progressbar: + self.newTestResult(test,"ok","ok") + else: + self.newTestResult(test,".","ok") + def addError(self, test, err): super(TextTestResult, self).addError(test, err) - if self.showAll: - self.stream.writeln("ERROR") - elif self.progressbar: - self.progressbar.__add__(1) - self.progressbar.show_progress() - elif self.dots: - self.stream.write('E') - self.stream.flush() + self.newTestResult(test,"E","ERROR") def addFailure(self, test, err): super(TextTestResult, self).addFailure(test, err) - if self.showAll: - self.stream.writeln("FAIL") - elif self.progressbar: - self.progressbar.__add__(1) - self.progressbar.show_progress() - elif self.dots: - self.stream.write('F') - self.stream.flush() + self.newTestResult(test,"F","FAILURE") def addSkip(self, test, reason): super(TextTestResult, self).addSkip(test, reason) - if self.showAll: - self.stream.writeln("skipped %r" % (reason,)) - elif self.progressbar: - self.progressbar.__add__(1) - self.progressbar.show_progress() - elif self.dots: - self.stream.write("s") - self.stream.flush() + self.newTestResult(test,"s","skipped %r" % (reason,)) def addExpectedFailure(self, test, err): super(TextTestResult, self).addExpectedFailure(test, err) - if self.showAll: - self.stream.writeln("expected failure") - elif self.progressbar: - self.progressbar.__add__(1) - self.progressbar.show_progress() - elif self.dots: - self.stream.write("x") - self.stream.flush() + self.newTestResult(test,"x","expected failure") def addUnexpectedSuccess(self, test): super(TextTestResult, self).addUnexpectedSuccess(test) - if self.showAll: - self.stream.writeln("unexpected success") - elif self.progressbar: - self.progressbar.__add__(1) - self.progressbar.show_progress() - elif self.dots: - self.stream.write("u") - self.stream.flush() + self.newTestResult(test,"u","unexpected success") def printErrors(self): if self.progressbar: |

