[py-svn] r37055 - in py/branch/config/py/test: . terminal testing
hpk at codespeak.net
hpk at codespeak.net
Sat Jan 20 12:52:00 CET 2007
Author: hpk
Date: Sat Jan 20 12:51:54 2007
New Revision: 37055
Modified:
py/branch/config/py/test/cmdline.py
py/branch/config/py/test/config.py
py/branch/config/py/test/defaultconftest.py
py/branch/config/py/test/terminal/remote.py
py/branch/config/py/test/testing/test_collect.py
py/branch/config/py/test/testing/test_config.py
py/branch/config/py/test/testing/test_session.py
Log:
reintroducing --session to lookup custom session objects in conftests.py
there is no other way to override a session object from conftests.
Modified: py/branch/config/py/test/cmdline.py
==============================================================================
--- py/branch/config/py/test/cmdline.py (original)
+++ py/branch/config/py/test/cmdline.py Sat Jan 20 12:51:54 2007
@@ -10,9 +10,7 @@
args = py.std.sys.argv[1:]
config = py.test.config
config.parse(args)
- sessionclass = config.getsessionclass()
- session = sessionclass(config)
-
+ session = config.initsession()
try:
failures = session.main()
if failures:
Modified: py/branch/config/py/test/config.py
==============================================================================
--- py/branch/config/py/test/config.py (original)
+++ py/branch/config/py/test/config.py Sat Jan 20 12:51:54 2007
@@ -76,23 +76,27 @@
except KeyError:
return self.conftest.rget(name, path)
- def getsessionclass(self):
+ def initsession(self):
+ """ return an initialized session object. """
+ cls = self._getsessionclass()
+ session = cls(config)
+ #session.fixoptions()
+ return session
+
+ def _getsessionclass(self):
""" return Session class determined from cmdline options
and looked up in initial config modules.
"""
- name = self._getsessionname()
- return self._lookupsession(name)
-
- def _lookupsession(self, name):
- """ return session class for the given name. """
- res = self.conftest.rget(name)
- if isinstance(res, str):
- mod = __import__(res, None, None, '__doc__')
- res = getattr(mod, name)
- return res
+ if self.option.session is not None:
+ return self.conftest.rget(self.option.session)
+ else:
+ name = self._getsessionname()
+ importpath = globals()[name]
+ mod = __import__(importpath, None, None, '__doc__')
+ return getattr(mod, name)
def _getsessionname(self):
- """ return session name as determined from options. """
+ """ return default session name as determined from options. """
name = 'TerminalSession'
if self.option.dist:
name = 'RSession'
@@ -162,6 +166,13 @@
# this is the one per-process instance of py.test configuration
config = Config()
+# default import paths for sessions
+
+TkinterSession = 'py.__.test.tkinter.reportsession'
+TerminalSession = 'py.__.test.terminal.terminal'
+RSession = 'py.__.test.rsession.rsession'
+LSession = 'py.__.test.rsession.rsession'
+
#
# helpers
#
Modified: py/branch/config/py/test/defaultconftest.py
==============================================================================
--- py/branch/config/py/test/defaultconftest.py (original)
+++ py/branch/config/py/test/defaultconftest.py Sat Jan 20 12:51:54 2007
@@ -10,13 +10,6 @@
additionalinfo = None
-# ===================================================
-# Default Sessions
-
-TkinterSession = 'py.__.test.tkinter.reportsession'
-TerminalSession = 'py.__.test.terminal.terminal'
-RSession = 'py.__.test.rsession.rsession'
-LSession = 'py.__.test.rsession.rsession'
# ===================================================
# Distributed testing specific options
@@ -73,13 +66,9 @@
Option('', '--traceconfig',
action="store_true", dest="traceconfig", default=False,
help="trace considerations of conftest.py files."),
- Option('', '--apigen',
- action="store", dest="apigen",
- help="generate api documentation while testing (requires"
- "argument pointing to a script)."),
)
- py.test.config.addoptions('options implying subprocesses (warning: beta)',
+ py.test.config.addoptions('EXPERIMENTAL options implying subprocesses',
Option('', '--tkinter',
action="store_true", dest="tkinter", default=False,
help="use tkinter test session frontend."),
@@ -103,5 +92,12 @@
Option('-r', '--rest',
action='store_true', dest="restreport", default=False,
help="restructured text output reporting."),
+ Option('', '--apigen',
+ action="store", dest="apigen",
+ help="generate api documentation while testing (requires"
+ "argument pointing to a script)."),
+ Option('', '--session',
+ action="store", dest="session", default=None,
+ help="lookup sessioname in conftest.py files and use it."),
)
Modified: py/branch/config/py/test/terminal/remote.py
==============================================================================
--- py/branch/config/py/test/terminal/remote.py (original)
+++ py/branch/config/py/test/terminal/remote.py Sat Jan 20 12:51:54 2007
@@ -64,7 +64,7 @@
else:
cols = args
#print "processing", cols
- session = config.getsessionclass()(config)
+ session = config._getsessionclass()(config)
session.shouldclose = channel.isclosed
failures = session.main()
channel.send(failures)
Modified: py/branch/config/py/test/testing/test_collect.py
==============================================================================
--- py/branch/config/py/test/testing/test_collect.py (original)
+++ py/branch/config/py/test/testing/test_collect.py Sat Jan 20 12:51:54 2007
@@ -215,7 +215,7 @@
try:
config = py.test.config._reparse([])
out = py.std.cStringIO.StringIO()
- session = config.getsessionclass()(config, out)
+ session = config._getsessionclass()(config, out)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Passed)
assert len(l) == 2
@@ -225,7 +225,7 @@
# test that running the file directly works
config = py.test.config._reparse([str(checkfile)])
out = py.std.cStringIO.StringIO()
- session = config.getsessionclass()(config, out)
+ session = config._getsessionclass()(config, out)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Passed)
assert len(l) == 2
@@ -262,7 +262,7 @@
try:
config = py.test.config._reparse([])
out = py.std.cStringIO.StringIO()
- session = config.getsessionclass()(config, out)
+ session = config._getsessionclass()(config, out)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Passed)
assert len(l) == 1
@@ -272,7 +272,7 @@
# test that running the file directly works
config = py.test.config._reparse([str(checkfile)])
out = py.std.cStringIO.StringIO()
- session = config.getsessionclass()(config, out)
+ session = config._getsessionclass()(config, out)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Passed)
assert len(l) == 1
Modified: py/branch/config/py/test/testing/test_config.py
==============================================================================
--- py/branch/config/py/test/testing/test_config.py (original)
+++ py/branch/config/py/test/testing/test_config.py Sat Jan 20 12:51:54 2007
@@ -155,22 +155,15 @@
def test_tkintersession(self):
config = py.test.config._reparse([self.tmpdir, '--tkinter'])
assert config._getsessionname() == 'TkinterSession'
-
- def test_sessionname_lookup(self):
- config = py.test.config._reparse([self.tmpdir])
- for name in 'TerminalSession LSession RSession TkinterSession'.split():
- cls = config._lookupsession(name)
- assert cls.__name__ == name
+ config = py.test.config._reparse([self.tmpdir, '--dist'])
def test_sessionname_lookup_custom(self):
self.tmpdir.join("conftest.py").write(py.code.Source("""
- TerminalSession = 0
- TkinterSession = 1
- RSession = 2
- LSession = 3
+ class MySession:
+ def __init__(self, config):
+ self.config = config
"""))
- config = py.test.config._reparse([self.tmpdir])
- assert config._lookupsession('TerminalSession') == 0
- assert config._lookupsession('TkinterSession') == 1
- assert config._lookupsession('RSession') == 2
- assert config._lookupsession('LSession') == 3
+ config = py.test.config._reparse(["--session=MySession", self.tmpdir])
+ session = config.initsession()
+ assert session.__class__.__name__ == 'MySession'
+
Modified: py/branch/config/py/test/testing/test_session.py
==============================================================================
--- py/branch/config/py/test/testing/test_session.py (original)
+++ py/branch/config/py/test/testing/test_session.py Sat Jan 20 12:51:54 2007
@@ -8,7 +8,7 @@
class TestDefaultSession:
def test_simple(self):
config = py.test.config._reparse([datadir/'filetest.py'])
- session = config.getsessionclass()(config, py.std.sys.stdout)
+ session = config._getsessionclass()(config, py.std.sys.stdout)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Failed)
assert len(l) == 2
@@ -18,7 +18,7 @@
def test_simple_verbose(self):
config = py.test.config._reparse([datadir/'filetest.py',
'--verbose'])
- session = config.getsessionclass()(config, py.std.sys.stdout)
+ session = config._getsessionclass()(config, py.std.sys.stdout)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Failed)
assert len(l) == 2
@@ -28,7 +28,7 @@
def test_simple_verbose_verbose(self):
config = py.test.config._reparse([datadir/'filetest.py',
'-v', '-v'])
- session = config.getsessionclass()(config, py.std.sys.stdout)
+ session = config._getsessionclass()(config, py.std.sys.stdout)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Failed)
assert len(l) == 2
@@ -40,7 +40,7 @@
for keyword in ['test_one', 'est_on']:
config = py.test.config._reparse([datadir/'filetest.py',
'-k', keyword])
- session = config.getsessionclass()(config, py.std.sys.stdout)
+ session = config._getsessionclass()(config, py.std.sys.stdout)
session.main()
l = session.getitemoutcomepairs(py.test.Item.Failed)
assert len(l) == 1
@@ -69,7 +69,7 @@
'TestClass test_2', 'xxx TestClass test_2',):
f = py.std.StringIO.StringIO()
config = py.test.config._reparse([o, '-k', keyword])
- session = config.getsessionclass()(config, f)
+ session = config._getsessionclass()(config, f)
session.main()
print "keyword", repr(keyword)
l = session.getitemoutcomepairs(py.test.Item.Passed)
@@ -339,7 +339,7 @@
['--exec=' + py.std.sys.executable,
o])
assert config.option._remote
- cls = config.getsessionclass()
+ cls = config._getsessionclass()
out = [] # out = py.std.Queue.Queue()
session = cls(config, out.append)
session.main()
@@ -359,7 +359,7 @@
print py.std.sys.executable
config = py.test.config._reparse(['--looponfailing', str(o)])
assert config.option._remote
- cls = config.getsessionclass()
+ cls = config._getsessionclass()
out = py.std.Queue.Queue()
session = cls(config, out.put)
pool = py._thread.WorkerPool()
More information about the pytest-commit
mailing list