[py-svn] r9645 - in py/branch/py-collect: c-extension misc/testing test2

hpk at codespeak.net hpk at codespeak.net
Fri Mar 4 19:47:56 CET 2005


Author: hpk
Date: Fri Mar  4 19:47:56 2005
New Revision: 9645

Modified:
   py/branch/py-collect/c-extension/   (props changed)
   py/branch/py-collect/misc/testing/test_initpkg.py
   py/branch/py-collect/test2/collect.py
   py/branch/py-collect/test2/drive.py
   py/branch/py-collect/test2/terminal.py
Log:
port some more reporting functionality to the driver 


Modified: py/branch/py-collect/misc/testing/test_initpkg.py
==============================================================================
--- py/branch/py-collect/misc/testing/test_initpkg.py	(original)
+++ py/branch/py-collect/misc/testing/test_initpkg.py	Fri Mar  4 19:47:56 2005
@@ -50,6 +50,7 @@
                 yield check_import, modpath 
 
 def check_import(modpath): 
+    #print "checking import", modpath
     assert __import__(modpath) 
 
 def test_shahexdigest():

Modified: py/branch/py-collect/test2/collect.py
==============================================================================
--- py/branch/py-collect/test2/collect.py	(original)
+++ py/branch/py-collect/test2/collect.py	Fri Mar  4 19:47:56 2005
@@ -272,14 +272,23 @@
 
 class Generator(Collector): 
     def run(self): 
+        #def iterator(): 
+        #    for i,x in py.builtin.enumerate(self.obj()): 
+        #        yield self.join("[%d]" % i)
+        #return py.builtin.collect(iterator()) 
+        self._objlist = list(self.obj())
         return [self.join("[%d]" % i) 
-                    for i in range(len(list(self.obj())))]
+                    for i in range(len(self._objlist))]
 
     def join(self, name): 
         if name[:1] != '[' or name[-1:] != ']': 
             raise NameError("%r is not an index" %(name,))
         num = int(name[1:-1]) 
-        for i, x in py.builtin.enumerate(self.obj()): 
+        try: 
+            objlist = self._objlist
+        except AttributeError: 
+            self._objlist = objlist = list(self.obj())
+        for i, x in py.builtin.enumerate(objlist): 
             if i == num: 
                 if isinstance(x, (Collector, )): 
                     return x 

Modified: py/branch/py-collect/test2/drive.py
==============================================================================
--- py/branch/py-collect/test2/drive.py	(original)
+++ py/branch/py-collect/test2/drive.py	Fri Mar  4 19:47:56 2005
@@ -82,7 +82,8 @@
                 excinfo = py.code.ExceptionInfo() 
                 res = colitem.Failed(excinfo=excinfo) 
             else: 
-                assert res is None or isinstance(res, (list, colitem.Outcome))
+                assert (res is None or isinstance(res, (list, colitem.Outcome)) or 
+                        isinstance(res, py.builtin.collect))
         finally:
             self.finish(colitem, res) 
 

Modified: py/branch/py-collect/test2/terminal.py
==============================================================================
--- py/branch/py-collect/test2/terminal.py	(original)
+++ py/branch/py-collect/test2/terminal.py	Fri Mar  4 19:47:56 2005
@@ -23,15 +23,36 @@
             cols = self._opencollectors
             self.out.line('    ' * len(cols) + repr(colitem))
             cols.append(colitem) 
-        self._started[colitem] = now()
+        else: 
+            if isinstance(colitem, py.test2.Module): 
+                numunits = len(list(colitem.iteritems()))
+                if numunits > 0:
+                    fspath = colitem.fspath 
+                    if self.option.verbose == 0: 
+                        parts = fspath.parts() 
+                        basename = parts.pop().basename
+                        while parts and parts[-1].basename in ('testing', 'test'): 
+                            parts.pop() 
+                        base = parts[-1].basename
+                        if len(base) < 13: 
+                            base = base + "_" * (13-len(base))
+                        abbrev_fn = base + "_" + basename 
+                        self.out.write('%s[%d] ' % (abbrev_fn, numunits))
+                    elif self.option.verbose > 0: 
+                        #curdir = py.path.local()
+                        #if fspath.check(local=True, relto=curdir): 
+                        #    fspath = fspath.relto(curdir) 
+                        self.out.line()
+                        self.out.line("+ testmodule: %s" % fspath) 
         if self.option.verbose >= 1: 
             if isinstance(colitem, py.test2.Item): 
                 realpath, lineno = colitem.getpathlineno()
                 location = "%s:%d" % (realpath.basename, lineno+1)
                 self.out.rewrite("%-20s %s " % (
                     location, colitem.reprcall()))
+        self._started[colitem] = now()
   
-    def finish(self, colitem, res):
+    def finish(self, colitem, result):
         end = now()
         colitem.elapsedtime = end - self._started[colitem]
         if self.option.collectonly: 
@@ -39,21 +60,26 @@
             last = cols.pop()
             #assert last == colitem, "expected %r, got %r" %(last, colitem)
             return
-        super(TerminalDriver, self).finish(colitem, res) 
+        super(TerminalDriver, self).finish(colitem, result) 
         if self.option.usepdb:
-            if isinstance(res, Item.Failed): 
+            if isinstance(result, Item.Failed): 
                 print "dispatching to ppdb", colitem
-                self.repr_failure(colitem, res) 
+                self.repr_failure(colitem, result) 
                 import pdb
                 self.out.rewrite(
                     '\n%s: %s\n'
-                    % (res.excinfo.type.__name__,
-                       res.excinfo.value))
-                pdb.post_mortem(res.excinfo._excinfo[2])
-        if isinstance(res, (colitem.Failed,)): 
+                    % (result.excinfo.type.__name__,
+                       result.excinfo.value))
+                pdb.post_mortem(result.excinfo._excinfo[2])
+        if isinstance(result, (colitem.Failed,)): 
             if self.option.exitfirstproblem:
                 py.test2.exit("exit on first problem configured.", item=colitem)
-        self.repr_result(colitem, res) 
+        if result is None or not isinstance(colitem, py.test2.Item): 
+            if isinstance(colitem, py.test2.Module) and self.option.verbose == 0: 
+                self.out.line() 
+            return
+        else: 
+            self.repr_progress(colitem, result) 
 
     # -------------------
     # HEADER information 
@@ -118,10 +144,7 @@
         else:
             raise TypeError, "not a result instance: %r" % testresult
 
-    def repr_result(self, colitem, result): 
-        if result is None or not isinstance(colitem, py.test2.Item): 
-            #print "colitem not represented", colitem
-            return
+    def repr_progress(self, colitem, result): 
         restype, c = self._processresult(result)
         if self.option.verbose >= 1: 
             resultstring = self.namemap.get(restype, result.__class__.__name__)



More information about the pytest-commit mailing list