[py-svn] r63593 - in py/trunk/py/test: . dist dist/testing plugin

hpk at codespeak.net hpk at codespeak.net
Sat Apr 4 00:36:34 CEST 2009


Author: hpk
Date: Sat Apr  4 00:36:29 2009
New Revision: 63593

Modified:
   py/trunk/py/test/dist/testing/test_dsession.py
   py/trunk/py/test/dist/testing/test_txnode.py
   py/trunk/py/test/dist/txnode.py
   py/trunk/py/test/plugin/pytest_default.py
   py/trunk/py/test/pytestplugin.py
   py/trunk/py/test/session.py
Log:
have plugin method run the test item and report about it 


Modified: py/trunk/py/test/dist/testing/test_dsession.py
==============================================================================
--- py/trunk/py/test/dist/testing/test_dsession.py	(original)
+++ py/trunk/py/test/dist/testing/test_dsession.py	Sat Apr  4 00:36:29 2009
@@ -7,9 +7,10 @@
 XSpec = py.execnet.XSpec
 
 def run(item, node):
-    report = item.config.pytestplugins.do_itemrun(item) 
-    report.node = node 
-    return report
+    from py.__.test.runner import basic_run_report
+    rep = basic_run_report(item)
+    rep.node = node
+    return rep 
 
 class MockNode:
     def __init__(self):
@@ -218,7 +219,7 @@
         session.loop_once(loopstate)
 
         assert node.sent == [[item]]
-        ev = run(item, node)
+        ev = run(item, node) 
         session.queueevent("itemtestreport", ev)
         session.loop_once(loopstate)
         assert loopstate.shuttingdown  

Modified: py/trunk/py/test/dist/testing/test_txnode.py
==============================================================================
--- py/trunk/py/test/dist/testing/test_txnode.py	(original)
+++ py/trunk/py/test/dist/testing/test_txnode.py	Sat Apr  4 00:36:29 2009
@@ -28,6 +28,8 @@
                 if name == eventname:
                     return args
                 events.append(name)
+                if name == "internalerror":
+                    print str(kwargs["excrepr"])
 
 class MySetup:
     def __init__(self, pyfuncitem):

Modified: py/trunk/py/test/dist/txnode.py
==============================================================================
--- py/trunk/py/test/dist/txnode.py	(original)
+++ py/trunk/py/test/dist/txnode.py	Sat Apr  4 00:36:29 2009
@@ -106,12 +106,16 @@
     def sendevent(self, eventname, *args, **kwargs):
         self.channel.send((eventname, args, kwargs))
 
+    def pyevent__itemtestreport(self, report):
+        self.sendevent("itemtestreport", report)
+
     def run(self):
         channel = self.channel
         self.config, basetemp = channel.receive()
         if basetemp:
             self.config.basetemp = py.path.local(basetemp)
         self.config.pytestplugins.do_configure(self.config)
+        self.config.pytestplugins.register(self)
         self.sendevent("slaveready")
         try:
             while 1:
@@ -121,16 +125,12 @@
                     break
                 if isinstance(task, list):
                     for item in task:
-                        self.runtest(item)
+                        item.config.pytestplugins.do_itemrun(item)
                 else:
-                    self.runtest(task)
+                    task.config.pytestplugins.do_itemrun(item=task)
         except KeyboardInterrupt:
             raise
         except:
             er = py.code.ExceptionInfo().getrepr(funcargs=True, showlocals=True)
             self.sendevent("internalerror", excrepr=er)
             raise
-
-    def runtest(self, item):
-        report = item.config.pytestplugins.do_itemrun(item)
-        self.sendevent("itemtestreport", report)

Modified: py/trunk/py/test/plugin/pytest_default.py
==============================================================================
--- py/trunk/py/test/plugin/pytest_default.py	(original)
+++ py/trunk/py/test/plugin/pytest_default.py	Sat Apr  4 00:36:29 2009
@@ -10,7 +10,8 @@
         else:
             runner = basic_run_report
         report = runner(item, pdb=pdb) 
-        return report 
+        item.config.pytestplugins.notify("itemtestreport", report) 
+        return True
 
     def pytest_pyfunc_call(self, pyfuncitem, args, kwargs):
         pyfuncitem.obj(*args, **kwargs)

Modified: py/trunk/py/test/pytestplugin.py
==============================================================================
--- py/trunk/py/test/pytestplugin.py	(original)
+++ py/trunk/py/test/pytestplugin.py	Sat Apr  4 00:36:29 2009
@@ -106,7 +106,9 @@
         config.bus.unregister(self)
 
     def do_itemrun(self, item, pdb=None):
-        return self.pyplugins.call_firstresult("pytest_itemrun", item=item, pdb=pdb)
+        res = self.pyplugins.call_firstresult("pytest_itemrun", item=item, pdb=pdb)
+        if res is None:
+            raise ValueError("could not run %r" %(item,))
 
 # 
 #  XXX old code to automatically load classes

Modified: py/trunk/py/test/session.py
==============================================================================
--- py/trunk/py/test/session.py	(original)
+++ py/trunk/py/test/session.py	Sat Apr  4 00:36:29 2009
@@ -105,7 +105,6 @@
         colitems = self.getinitialitems(colitems)
         self.shouldstop = False 
         self.sessionstarts()
-        #self.bus.notify("testnodeready", maketestnodeready())
         exitstatus = outcome.EXIT_OK
         captured_excinfo = None
         try:
@@ -134,5 +133,4 @@
 
     def runtest(self, item):
         pdb = self.config.option.usepdb and self.runpdb or None
-        report = item.config.pytestplugins.do_itemrun(item, pdb=pdb)
-        self.bus.notify("itemtestreport", report) 
+        item.config.pytestplugins.do_itemrun(item, pdb=pdb)



More information about the pytest-commit mailing list