[py-svn] r45667 - py/branch/session-cleanups/py/test/rsession

fijal at codespeak.net fijal at codespeak.net
Wed Aug 15 12:36:44 CEST 2007


Author: fijal
Date: Wed Aug 15 12:36:44 2007
New Revision: 45667

Modified:
   py/branch/session-cleanups/py/test/rsession/master.py
   py/branch/session-cleanups/py/test/rsession/rsession.py
Log:
Remove _tryiter from rsession


Modified: py/branch/session-cleanups/py/test/rsession/master.py
==============================================================================
--- py/branch/session-cleanups/py/test/rsession/master.py	(original)
+++ py/branch/session-cleanups/py/test/rsession/master.py	Wed Aug 15 12:36:44 2007
@@ -4,6 +4,7 @@
 import py
 from py.__.test.rsession.outcome import ReprOutcome
 from py.__.test.rsession import repevent
+from py.__.test.outcome import Skipped
 
 class MasterNode(object):
     def __init__(self, channel, reporter):
@@ -39,12 +40,30 @@
             #      of hanging nodes and such
             raise
 
-def itemgen(colitems, reporter, keyword, reporterror):
-    def rep(x):
-        reporterror(reporter, x)
-    for x in colitems:
-        for y in x._tryiter(reporterror=rep, keyword=keyword):
-            yield y
+def itemgen(colitems, reporter, keyword=None):
+    stopitems = py.test.collect.Item # XXX should be generator here as well
+    for next in colitems:
+        if isinstance(next, stopitems):
+            try:
+                next._skipbykeyword(keyword)
+                yield next
+            except Skipped:
+                excinfo = py.code.ExceptionInfo()
+                reporter(repevent.SkippedTryiter(excinfo, next))
+        else:
+            reporter(repevent.ItemStart(next))
+            try:
+                for x in itemgen([next.join(x) for x in next.run()], reporter,
+                                 keyword):
+                    yield x
+            except (KeyboardInterrupt, SystemExit):
+                raise
+            except:
+                excinfo = py.code.ExceptionInfo()
+                if excinfo.type is Skipped:
+                    reporter(repevent.SkippedTryiter(excinfo, next))
+                else:
+                    reporter(repevent.FailedTryiter(excinfo, next))
 
 def dispatch_loop(masternodes, itemgenerator, shouldstop, 
                   waiter = lambda: py.std.time.sleep(0.1),

Modified: py/branch/session-cleanups/py/test/rsession/rsession.py
==============================================================================
--- py/branch/session-cleanups/py/test/rsession/rsession.py	(original)
+++ py/branch/session-cleanups/py/test/rsession/rsession.py	Wed Aug 15 12:36:44 2007
@@ -69,16 +69,6 @@
         
         return reporter, startserverflag
     
-    def reporterror(reporter, data):
-        excinfo, item = data
-        if excinfo is None:
-            reporter(repevent.ItemStart(item))
-        elif excinfo.type is Skipped:
-            reporter(repevent.SkippedTryiter(excinfo, item))
-        else:
-            reporter(repevent.FailedTryiter(excinfo, item))
-    reporterror = staticmethod(reporterror)
-
     def kill_server(self, startserverflag):
         """ Kill web server
         """
@@ -171,8 +161,7 @@
     def dispatch_tests(self, nodes, reporter, checkfun):
         colitems = self.config.getcolitems()
         keyword = self.config.option.keyword
-        itemgenerator = itemgen(colitems, reporter, keyword, self.reporterror)
-        
+        itemgenerator = itemgen(colitems, reporter, keyword)
         all_tests = dispatch_loop(nodes, itemgenerator, checkfun)
 
 class LSession(AbstractSession):
@@ -200,7 +189,7 @@
 
         keyword = self.config.option.keyword
 
-        itemgenerator = itemgen(colitems, reporter, keyword, self.reporterror)
+        itemgenerator = itemgen(colitems, reporter, keyword)
         local_loop(self, reporter, itemgenerator, checkfun, self.config, runner=runner)
         
         retval = reporter(repevent.TestFinished())


More information about the py-svn mailing list