[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