diff options
author | Enrico Granata <egranata@apple.com> | 2013-02-09 00:37:07 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2013-02-09 00:37:07 +0000 |
commit | eba9e4a3aaaf280d76db0e8eb4af80f374a3a04e (patch) | |
tree | bf3c7999b278d62efee02f2a76f6e513f4e7d022 | |
parent | fac770b865f59cbe615241dad153ad20d5138b9e (diff) | |
download | bcm5719-llvm-eba9e4a3aaaf280d76db0e8eb4af80f374a3a04e.tar.gz bcm5719-llvm-eba9e4a3aaaf280d76db0e8eb4af80f374a3a04e.zip |
The new progress bar mode was losing us information compared to the old dots mode in that we would have no way of knowing about test failures (short of peeking into the test result directory.. and you're not supposed to peek!)
Added a new line of information that reports the count of tests that pass, fail or have other things happen to them.
Again no flag to have the dots back. If you care, let us know!
llvm-svn: 174784
-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: |