<div dir="ltr">My question is: can you run the tests?<div style>With the latest clang trunk, a method in ClangASTSource has to be changed.</div><div style>And even before that revision, clang was asserting, but I can't tell you where, since I can't compile lldb right now.</div>
<div style>I'm still checking out clang, but I'm not very familiar with it.</div><div style><br></div><div style>Regards,</div><div style><br></div><div style>  Filipe</div><div style><br></div><div style>P.S: Yes, progress bar mode seems like a very good idea.</div>
</div><div class="gmail_extra"><br clear="all"><div>  F<br></div>
<br><br><div class="gmail_quote">On Fri, Feb 8, 2013 at 4:37 PM, Enrico Granata <span dir="ltr"><<a href="mailto:egranata@apple.com" target="_blank">egranata@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: enrico<br>
Date: Fri Feb  8 18:37:07 2013<br>
New Revision: 174784<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=174784&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=174784&view=rev</a><br>
Log:<br>
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!)<br>

<br>
Added a new line of information that reports the count of tests that pass, fail or have other things happen to them.<br>
<br>
Again no flag to have the dots back. If you care, let us know!<br>
<br>
<br>
Modified:<br>
    lldb/trunk/test/dotest.py<br>
    lldb/trunk/test/progress.py<br>
    lldb/trunk/test/unittest2/runner.py<br>
<br>
Modified: lldb/trunk/test/dotest.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=174784&r1=174783&r2=174784&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dotest.py?rev=174784&r1=174783&r2=174784&view=diff</a><br>

