[py-svn] r37263 - in py/branch/config/py/test: . rsession terminal testing
hpk at codespeak.net
hpk at codespeak.net
Wed Jan 24 14:59:23 CET 2007
Author: hpk
Date: Wed Jan 24 14:59:20 2007
New Revision: 37263
Modified:
py/branch/config/py/test/config.py
py/branch/config/py/test/rsession/slave.py
py/branch/config/py/test/terminal/remote.py
py/branch/config/py/test/testing/test_config.py
Log:
* introduce config.initdirect() which should
be the central place to perform initialization
on remote nodes/sides.
* fix --looponfailing (which works nicely now)
* have Conftest() be an instance instead of
a class-variable (avoid global state)
* more thoroughly use the "config.topdir" concept
(which is not neccessarily the pkgdir.dirpath())
* on merge_repr don't write values to
global defaultconftest module (this
gets tests failing that reuse defaultconftest
module, but also we want to avoid global
state in general)
Modified: py/branch/config/py/test/config.py
==============================================================================
--- py/branch/config/py/test/config.py (original)
+++ py/branch/config/py/test/config.py Wed Jan 24 14:59:20 2007
@@ -56,13 +56,14 @@
def initdirect(self, topdir, repr, coltrails=None):
assert not self._initialized
self._initialized = True
+ self.topdir = py.path.local(topdir)
self.merge_repr(repr)
- self.topdir = topdir
- self.args = coltrails or []
+ self._coltrails = coltrails
def getcolitems(self):
""" return initial collectors. """
- return [self._getcollector(path) for path in self.args]
+ trails = getattr(self, '_coltrails', None)
+ return [self._getcollector(path) for path in (trails or self.args)]
def _getcollector(self, path):
if isinstance(path, tuple):
@@ -187,7 +188,11 @@
value = getattr(self.option, name)
checkmarshal(name, value)
cmdlineopts[name] = value
- return conftestdict, cmdlineopts
+ l = []
+ for path in self.args:
+ path = py.path.local(path)
+ l.append(path.relto(self.topdir))
+ return l, conftestdict, cmdlineopts
def merge_repr(self, repr):
""" merge in the conftest and cmdline option values
@@ -198,10 +203,13 @@
stored on the default conftest module (last
priority) and the cmdline options on self.option.
"""
- defaultconftest = self.conftest.getconftestmodules(None)[0]
- conftestdict, cmdlineopts = repr
- for name, val in conftestdict.items():
- setattr(defaultconftest, name, val)
+ class override:
+ def __init__(self, d):
+ self.__dict__.update(d)
+ args, conftestdict, cmdlineopts = repr
+ self.args = [self.topdir.join(x) for x in args]
+ self.conftest.setinitial(self.args)
+ self.conftest._path2confmods[None].append(override(conftestdict))
for name, val in cmdlineopts.items():
setattr(self.option, name, val)
Modified: py/branch/config/py/test/rsession/slave.py
==============================================================================
--- py/branch/config/py/test/rsession/slave.py (original)
+++ py/branch/config/py/test/rsession/slave.py Wed Jan 24 14:59:20 2007
@@ -130,10 +130,10 @@
config = py.test.config
if config._initialized:
config = config._reparse([basedir])
+ config.merge_repr(config_repr)
else:
- config.conftest.setinitial([basedir])
+ config.initdirect(basedir, config_repr)
#config.conftest.lget('adddefaultoptions')()
- config.merge_repr(config_repr)
if not config.option.nomagic:
py.magic.invoke(assertion=1)
mod = __import__(pkgname)
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 Wed Jan 24 14:59:20 2007
@@ -99,7 +99,7 @@
""", stdout=self.out, stderr=self.out)
print "MASTER: triggered slave terminal session ->"
repr = self.config.make_repr(conftestnames=[])
- channel.send((repr, [str(x) for x in self.config.args], failures))
+ channel.send((str(self.config.topdir), repr, failures))
print "MASTER: send start info"
try:
return channel.receive()
@@ -110,22 +110,16 @@
def slaverun_TerminalSession(channel):
""" we run this on the other side. """
print "SLAVE: starting"
- repr, args, failures = channel.receive()
+ topdir, repr, failures = channel.receive()
print "SLAVE: received configuration"
config = py.test.config
- config.args = args
- config.conftest.setinitial(args)
- config.merge_repr(repr)
+ config.initdirect(topdir, repr, failures)
config.option.looponfailing = False
config.option.usepdb = False
config.option.executable = None
session = config.initsession()
session.shouldclose = channel.isclosed
- if failures:
- cols = getfailureitems(failures)
- else:
- cols = args
print "SLAVE: starting session.main()"
session.main()
failures = session.getitemoutcomepairs(py.test.Item.Failed)
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 Wed Jan 24 14:59:20 2007
@@ -100,8 +100,8 @@
assert gettopdir([c]) == a
assert gettopdir([c, Z]) == tmp
+
def test_config_init_direct():
- py.test.skip("XXX partially not implemented")
tmp = py.test.ensuretemp("initdirect")
tmp.ensure("__init__.py")
tmp.ensure("conftest.py").write("x=1 ; y=2")
@@ -114,12 +114,10 @@
for col1, col2 in zip(config.getcolitems(), config2.getcolitems()):
assert col1.fspath == col2.fspath
py.test.raises(AssertionError, "config2.initdirect(None, None)")
- config3 = py.test.config._reparse([tmp.dirpath()])
- col = config3._getcollector(hello)
- # XXX write repr_colspecs(topdir, cols),
- # and have it consumable by initdirect()
+ from py.__.test.config import Config
+ config3 = Config()
config3.initdirect(topdir=tmp.dirpath(), repr=repr,
- collectspecs=[col.listnames()])
+ coltrails=[(tmp.basename, (hello.basename,))])
assert config3.getvalue('x') == 1
assert config3.getvalue('y') == 2
cols = config.getcolitems()
@@ -127,8 +125,7 @@
col = cols[0]
assert col.name == 'test_hello.py'
assert col.parent.name == tmp.basename
- assert col.parent.parent.name == tmp.dirpath().basename
- assert col.parent.parent.parent is None
+ assert col.parent.parent is None
def test_config_make_and_merge_repr():
tmp = py.test.ensuretemp("reprconfig1")
More information about the pytest-commit
mailing list