summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlldb/test/dotest.py2
-rwxr-xr-xlldb/test/progress.py40
-rw-r--r--lldb/test/unittest2/runner.py60
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:
OpenPOWER on IntegriCloud