==============================================================================<br>
--- lldb/trunk/test/dotest.py (original)<br>
+++ lldb/trunk/test/dotest.py Fri Feb  8 18:37:07 2013<br>
@@ -1343,7 +1343,7 @@ for ia in range(len(archs) if iterArchs<br>
                 self.counter = 0<br>
                 (width, height) = LLDBTestResult.getTerminalSize()<br>
                 if width > 10:<br>
-                    self.progressbar = progress.AnimatedProgressBar(stdout=self.stream,start=0,end=suite.countTestCases(),width=width-10)<br>
+                    self.progressbar = progress.ProgressWithEvents(stdout=self.stream,start=0,end=suite.countTestCases(),width=width-10)<br>
<br>
             def _exc_info_to_string(self, err, test):<br>
                 """Overrides superclass TestResult's method in order to append<br>
<br>
Modified: lldb/trunk/test/progress.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/test/progress.py?rev=174784&r1=174783&r2=174784&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/test/progress.py?rev=174784&r1=174783&r2=174784&view=diff</a><br>

==============================================================================<br>
--- lldb/trunk/test/progress.py (original)<br>
+++ lldb/trunk/test/progress.py Fri Feb  8 18:37:07 2013<br>
@@ -96,6 +96,46 @@ class AnimatedProgressBar(ProgressBar):<br>
         self.stdout.write(str(self))<br>
         self.stdout.flush()<br>
<br>
+class ProgressWithEvents(AnimatedProgressBar):<br>
+    """Extends AnimatedProgressBar to allow you to track a set of events that<br>
+       cause the progress to move. For instance, in a deletion progress bar, you<br>
+       can track files that were nuked and files that the user doesn't have access to<br>
+    """<br>
+    def __init__(self,<br>
+                 start=0,<br>
+                 end=10,<br>
+                 width=12,<br>
+                 fill=unichr(0x25C9).encode("utf-8"),<br>
+                 blank=unichr(0x25CC).encode("utf-8"),<br>
+                 marker=unichr(0x25CE).encode("utf-8"),<br>
+                 format='[%(fill)s%(marker)s%(blank)s] %(progress)s%%',<br>
+                 incremental=True,<br>
+                 stdout=sys.stdout):<br>
+        super(ProgressWithEvents, self).__init__(start,end,width,fill,blank,marker,format,incremental,stdout)<br>
+        self.events = {}<br>
+<br>
+    def add_event(self,event):<br>
+        if event in self.events:<br>
+            self.events[event] += 1<br>
+        else:<br>
+            self.events[event] = 1<br>
+<br>
+    def show_progress(self):<br>
+        isatty = hasattr(self.stdout, 'isatty') and self.stdout.isatty()<br>
+        if isatty:<br>
+            self.stdout.write('\r')<br>
+        else:<br>
+            self.stdout.write('\n')<br>
+        self.stdout.write(str(self))<br>
+        if len(self.events) == 0:<br>
+            return<br>
+        self.stdout.write('\n')<br>
+        for key in self.events.keys():<br>
+            self.stdout.write(str(key) + ' = ' + str(self.events[key]) + ' ')<br>
+        if isatty:<br>
+            self.stdout.write('\033[1A')<br>
+        self.stdout.flush()<br>
+<br>
<br>
 if __name__ == '__main__':<br>
     p = AnimatedProgressBar(end=200, width=200)<br>
<br>
Modified: lldb/trunk/test/unittest2/runner.py<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unittest2/runner.py?rev=174784&r1=174783&r2=174784&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/test/unittest2/runner.py?rev=174784&r1=174783&r2=174784&view=diff</a><br>

==============================================================================<br>
--- lldb/trunk/test/unittest2/runner.py (original)<br>
+++ lldb/trunk/test/unittest2/runner.py Fri Feb  8 18:37:07 2013<br>
@@ -62,71 +62,43 @@ class TextTestResult(result.TestResult):<br>
             self.stream.write(" ... ")<br>
             self.stream.flush()<br>
<br>
-    def addSuccess(self, test):<br>
-        super(TextTestResult, self).addSuccess(test)<br>
+    def newTestResult(self,test,result_short,result_long):<br>
         if self.showAll:<br>
-            self.stream.writeln("ok")<br>
+            self.stream.writeln(result_long)<br>
         elif self.progressbar:<br>
             self.progressbar.__add__(1)<br>
+            self.progressbar.add_event(result_short)<br>
             self.progressbar.show_progress()<br>
         elif self.dots:<br>
-            self.stream.write('.')<br>
+            self.stream.write(result_short)<br>
             self.stream.flush()<br>
<br>
+    def addSuccess(self, test):<br>
+        super(TextTestResult, self).addSuccess(test)<br>
+        if self.progressbar:<br>
+            self.newTestResult(test,"ok","ok")<br>
+        else:<br>
+            self.newTestResult(test,".","ok")<br>
+<br>
     def addError(self, test, err):<br>
         super(TextTestResult, self).addError(test, err)<br>
-        if self.showAll:<br>
-            self.stream.writeln("ERROR")<br>
-        elif self.progressbar:<br>
-            self.progressbar.__add__(1)<br>
-            self.progressbar.show_progress()<br>
-        elif self.dots:<br>
-            self.stream.write('E')<br>
-            self.stream.flush()<br>
+        self.newTestResult(test,"E","ERROR")<br>
<br>
     def addFailure(self, test, err):<br>
         super(TextTestResult, self).addFailure(test, err)<br>
-        if self.showAll:<br>
-            self.stream.writeln("FAIL")<br>
-        elif self.progressbar:<br>
-            self.progressbar.__add__(1)<br>
-            self.progressbar.show_progress()<br>
-        elif self.dots:<br>
-            self.stream.write('F')<br>
-            self.stream.flush()<br>
+        self.newTestResult(test,"F","FAILURE")<br>
<br>
     def addSkip(self, test, reason):<br>
         super(TextTestResult, self).addSkip(test, reason)<br>
-        if self.showAll:<br>
-            self.stream.writeln("skipped %r" % (reason,))<br>
-        elif self.progressbar:<br>
-            self.progressbar.__add__(1)<br>
-            self.progressbar.show_progress()<br>
-        elif self.dots:<br>
-            self.stream.write("s")<br>
-            self.stream.flush()<br>
+        self.newTestResult(test,"s","skipped %r" % (reason,))<br>
<br>
     def addExpectedFailure(self, test, err):<br>
         super(TextTestResult, self).addExpectedFailure(test, err)<br>
-        if self.showAll:<br>
-            self.stream.writeln("expected failure")<br>
-        elif self.progressbar:<br>
-            self.progressbar.__add__(1)<br>
-            self.progressbar.show_progress()<br>
-        elif self.dots:<br>
-            self.stream.write("x")<br>
-            self.stream.flush()<br>
+        self.newTestResult(test,"x","expected failure")<br>
<br>
     def addUnexpectedSuccess(self, test):<br>
         super(TextTestResult, self).addUnexpectedSuccess(test)<br>
-        if self.showAll:<br>
-            self.stream.writeln("unexpected success")<br>
-        elif self.progressbar:<br>
-            self.progressbar.__add__(1)<br>
-            self.progressbar.show_progress()<br>
-        elif self.dots:<br>
-            self.stream.write("u")<br>
-            self.stream.flush()<br>
+        self.newTestResult(test,"u","unexpected success")<br>
<br>
     def printErrors(self):<br>
         if self.progressbar:<br>
<br>
<br>
_______________________________________________<br>
lldb-commits mailing list<br>
<a href="mailto:lldb-commits@cs.uiuc.edu">lldb-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits</a><br>
</blockquote></div><br></div>