[py-svn] r31467 - in py/branch/distributed/py/test/rsession: . testing

hpk at codespeak.net hpk at codespeak.net
Tue Aug 22 15:23:50 CEST 2006


Author: hpk
Date: Tue Aug 22 15:23:47 2006
New Revision: 31467

Modified:
   py/branch/distributed/py/test/rsession/executor.py
   py/branch/distributed/py/test/rsession/testing/test_executor.py
   py/branch/distributed/py/test/rsession/testing/test_slavenode.py
Log:
(fijal, hpk) refine outcome interface and add setup/actual test run distinction.


Modified: py/branch/distributed/py/test/rsession/executor.py
==============================================================================
--- py/branch/distributed/py/test/rsession/executor.py	(original)
+++ py/branch/distributed/py/test/rsession/executor.py	Tue Aug 22 15:23:47 2006
@@ -7,28 +7,35 @@
     pass
 
 class FailingOutcome(Outcome):
-    def __init__(self, excinfo):
+    passed = False
+    def __init__(self, excinfo, setupfailure=False):
         self.excinfo = excinfo
-    
-    def haspassed(self):
-        return False
+        self.setupfailure = setupfailure 
 
 class PassingOutcome(Outcome):
-    def haspassed(self):
-        return True
+    passed = True
+    setupfailure = False 
 
 class Executor(object):
-    def __init__(self, fun):
+    def __init__(self, fun, setup=lambda: None): 
         self.fun = fun
+        self.setup = setup
     
-    def execute(self):
+    def _execute(self, fun):
         try:
-            self.fun()
+            fun()
         except Exception, e:
             excinfo = py.code.ExceptionInfo()
-            code = py.code.Code(self.fun)
+            code = py.code.Code(fun)
             excinfo.traceback = excinfo.traceback.cut(
                     path=code.path, firstlineno=code.firstlineno)
-            return FailingOutcome(excinfo)
-        else:
-            return PassingOutcome()
+            return excinfo 
+
+    def execute(self):
+        excinfo = self._execute(self.setup)
+        if excinfo is not None:
+            return FailingOutcome(excinfo, setupfailure=True)
+        excinfo = self._execute(self.fun)
+        if excinfo is not None:
+            return FailingOutcome(excinfo, setupfailure=False)
+        return PassingOutcome()

Modified: py/branch/distributed/py/test/rsession/testing/test_executor.py
==============================================================================
--- py/branch/distributed/py/test/rsession/testing/test_executor.py	(original)
+++ py/branch/distributed/py/test/rsession/testing/test_executor.py	Tue Aug 22 15:23:47 2006
@@ -7,12 +7,12 @@
 def test_executor_passing_function():
     ex = Executor(example1.f1)
     outcome = ex.execute()
-    assert outcome.haspassed() 
+    assert outcome.passed 
 
 def test_executor_raising_function():
     ex = Executor(example1.g1)
     outcome = ex.execute()
-    assert not outcome.haspassed() 
+    assert not outcome.passed 
     excinfo = outcome.excinfo
     assert excinfo.type == ValueError
 
@@ -23,3 +23,18 @@
     assert len(excinfo.traceback) == 2
     assert excinfo.traceback[1].frame.code.name == 'g2'
     assert excinfo.traceback[0].frame.code.name == 'g1'
+
+def test_executor_setup_passing(): 
+    ex = Executor(example1.f1, setup=lambda: None)
+    outcome = ex.execute()
+    assert outcome.passed 
+    assert not outcome.setupfailure 
+
+def test_executor_setup_failing(): 
+    def failingsetup():
+        raise ValueError
+    ex = Executor(example1.f1, setup=failingsetup)
+    outcome = ex.execute()
+    assert not outcome.passed 
+    assert outcome.setupfailure 
+    assert outcome.excinfo.traceback[-1].frame.code.name == 'failingsetup'

Modified: py/branch/distributed/py/test/rsession/testing/test_slavenode.py
==============================================================================
--- py/branch/distributed/py/test/rsession/testing/test_slavenode.py	(original)
+++ py/branch/distributed/py/test/rsession/testing/test_slavenode.py	Tue Aug 22 15:23:47 2006
@@ -24,10 +24,10 @@
     assert res is None 
 
 #def test_slavenode_dispatch_passing(self):
-    #outcome = node.run("execitem", 
-    #         "py.__.test.rsession.testing.test_slavenode.funcpass"
-    #         .split('.'),
-    #)
+#    outcome = node.run("execitem", 
+#             "py.__.test.rsession.testing.test_slavenode.funcpass"
+#             .split('.'),
+##    )
     #assert outcome.haspassed()
 
 #def test_slavenode_dispatch_failing(self):



More information about the pytest-commit mailing list