[py-svn] r17671 - py/branch/monday/py/test/terminal

hpk at codespeak.net hpk at codespeak.net
Mon Sep 19 21:06:44 CEST 2005


Author: hpk
Date: Mon Sep 19 21:06:43 2005
New Revision: 17671

Modified:
   py/branch/monday/py/test/terminal/terminal.py
Log:
(jan, arigo)

Shuffled stuff around: preparation for methods that can more easily
move to a Reporter class.



Modified: py/branch/monday/py/test/terminal/terminal.py
==============================================================================
--- py/branch/monday/py/test/terminal/terminal.py	(original)
+++ py/branch/monday/py/test/terminal/terminal.py	Mon Sep 19 21:06:43 2005
@@ -277,11 +277,12 @@
                     self.out.line()
             else: 
                 self.out.line("")
+            source = self.getentrysource(entry)
             if entry == last: 
-                indent = self.repr_source(entry, 'E') 
-                self.repr_failure_explanation(excinfo, indent) 
+                self.repr_source(source, 'E')
+                self.repr_failure_explanation(excinfo, source) 
             else:
-                self.repr_source(entry, '>') 
+                self.repr_source(source, '>') 
             self.out.line("") 
             self.out.line("[%s:%d]" %(entry.frame.code.path, entry.lineno+1))  
             self.repr_locals(entry) 
@@ -317,30 +318,27 @@
         else:
             self.out.sep("_", "entrypoint: %s %s" %(root.basename, modpath))
 
-    def repr_source(self, entry, marker=">"): 
+    def getentrysource(self, entry):
         try: 
             source = entry.getsource() 
         except py.error.ENOENT:
-            self.out.line("[failure to get at sourcelines from %r]\n" % entry)
-        else: 
-            source = source.deindent() 
-            for line in source[:-1]: 
-                self.out.line("    " + line) 
-            lastline = source[-1]
-            self.out.line(marker + "   " + lastline) 
-            try: 
-                s = str(source.getstatement(len(source)-1))
-            except KeyboardInterrupt: 
-                raise 
-            except: 
-                #self.out.line("[failed to get last statement]\n%s" %(source,))
-                s = str(source[-1])
-            #print "XXX %r" % s
-            return 4 + (len(s) - len(s.lstrip()))
-        return 0 
+            source = py.code.Source("[failure to get at sourcelines from %r]\n" % entry)
+        return source.deindent()
 
-    def repr_failure_explanation(self, excinfo, indent): 
-        indent = " " * indent 
+    def repr_source(self, source, marker=">"):
+        for line in source[:-1]: 
+            self.out.line("    " + line) 
+        lastline = source[-1]
+        self.out.line(marker + "   " + lastline) 
+
+    def repr_failure_explanation(self, excinfo, source): 
+        try: 
+            s = str(source.getstatement(len(source)-1))
+        except KeyboardInterrupt: 
+            raise 
+        except: 
+            s = str(source[-1])
+        indent = " " * (4 + (len(s) - len(s.lstrip())))
         # get the real exception information out 
         lines = excinfo.exconly(tryshort=True).split('\n') 
         self.out.line('>' + indent[:-1] + lines.pop(0)) 



More information about the pytest-commit mailing list