[py-svn] py-trunk commit a6a865e1e25d: some testing hygene: move _reparse testing functionality to actual test support code, un-xfail a now passing test, reduce direct py.test.config usage aiming for deprecation.
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Dec 29 18:41:48 CET 2009
# HG changeset patch -- Bitbucket.org
# Project py-trunk
# URL http://bitbucket.org/hpk42/py-trunk/overview/
# User holger krekel <holger at merlinux.eu>
# Date 1262106174 -3600
# Node ID a6a865e1e25d692b8df70d656e0067b400015f13
# Parent 216a74f8830b3305d5500edb478cdde34281ed02
some testing hygene: move _reparse testing functionality to actual test support code, un-xfail a now passing test, reduce direct py.test.config usage aiming for deprecation.
--- a/conftest.py
+++ b/conftest.py
@@ -28,21 +28,17 @@ def pytest_addoption(parser):
def pytest_funcarg__specssh(request):
return getspecssh(request.config)
-def getgspecs(config=None):
- if config is None:
- config = py.test.config
+def getgspecs(config):
return [execnet.XSpec(spec)
for spec in config.getvalueorskip("gspecs")]
# configuration information for tests
-def getgspecs(config=None):
- if config is None:
- config = py.test.config
+def getgspecs(config):
return [execnet.XSpec(spec)
for spec in config.getvalueorskip("gspecs")]
-def getspecssh(config=None):
+def getspecssh(config):
xspecs = getgspecs(config)
for spec in xspecs:
if spec.ssh:
@@ -51,7 +47,7 @@ def getspecssh(config=None):
return spec
py.test.skip("need '--gx ssh=...'")
-def getsocketspec(config=None):
+def getsocketspec(config):
xspecs = getgspecs(config)
for spec in xspecs:
if spec.socket:
--- a/py/plugin/pytest_pytester.py
+++ b/py/plugin/pytest_pytester.py
@@ -205,6 +205,20 @@ class TmpTestdir:
config.parse(args)
return config
+ def reparseconfig(self, args=None):
+ """ this is used from tests that want to re-invoke parse(). """
+ if not args:
+ args = [self.tmpdir]
+ from py.impl.test import config
+ oldconfig = py.test.config
+ try:
+ c = config.config_per_process = py.test.config = pytestConfig()
+ c.basetemp = oldconfig.mktemp("reparse", numbered=True)
+ c.parse(args)
+ return c
+ finally:
+ config.config_per_process = py.test.config = oldconfig
+
def parseconfigure(self, *args):
config = self.parseconfig(*args)
config.pluginmanager.do_configure(config)
--- a/testing/pytest/test_session.py
+++ b/testing/pytest/test_session.py
@@ -1,8 +1,8 @@
import py
class SessionTests:
- def test_initsession(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_initsession(self, testdir, tmpdir):
+ config = testdir.reparseconfig()
session = config.initsession()
assert session.config is config
--- a/testing/plugin/test_pytest_default.py
+++ b/testing/plugin/test_pytest_default.py
@@ -1,9 +1,9 @@
import py
from py.plugin.pytest_default import pytest_report_iteminfo
-def test_implied_different_sessions(tmpdir):
+def test_implied_different_sessions(testdir, tmpdir):
def x(*args):
- config = py.test.config._reparse([tmpdir] + list(args))
+ config = testdir.reparseconfig([tmpdir] + list(args))
try:
config.pluginmanager.do_configure(config)
except ValueError:
--- a/testing/pytest/test_pycollect.py
+++ b/testing/pytest/test_pycollect.py
@@ -250,8 +250,8 @@ class TestFunction:
assert isinstance(modcol, py.test.collect.Module)
assert hasattr(modcol.obj, 'test_func')
- def test_function_equality(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_function_equality(self, testdir, tmpdir):
+ config = testdir.reparseconfig()
f1 = py.test.collect.Function(name="name",
args=(1,), callobj=isinstance)
f2 = py.test.collect.Function(name="name",
@@ -271,8 +271,8 @@ class TestFunction:
assert f1 == f1_b
assert not f1 != f1_b
- def test_function_equality_with_callspec(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_function_equality_with_callspec(self, testdir, tmpdir):
+ config = testdir.reparseconfig()
class callspec1:
param = 1
funcargs = {}
--- a/testing/pytest/test_collect.py
+++ b/testing/pytest/test_collect.py
@@ -52,11 +52,11 @@ class TestCollector:
parent = fn.getparent(py.test.collect.Class)
assert parent is cls
- def test_totrail_and_back(self, tmpdir):
+ def test_totrail_and_back(self, testdir, tmpdir):
a = tmpdir.ensure("a", dir=1)
tmpdir.ensure("a", "__init__.py")
x = tmpdir.ensure("a", "trail.py")
- config = py.test.config._reparse([x])
+ config = testdir.reparseconfig([x])
col = config.getfsnode(x)
trail = col._totrail()
assert len(trail) == 2
@@ -65,8 +65,8 @@ class TestCollector:
col2 = py.test.collect.Collector._fromtrail(trail, config)
assert col2.listnames() == col.listnames()
- def test_totrail_topdir_and_beyond(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_totrail_topdir_and_beyond(self, testdir, tmpdir):
+ config = testdir.reparseconfig()
col = config.getfsnode(config.topdir)
trail = col._totrail()
assert len(trail) == 2
--- a/testing/pytest/dist/test_nodemanage.py
+++ b/testing/pytest/dist/test_nodemanage.py
@@ -12,9 +12,9 @@ class pytest_funcarg__mysetup:
class TestNodeManager:
@py.test.mark.xfail
- def test_rsync_roots_no_roots(self, mysetup):
+ def test_rsync_roots_no_roots(self, testdir, mysetup):
mysetup.source.ensure("dir1", "file1").write("hello")
- config = py.test.config._reparse([source])
+ config = testdir.reparseconfig([source])
nodemanager = NodeManager(config, ["popen//chdir=%s" % mysetup.dest])
assert nodemanager.config.topdir == source == config.topdir
nodemanager.rsync_roots()
@@ -53,7 +53,7 @@ class TestNodeManager:
assert dest.join("dir1", "dir2", 'hello').check()
nodemanager.gwmanager.exit()
- def test_init_rsync_roots(self, mysetup):
+ def test_init_rsync_roots(self, testdir, mysetup):
source, dest = mysetup.source, mysetup.dest
dir2 = source.ensure("dir1", "dir2", dir=1)
source.ensure("dir1", "somefile", dir=1)
@@ -62,14 +62,14 @@ class TestNodeManager:
source.join("conftest.py").write(py.code.Source("""
rsyncdirs = ['dir1/dir2']
"""))
- session = py.test.config._reparse([source]).initsession()
+ session = testdir.reparseconfig([source]).initsession()
nodemanager = NodeManager(session.config, ["popen//chdir=%s" % dest])
nodemanager.rsync_roots()
assert dest.join("dir2").check()
assert not dest.join("dir1").check()
assert not dest.join("bogus").check()
- def test_rsyncignore(self, mysetup):
+ def test_rsyncignore(self, testdir, mysetup):
source, dest = mysetup.source, mysetup.dest
dir2 = source.ensure("dir1", "dir2", dir=1)
dir5 = source.ensure("dir5", "dir6", "bogus")
@@ -79,7 +79,7 @@ class TestNodeManager:
rsyncdirs = ['dir1', 'dir5']
rsyncignore = ['dir1/dir2', 'dir5/dir6']
"""))
- session = py.test.config._reparse([source]).initsession()
+ session = testdir.reparseconfig([source]).initsession()
nodemanager = NodeManager(session.config,
["popen//chdir=%s" % dest])
nodemanager.rsync_roots()
@@ -88,12 +88,12 @@ class TestNodeManager:
assert dest.join("dir5","file").check()
assert not dest.join("dir6").check()
- def test_optimise_popen(self, mysetup):
+ def test_optimise_popen(self, testdir, mysetup):
source, dest = mysetup.source, mysetup.dest
specs = ["popen"] * 3
source.join("conftest.py").write("rsyncdirs = ['a']")
source.ensure('a', dir=1)
- config = py.test.config._reparse([source])
+ config = testdir.reparseconfig([source])
nodemanager = NodeManager(config, specs)
nodemanager.rsync_roots()
for gwspec in nodemanager.gwmanager.specs:
@@ -105,7 +105,7 @@ class TestNodeManager:
specs = ["popen"] * 2
source.join("conftest.py").write("rsyncdirs = ['a']")
source.ensure('a', dir=1)
- config = py.test.config._reparse([source, '--debug'])
+ config = testdir.reparseconfig([source, '--debug'])
assert config.option.debug
nodemanager = NodeManager(config, specs)
reprec = testdir.getreportrecorder(config).hookrecorder
--- a/testing/pytest/test_pluginmanager.py
+++ b/testing/pytest/test_pluginmanager.py
@@ -273,7 +273,6 @@ class TestPytestPluginInteractions:
assert not pluginmanager.listattr("hello")
assert pluginmanager.listattr("x") == [42]
- at py.test.mark.xfail
def test_namespace_has_default_and_env_plugins(testdir):
p = testdir.makepyfile("""
import py
--- a/testing/pytest/dist/test_txnode.py
+++ b/testing/pytest/dist/test_txnode.py
@@ -44,7 +44,8 @@ class MySetup:
def makenode(self, config=None):
if config is None:
- config = py.test.config._reparse([])
+ testdir = self.request.getfuncargvalue("testdir")
+ config = testdir.reparseconfig([])
self.config = config
self.queue = Queue()
self.xspec = execnet.XSpec("popen")
--- a/testing/pytest/test_config.py
+++ b/testing/pytest/test_config.py
@@ -17,7 +17,7 @@ class TestConfigCmdlineParsing:
)
""")
testdir.chdir()
- config = py.test.config._reparse(['-G', '17'])
+ config = testdir.reparseconfig(['-G', '17'])
assert config.option.gdest == 17
def test_parser_addoption_default_env(self, testdir, monkeypatch):
@@ -56,11 +56,11 @@ class TestConfigCmdlineParsing:
)
""")
py.test.raises(ValueError, """
- py.test.config._reparse(['-g', '17'])
+ testdir.reparseconfig(['-g', '17'])
""")
- def test_parsing_again_fails(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_parsing_again_fails(self, testdir):
+ config = testdir.reparseconfig([testdir.tmpdir])
py.test.raises(AssertionError, "config.parse([])")
@@ -82,13 +82,11 @@ class TestConfigTmpdir:
assert tmp2 != tmp
def test_reparse(self, testdir):
- config = testdir.Config()
- config.basetemp = testdir.mkdir("my")
- config2 = config._reparse([])
- assert config2.getbasetemp().relto(config.basetemp)
- config3 = config._reparse([])
- assert config3.getbasetemp().relto(config.basetemp)
- assert config2.basetemp != config3.basetemp
+ config2 = testdir.reparseconfig([])
+ config3 = testdir.reparseconfig([])
+ assert config2.getbasetemp() != config3.getbasetemp()
+ assert not config2.getbasetemp().relto(config3.getbasetemp())
+ assert not config3.getbasetemp().relto(config2.getbasetemp())
class TestConfigAPI:
@@ -100,7 +98,7 @@ class TestConfigAPI:
assert config.getvalue("x") == 1
assert config.getvalue("x", o.join('sub')) == 2
py.test.raises(KeyError, "config.getvalue('y')")
- config = py.test.config._reparse([str(o.join('sub'))])
+ config = testdir.reparseconfig([str(o.join('sub'))])
assert config.getvalue("x") == 2
assert config.getvalue("y") == 3
assert config.getvalue("x", o) == 1
@@ -118,18 +116,18 @@ class TestConfigAPI:
def test_config_overwrite(self, testdir):
o = testdir.tmpdir
o.ensure("conftest.py").write("x=1")
- config = py.test.config._reparse([str(o)])
+ config = testdir.reparseconfig([str(o)])
assert config.getvalue('x') == 1
config.option.x = 2
assert config.getvalue('x') == 2
- config = py.test.config._reparse([str(o)])
+ config = testdir.reparseconfig([str(o)])
assert config.getvalue('x') == 1
- def test_getconftest_pathlist(self, tmpdir):
+ def test_getconftest_pathlist(self, testdir, tmpdir):
somepath = tmpdir.join("x", "y", "z")
p = tmpdir.join("conftest.py")
p.write("pathlist = ['.', %r]" % str(somepath))
- config = py.test.config._reparse([p])
+ config = testdir.reparseconfig([p])
assert config.getconftest_pathlist('notexist') is None
pl = config.getconftest_pathlist('pathlist')
print(pl)
@@ -150,8 +148,8 @@ class TestConfigAPI:
class TestConfigApi_getcolitems:
- def test_getcolitems_onedir(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
+ def test_getcolitems_onedir(self, testdir):
+ config = testdir.reparseconfig([testdir.tmpdir])
colitems = config.getcolitems()
assert len(colitems) == 1
col = colitems[0]
@@ -159,17 +157,17 @@ class TestConfigApi_getcolitems:
for col in col.listchain():
assert col.config is config
- def test_getcolitems_twodirs(self, tmpdir):
- config = py.test.config._reparse([tmpdir, tmpdir])
+ def test_getcolitems_twodirs(self, testdir, tmpdir):
+ config = testdir.reparseconfig([tmpdir, tmpdir])
colitems = config.getcolitems()
assert len(colitems) == 2
col1, col2 = colitems
assert col1.name == col2.name
assert col1.parent == col2.parent
- def test_getcolitems_curdir_and_subdir(self, tmpdir):
+ def test_getcolitems_curdir_and_subdir(self, testdir, tmpdir):
a = tmpdir.ensure("a", dir=1)
- config = py.test.config._reparse([tmpdir, a])
+ config = testdir.reparseconfig([tmpdir, a])
colitems = config.getcolitems()
assert len(colitems) == 2
col1, col2 = colitems
@@ -179,9 +177,9 @@ class TestConfigApi_getcolitems:
for subcol in col.listchain():
assert col.config is config
- def test__getcol_global_file(self, tmpdir):
+ def test__getcol_global_file(self, testdir, tmpdir):
x = tmpdir.ensure("x.py")
- config = py.test.config._reparse([x])
+ config = testdir.reparseconfig([x])
col = config.getfsnode(x)
assert isinstance(col, py.test.collect.Module)
assert col.name == 'x.py'
@@ -190,9 +188,9 @@ class TestConfigApi_getcolitems:
for col in col.listchain():
assert col.config is config
- def test__getcol_global_dir(self, tmpdir):
+ def test__getcol_global_dir(self, testdir, tmpdir):
x = tmpdir.ensure("a", dir=1)
- config = py.test.config._reparse([x])
+ config = testdir.reparseconfig([x])
col = config.getfsnode(x)
assert isinstance(col, py.test.collect.Directory)
print(col.listchain())
@@ -200,10 +198,10 @@ class TestConfigApi_getcolitems:
assert col.parent is None
assert col.config is config
- def test__getcol_pkgfile(self, tmpdir):
+ def test__getcol_pkgfile(self, testdir, tmpdir):
x = tmpdir.ensure("x.py")
tmpdir.ensure("__init__.py")
- config = py.test.config._reparse([x])
+ config = testdir.reparseconfig([x])
col = config.getfsnode(x)
assert isinstance(col, py.test.collect.Module)
assert col.name == 'x.py'
@@ -215,16 +213,16 @@ class TestConfigApi_getcolitems:
class TestOptionEffects:
def test_boxed_option_default(self, testdir):
tmpdir = testdir.tmpdir.ensure("subdir", dir=1)
- config = py.test.config._reparse([tmpdir])
+ config = testdir.reparseconfig()
config.initsession()
assert not config.option.boxed
py.test.importorskip("execnet")
- config = py.test.config._reparse(['-d', tmpdir])
+ config = testdir.reparseconfig(['-d', tmpdir])
config.initsession()
assert not config.option.boxed
def test_is_not_boxed_by_default(self, testdir):
- config = py.test.config._reparse([testdir.tmpdir])
+ config = testdir.reparseconfig([testdir.tmpdir])
assert not config.option.boxed
class TestConfig_gettopdir:
--- a/py/impl/test/config.py
+++ b/py/impl/test/config.py
@@ -227,19 +227,6 @@ class Config(object):
self.trace("instantiated session %r" % session)
return session
- def _reparse(self, args):
- """ this is used from tests that want to re-invoke parse(). """
- #assert args # XXX should not be empty
- global config_per_process
- oldconfig = py.test.config
- try:
- config_per_process = py.test.config = Config()
- config_per_process.basetemp = self.mktemp("reparse", numbered=True)
- config_per_process.parse(args)
- return config_per_process
- finally:
- config_per_process = py.test.config = oldconfig
-
def getxspecs(self):
xspeclist = []
for xspec in self.getvalue("tx"):
More information about the pytest-commit
mailing list