[svn r63162] all tests pass again, output on test node setup and initialization is now much nicer.
--HG-- branch : trunk
This commit is contained in:
parent
35aebfc775
commit
6a1db0a594
12
py/_com.py
12
py/_com.py
|
@ -36,22 +36,22 @@ class MultiCall:
|
||||||
|
|
||||||
def execute(self, firstresult=False):
|
def execute(self, firstresult=False):
|
||||||
while self.methods:
|
while self.methods:
|
||||||
self.currentmethod = self.methods.pop()
|
self.currentmethod = currentmethod = self.methods.pop()
|
||||||
# provide call introspection if "__call__" is the first positional argument
|
# provide call introspection if "__call__" is the first positional argument
|
||||||
if hasattr(self.currentmethod, 'im_self'):
|
if hasattr(currentmethod, 'im_self'):
|
||||||
varnames = self.currentmethod.im_func.func_code.co_varnames
|
varnames = currentmethod.im_func.func_code.co_varnames
|
||||||
needscall = varnames[1:2] == ('__call__',)
|
needscall = varnames[1:2] == ('__call__',)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
varnames = self.currentmethod.func_code.co_varnames
|
varnames = currentmethod.func_code.co_varnames
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# builtin function
|
# builtin function
|
||||||
varnames = ()
|
varnames = ()
|
||||||
needscall = varnames[:1] == ('__call__',)
|
needscall = varnames[:1] == ('__call__',)
|
||||||
if needscall:
|
if needscall:
|
||||||
res = self.currentmethod(self, *self.args, **self.kwargs)
|
res = currentmethod(self, *self.args, **self.kwargs)
|
||||||
else:
|
else:
|
||||||
res = self.currentmethod(*self.args, **self.kwargs)
|
res = currentmethod(*self.args, **self.kwargs)
|
||||||
if hasattr(self, '_ex1'):
|
if hasattr(self, '_ex1'):
|
||||||
self.results = [res]
|
self.results = [res]
|
||||||
break
|
break
|
||||||
|
|
|
@ -249,6 +249,7 @@ class Gateway(object):
|
||||||
channel.send(dict(
|
channel.send(dict(
|
||||||
executable = sys.executable,
|
executable = sys.executable,
|
||||||
version_info = sys.version_info,
|
version_info = sys.version_info,
|
||||||
|
platform = sys.platform,
|
||||||
cwd = os.getcwd(),
|
cwd = os.getcwd(),
|
||||||
))
|
))
|
||||||
""").receive())
|
""").receive())
|
||||||
|
|
|
@ -34,7 +34,7 @@ class GatewayManager:
|
||||||
gw = py.execnet.makegateway(spec)
|
gw = py.execnet.makegateway(spec)
|
||||||
self.gateways.append(gw)
|
self.gateways.append(gw)
|
||||||
gw.id = "[%s]" % len(self.gateways)
|
gw.id = "[%s]" % len(self.gateways)
|
||||||
self.notify("gwmanage_newgateway", gw)
|
self.notify("gwmanage_newgateway", gw, gw._rinfo())
|
||||||
|
|
||||||
def getgateways(self, remote=True, inplacelocal=True):
|
def getgateways(self, remote=True, inplacelocal=True):
|
||||||
if not self.gateways and self.specs:
|
if not self.gateways and self.specs:
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
|
||||||
|
pytest_plugins = "pytest_pytester"
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
import py
|
import py
|
||||||
from py.__.execnet.gwmanage import GatewayManager, HostRSync
|
from py.__.execnet.gwmanage import GatewayManager, HostRSync
|
||||||
|
|
||||||
pytest_plugins = "pytest_pytester"
|
|
||||||
|
|
||||||
class TestGatewayManagerPopen:
|
class TestGatewayManagerPopen:
|
||||||
def test_popen_no_default_chdir(self):
|
def test_popen_no_default_chdir(self):
|
||||||
gm = GatewayManager(["popen"])
|
gm = GatewayManager(["popen"])
|
||||||
|
@ -22,20 +20,21 @@ class TestGatewayManagerPopen:
|
||||||
for spec in GatewayManager(l, defaultchdir="abc").specs:
|
for spec in GatewayManager(l, defaultchdir="abc").specs:
|
||||||
assert spec.chdir == "abc"
|
assert spec.chdir == "abc"
|
||||||
|
|
||||||
def test_hostmanager_popen_makegateway(self, eventrecorder):
|
def test_popen_makegateway_events(self, eventrecorder):
|
||||||
hm = GatewayManager(["popen"] * 2)
|
hm = GatewayManager(["popen"] * 2)
|
||||||
hm.makegateways()
|
hm.makegateways()
|
||||||
event = eventrecorder.popevent("gwmanage_newgateway")
|
event = eventrecorder.popevent("gwmanage_newgateway")
|
||||||
gw = event.args[0]
|
gw, platinfo = event.args[:2]
|
||||||
assert gw.id == "[1]"
|
assert gw.id == "[1]"
|
||||||
|
platinfo.executable = gw._rinfo().executable
|
||||||
event = eventrecorder.popevent("gwmanage_newgateway")
|
event = eventrecorder.popevent("gwmanage_newgateway")
|
||||||
gw = event.args[0]
|
gw, platinfo = event.args[:2]
|
||||||
assert gw.id == "[2]"
|
assert gw.id == "[2]"
|
||||||
assert len(hm.gateways) == 2
|
assert len(hm.gateways) == 2
|
||||||
hm.exit()
|
hm.exit()
|
||||||
assert not len(hm.gateways)
|
assert not len(hm.gateways)
|
||||||
|
|
||||||
def test_hostmanager_popens_rsync(self, source):
|
def test_popens_rsync(self, source):
|
||||||
hm = GatewayManager(["popen"] * 2)
|
hm = GatewayManager(["popen"] * 2)
|
||||||
hm.makegateways()
|
hm.makegateways()
|
||||||
assert len(hm.gateways) == 2
|
assert len(hm.gateways) == 2
|
||||||
|
@ -47,7 +46,7 @@ class TestGatewayManagerPopen:
|
||||||
hm.exit()
|
hm.exit()
|
||||||
assert not len(hm.gateways)
|
assert not len(hm.gateways)
|
||||||
|
|
||||||
def test_hostmanager_rsync_popen_with_path(self, source, dest):
|
def test_rsync_popen_with_path(self, source, dest):
|
||||||
hm = GatewayManager(["popen//chdir=%s" %dest] * 1)
|
hm = GatewayManager(["popen//chdir=%s" %dest] * 1)
|
||||||
hm.makegateways()
|
hm.makegateways()
|
||||||
source.ensure("dir1", "dir2", "hello")
|
source.ensure("dir1", "dir2", "hello")
|
||||||
|
|
|
@ -250,6 +250,45 @@ class Config(object):
|
||||||
else:
|
else:
|
||||||
raise ValueError("unknown io capturing: " + iocapture)
|
raise ValueError("unknown io capturing: " + iocapture)
|
||||||
|
|
||||||
|
def getxspecs(self):
|
||||||
|
config = self
|
||||||
|
if config.option.numprocesses:
|
||||||
|
if config.option.executable:
|
||||||
|
s = 'popen//python=%s' % config.option.executable
|
||||||
|
else:
|
||||||
|
s = 'popen'
|
||||||
|
xspec = [s] * config.option.numprocesses
|
||||||
|
else:
|
||||||
|
xspec = config.option.xspec
|
||||||
|
if not xspec:
|
||||||
|
xspec = config.getvalue("xspec")
|
||||||
|
if xspec is None:
|
||||||
|
raise config.Error("MISSING test execution (tx) nodes: please specify --tx")
|
||||||
|
#print "option value for xspecs", xspec
|
||||||
|
return [py.execnet.XSpec(x) for x in xspec]
|
||||||
|
|
||||||
|
def getrsyncdirs(self):
|
||||||
|
config = self
|
||||||
|
roots = config.option.rsyncdirs
|
||||||
|
if roots:
|
||||||
|
roots = [py.path.local(x) for x in roots.split(',')]
|
||||||
|
else:
|
||||||
|
roots = []
|
||||||
|
conftestroots = config.getconftest_pathlist("rsyncdirs")
|
||||||
|
if conftestroots:
|
||||||
|
roots.extend(conftestroots)
|
||||||
|
pydir = py.path.local(py.__file__).dirpath()
|
||||||
|
for root in roots:
|
||||||
|
if not root.check():
|
||||||
|
raise ValueError("rsyncdir doesn't exist: %r" %(root,))
|
||||||
|
if pydir is not None and root.basename == "py":
|
||||||
|
if root != pydir:
|
||||||
|
raise ValueError("root %r conflicts with current %r" %(root, pydir))
|
||||||
|
pydir = None
|
||||||
|
if pydir is not None:
|
||||||
|
roots.append(pydir)
|
||||||
|
return roots
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# helpers
|
# helpers
|
||||||
|
|
|
@ -9,7 +9,7 @@ from py.__.test import event
|
||||||
from py.__.test.runner import basic_run_report, basic_collect_report
|
from py.__.test.runner import basic_run_report, basic_collect_report
|
||||||
from py.__.test.session import Session
|
from py.__.test.session import Session
|
||||||
from py.__.test import outcome
|
from py.__.test import outcome
|
||||||
from py.__.test.dsession.nodemanage import NodeManager, getxspecs
|
from py.__.test.dsession.nodemanage import NodeManager
|
||||||
|
|
||||||
import Queue
|
import Queue
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ class DSession(Session):
|
||||||
if option.executable and not option.dist and not option.numprocesses:
|
if option.executable and not option.dist and not option.numprocesses:
|
||||||
option.numprocesses = 1
|
option.numprocesses = 1
|
||||||
try:
|
try:
|
||||||
getxspecs(self.config)
|
self.config.getxspecs()
|
||||||
except self.config.Error:
|
except self.config.Error:
|
||||||
print "Please specify test environments for distribution of tests:"
|
print "Please specify test environments for distribution of tests:"
|
||||||
print "py.test --tx ssh=user@somehost --tx popen//python=python2.5"
|
print "py.test --tx ssh=user@somehost --tx popen//python=python2.5"
|
||||||
|
|
|
@ -8,8 +8,8 @@ class NodeManager(object):
|
||||||
def __init__(self, config, specs=None):
|
def __init__(self, config, specs=None):
|
||||||
self.config = config
|
self.config = config
|
||||||
if specs is None:
|
if specs is None:
|
||||||
specs = getxspecs(self.config)
|
specs = self.config.getxspecs()
|
||||||
self.roots = getconfigroots(config)
|
self.roots = self.config.getrsyncdirs()
|
||||||
self.gwmanager = GatewayManager(specs)
|
self.gwmanager = GatewayManager(specs)
|
||||||
self.nodes = []
|
self.nodes = []
|
||||||
|
|
||||||
|
@ -88,39 +88,3 @@ class NodeManager(object):
|
||||||
# XXX teardown nodes?
|
# XXX teardown nodes?
|
||||||
self.gwmanager.exit()
|
self.gwmanager.exit()
|
||||||
|
|
||||||
def getxspecs(config):
|
|
||||||
if config.option.numprocesses:
|
|
||||||
if config.option.executable:
|
|
||||||
s = 'popen//python=%s' % config.option.executable
|
|
||||||
else:
|
|
||||||
s = 'popen'
|
|
||||||
xspecs = [s] * config.option.numprocesses
|
|
||||||
else:
|
|
||||||
xspecs = config.option.xspecs
|
|
||||||
if not xspecs:
|
|
||||||
xspecs = config.getvalue("xspecs")
|
|
||||||
if xspecs is None:
|
|
||||||
raise config.Error("MISSING test execution (tx) nodes: please specify --tx")
|
|
||||||
#print "option value for xspecs", xspecs
|
|
||||||
return [py.execnet.XSpec(x) for x in xspecs]
|
|
||||||
|
|
||||||
def getconfigroots(config):
|
|
||||||
roots = config.option.rsyncdirs
|
|
||||||
if roots:
|
|
||||||
roots = [py.path.local(x) for x in roots.split(',')]
|
|
||||||
else:
|
|
||||||
roots = []
|
|
||||||
conftestroots = config.getconftest_pathlist("rsyncdirs")
|
|
||||||
if conftestroots:
|
|
||||||
roots.extend(conftestroots)
|
|
||||||
pydir = py.path.local(py.__file__).dirpath()
|
|
||||||
for root in roots:
|
|
||||||
if not root.check():
|
|
||||||
raise ValueError("rsyncdir doesn't exist: %r" %(root,))
|
|
||||||
if pydir is not None and root.basename == "py":
|
|
||||||
if root != pydir:
|
|
||||||
raise ValueError("root %r conflicts with current %r" %(root, pydir))
|
|
||||||
pydir = None
|
|
||||||
if pydir is not None:
|
|
||||||
roots.append(pydir)
|
|
||||||
return roots
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ class TestAsyncFunctional:
|
||||||
"--tx=popen//chdir=%(dest)s" % locals(), p)
|
"--tx=popen//chdir=%(dest)s" % locals(), p)
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
"*1* instantiated gateway *popen*",
|
"*1* new *popen*platform*",
|
||||||
#"RSyncStart: [G1]",
|
#"RSyncStart: [G1]",
|
||||||
#"RSyncFinished: [G1]",
|
#"RSyncFinished: [G1]",
|
||||||
"*1 passed*"
|
"*1 passed*"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import py
|
import py
|
||||||
from py.__.test.dsession.nodemanage import NodeManager, getxspecs, getconfigroots
|
from py.__.test.dsession.nodemanage import NodeManager
|
||||||
|
|
||||||
from py.__.test import event
|
from py.__.test import event
|
||||||
|
|
||||||
|
@ -120,12 +120,12 @@ class TestNodeManager:
|
||||||
class TestOptionsAndConfiguration:
|
class TestOptionsAndConfiguration:
|
||||||
def test_getxspecs_numprocesses(self, testdir):
|
def test_getxspecs_numprocesses(self, testdir):
|
||||||
config = testdir.parseconfig("-n3")
|
config = testdir.parseconfig("-n3")
|
||||||
xspecs = getxspecs(config)
|
xspecs = config.getxspecs()
|
||||||
assert len(xspecs) == 3
|
assert len(xspecs) == 3
|
||||||
|
|
||||||
def test_getxspecs(self, testdir):
|
def test_getxspecs(self, testdir):
|
||||||
config = testdir.parseconfig("--tx=popen", "--tx", "ssh=xyz")
|
config = testdir.parseconfig("--tx=popen", "--tx", "ssh=xyz")
|
||||||
xspecs = getxspecs(config)
|
xspecs = config.getxspecs()
|
||||||
assert len(xspecs) == 2
|
assert len(xspecs) == 2
|
||||||
print xspecs
|
print xspecs
|
||||||
assert xspecs[0].popen
|
assert xspecs[0].popen
|
||||||
|
@ -133,7 +133,7 @@ class TestOptionsAndConfiguration:
|
||||||
|
|
||||||
def test_getconfigroots(self, testdir):
|
def test_getconfigroots(self, testdir):
|
||||||
config = testdir.parseconfig('--rsyncdirs=' + str(testdir.tmpdir))
|
config = testdir.parseconfig('--rsyncdirs=' + str(testdir.tmpdir))
|
||||||
roots = getconfigroots(config)
|
roots = config.getrsyncdirs()
|
||||||
assert len(roots) == 1 + 1
|
assert len(roots) == 1 + 1
|
||||||
assert testdir.tmpdir in roots
|
assert testdir.tmpdir in roots
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ class TestOptionsAndConfiguration:
|
||||||
rsyncdirs= 'x',
|
rsyncdirs= 'x',
|
||||||
""")
|
""")
|
||||||
config = testdir.parseconfig(testdir.tmpdir, '--rsyncdirs=y,z')
|
config = testdir.parseconfig(testdir.tmpdir, '--rsyncdirs=y,z')
|
||||||
roots = getconfigroots(config)
|
roots = config.getrsyncdirs()
|
||||||
assert len(roots) == 3 + 1
|
assert len(roots) == 3 + 1
|
||||||
assert py.path.local('y') in roots
|
assert py.path.local('y') in roots
|
||||||
assert py.path.local('z') in roots
|
assert py.path.local('z') in roots
|
||||||
|
|
|
@ -97,7 +97,7 @@ class DefaultPlugin:
|
||||||
group.addoption('--rsyncdirs', dest="rsyncdirs", default=None, metavar="dir1,dir2,...",
|
group.addoption('--rsyncdirs', dest="rsyncdirs", default=None, metavar="dir1,dir2,...",
|
||||||
help="comma-separated list of directories to rsync. All those roots will be rsynced "
|
help="comma-separated list of directories to rsync. All those roots will be rsynced "
|
||||||
"into a corresponding subdir on the remote sides. ")
|
"into a corresponding subdir on the remote sides. ")
|
||||||
group.addoption('--tx', dest="xspecs", action="append",
|
group._addoption('--xspec', '--tx', '-t', dest="xspec", action="append",
|
||||||
help=("add a test environment, specified in XSpec syntax. examples: "
|
help=("add a test environment, specified in XSpec syntax. examples: "
|
||||||
"--tx popen//python=python2.5 --tx socket=192.168.1.102"))
|
"--tx popen//python=python2.5 --tx socket=192.168.1.102"))
|
||||||
group._addoption('--exec',
|
group._addoption('--exec',
|
||||||
|
|
|
@ -84,8 +84,22 @@ class TerminalReporter:
|
||||||
for line in str(event.repr).split("\n"):
|
for line in str(event.repr).split("\n"):
|
||||||
self.write_line("InternalException: " + line)
|
self.write_line("InternalException: " + line)
|
||||||
|
|
||||||
def pyevent_gwmanage_newgateway(self, gateway):
|
def pyevent_gwmanage_newgateway(self, gateway, rinfo):
|
||||||
self.write_line("%s instantiated gateway from spec %r" %(gateway.id, gateway.spec._spec))
|
#self.write_line("%s instantiated gateway from spec %r" %(gateway.id, gateway.spec._spec))
|
||||||
|
d = {}
|
||||||
|
d['version'] = repr_pythonversion(rinfo.version_info)
|
||||||
|
d['id'] = gateway.id
|
||||||
|
d['spec'] = gateway.spec._spec
|
||||||
|
d['platform'] = rinfo.platform
|
||||||
|
if self.config.option.verbose:
|
||||||
|
d['extra'] = "- " + rinfo.executable
|
||||||
|
else:
|
||||||
|
d['extra'] = ""
|
||||||
|
d['cwd'] = rinfo.cwd
|
||||||
|
self.write_line("%(id)s new %(spec)r -- platform %(platform)s, "
|
||||||
|
"Python %(version)s "
|
||||||
|
"cwd: %(cwd)s"
|
||||||
|
"%(extra)s" % d)
|
||||||
|
|
||||||
def pyevent_gwmanage_rsyncstart(self, source, gateways):
|
def pyevent_gwmanage_rsyncstart(self, source, gateways):
|
||||||
targets = ", ".join([gw.id for gw in gateways])
|
targets = ", ".join([gw.id for gw in gateways])
|
||||||
|
@ -107,19 +121,12 @@ class TerminalReporter:
|
||||||
self.write_line(msg)
|
self.write_line(msg)
|
||||||
|
|
||||||
def pyevent_testnodeready(self, node):
|
def pyevent_testnodeready(self, node):
|
||||||
# XXX
|
self.write_line("%s node ready to receive tests" %(node.gateway.id,))
|
||||||
self.write_line("Node Ready: %r, spec %r" % (node,node.gateway.spec))
|
|
||||||
|
|
||||||
#d = event.platinfo.copy()
|
|
||||||
#d['host'] = getattr(event.host, 'address', event.host)
|
|
||||||
#d['version'] = repr_pythonversion(d['sys.version_info'])
|
|
||||||
#self.write_line("HOSTUP: %(host)s %(sys.platform)s "
|
|
||||||
# "%(sys.executable)s - Python %(version)s" %
|
|
||||||
# d)
|
|
||||||
|
|
||||||
def pyevent_testnodedown(self, node, error):
|
def pyevent_testnodedown(self, node, error):
|
||||||
if error:
|
if error:
|
||||||
self.write_line("Node Down: %r: %r" %(node, error))
|
self.write_line("%s node down, error: %s" %(node.gateway.id, error))
|
||||||
|
|
||||||
def pyevent_trace(self, category, msg):
|
def pyevent_trace(self, category, msg):
|
||||||
if self.config.option.debug or \
|
if self.config.option.debug or \
|
||||||
|
@ -175,6 +182,13 @@ class TerminalReporter:
|
||||||
def pyevent_testrunstart(self, event):
|
def pyevent_testrunstart(self, event):
|
||||||
self.write_sep("=", "test session starts", bold=True)
|
self.write_sep("=", "test session starts", bold=True)
|
||||||
self._sessionstarttime = py.std.time.time()
|
self._sessionstarttime = py.std.time.time()
|
||||||
|
|
||||||
|
verinfo = ".".join(map(str, sys.version_info[:3]))
|
||||||
|
msg = "python: platform %s -- Python %s" % (sys.platform, verinfo)
|
||||||
|
if self.config.option.verbose or self.config.option.debug:
|
||||||
|
msg += " -- " + str(sys.executable)
|
||||||
|
self.write_line(msg)
|
||||||
|
|
||||||
rev = py.__pkg__.getrev()
|
rev = py.__pkg__.getrev()
|
||||||
self.write_line("using py lib: %s <rev %s>" % (
|
self.write_line("using py lib: %s <rev %s>" % (
|
||||||
py.path.local(py.__file__).dirpath(), rev))
|
py.path.local(py.__file__).dirpath(), rev))
|
||||||
|
@ -431,9 +445,15 @@ class TestTerminal:
|
||||||
class gw2:
|
class gw2:
|
||||||
id = "X2"
|
id = "X2"
|
||||||
spec = py.execnet.XSpec("popen")
|
spec = py.execnet.XSpec("popen")
|
||||||
rep.pyevent_gwmanage_newgateway(gateway=gw1)
|
class rinfo:
|
||||||
|
version_info = (2, 5, 1, 'final', 0)
|
||||||
|
executable = "hello"
|
||||||
|
platform = "xyz"
|
||||||
|
cwd = "qwe"
|
||||||
|
|
||||||
|
rep.pyevent_gwmanage_newgateway(gw1, rinfo)
|
||||||
linecomp.assert_contains_lines([
|
linecomp.assert_contains_lines([
|
||||||
"X1 instantiated gateway from spec*",
|
"X1 new 'popen' *xyz*2.5*"
|
||||||
])
|
])
|
||||||
|
|
||||||
rep.pyevent_gwmanage_rsyncstart(source="hello", gateways=[gw1, gw2])
|
rep.pyevent_gwmanage_rsyncstart(source="hello", gateways=[gw1, gw2])
|
||||||
|
|
|
@ -179,8 +179,8 @@ class TestPyTest:
|
||||||
verinfo = ".".join(map(str, py.std.sys.version_info[:3]))
|
verinfo = ".".join(map(str, py.std.sys.version_info[:3]))
|
||||||
extra = result.stdout.fnmatch_lines([
|
extra = result.stdout.fnmatch_lines([
|
||||||
"*===== test session starts ====*",
|
"*===== test session starts ====*",
|
||||||
"HOSTUP*INPROCESS* %s %s - Python %s*" %(
|
"python: platform %s -- Python %s*" %(
|
||||||
py.std.sys.platform, py.std.sys.executable, verinfo),
|
py.std.sys.platform, verinfo), # , py.std.sys.executable),
|
||||||
"*test_header_trailer_info.py .",
|
"*test_header_trailer_info.py .",
|
||||||
"=* 1 passed in *.[0-9][0-9] seconds *=",
|
"=* 1 passed in *.[0-9][0-9] seconds *=",
|
||||||
])
|
])
|
||||||
|
@ -265,11 +265,10 @@ class TestPyTest:
|
||||||
py.test.skip("hello")
|
py.test.skip("hello")
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
result = testdir.runpytest(p1, '-d', '--tx popen --tx popen')
|
result = testdir.runpytest(p1, '-d', '--tx=popen', '--tx=popen')
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
"HOSTUP: popen*Python*",
|
"*1*popen*Python*",
|
||||||
#"HOSTUP: localhost*Python*",
|
"*2*popen*Python*",
|
||||||
#"HOSTUP: localhost*Python*",
|
|
||||||
"*2 failed, 1 passed, 1 skipped*",
|
"*2 failed, 1 passed, 1 skipped*",
|
||||||
])
|
])
|
||||||
assert result.ret == 1
|
assert result.ret == 1
|
||||||
|
@ -288,13 +287,13 @@ class TestPyTest:
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
testdir.makeconftest("""
|
testdir.makeconftest("""
|
||||||
pytest_option_tx = 'popen popen popen'.split()
|
pytest_option_xspec = 'popen popen popen'.split()
|
||||||
""")
|
""")
|
||||||
result = testdir.runpytest(p1, '-d')
|
result = testdir.runpytest(p1, '-d')
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
"HOSTUP: popen*Python*",
|
"*1*popen*Python*",
|
||||||
#"HOSTUP: localhost*Python*",
|
"*2*popen*Python*",
|
||||||
#"HOSTUP: localhost*Python*",
|
"*3*popen*Python*",
|
||||||
"*2 failed, 1 passed, 1 skipped*",
|
"*2 failed, 1 passed, 1 skipped*",
|
||||||
])
|
])
|
||||||
assert result.ret == 1
|
assert result.ret == 1
|
||||||
|
@ -325,7 +324,7 @@ class TestPyTest:
|
||||||
"*popen*Python*",
|
"*popen*Python*",
|
||||||
"*popen*Python*",
|
"*popen*Python*",
|
||||||
"*popen*Python*",
|
"*popen*Python*",
|
||||||
"HostDown*TERMINATED*",
|
"*node down*",
|
||||||
"*3 failed, 1 passed, 1 skipped*"
|
"*3 failed, 1 passed, 1 skipped*"
|
||||||
])
|
])
|
||||||
assert result.ret == 1
|
assert result.ret == 1
|
||||||
|
|
|
@ -111,8 +111,6 @@ class TestConfigTmpdir:
|
||||||
assert config2.basetemp != config3.basetemp
|
assert config2.basetemp != config3.basetemp
|
||||||
|
|
||||||
class TestConfigAPI:
|
class TestConfigAPI:
|
||||||
|
|
||||||
|
|
||||||
def test_config_getvalue_honours_conftest(self, testdir):
|
def test_config_getvalue_honours_conftest(self, testdir):
|
||||||
testdir.makepyfile(conftest="x=1")
|
testdir.makepyfile(conftest="x=1")
|
||||||
testdir.mkdir("sub").join("conftest.py").write("x=2 ; y = 3")
|
testdir.mkdir("sub").join("conftest.py").write("x=2 ; y = 3")
|
||||||
|
|
Loading…
Reference in New Issue