[py-svn] r62099 - in py/branch/pytestplugin/py/test: . plugin testing
hpk at codespeak.net
hpk at codespeak.net
Mon Feb 23 16:23:43 CET 2009
Author: hpk
Date: Mon Feb 23 16:23:42 2009
New Revision: 62099
Modified:
py/branch/pytestplugin/py/test/config.py
py/branch/pytestplugin/py/test/plugin/pytest_pytester.py
py/branch/pytestplugin/py/test/testing/test_config.py
py/branch/pytestplugin/py/test/testing/test_pycollect.py
Log:
regrouping config related tests in a more logical/concept based way
Modified: py/branch/pytestplugin/py/test/config.py
==============================================================================
--- py/branch/pytestplugin/py/test/config.py (original)
+++ py/branch/pytestplugin/py/test/config.py Mon Feb 23 16:23:42 2009
@@ -100,6 +100,9 @@
self.option = cmdlineopts
self._conftest.setinitial(self.args)
+ def getcolitems(self):
+ return [self.getfsnode(arg) for arg in self.args]
+
def getfsnode(self, path):
path = py.path.local(path)
assert path.check(), "%s: path does not exist" %(path,)
Modified: py/branch/pytestplugin/py/test/plugin/pytest_pytester.py
==============================================================================
--- py/branch/pytestplugin/py/test/plugin/pytest_pytester.py (original)
+++ py/branch/pytestplugin/py/test/plugin/pytest_pytester.py Mon Feb 23 16:23:42 2009
@@ -49,6 +49,9 @@
def mkdir(self, name):
return self.tmpdir.mkdir(name)
+
+ def chdir(self):
+ return self.tmpdir.chdir()
def ensureplugin(self, impname):
assert isinstance(impname, str)
@@ -97,6 +100,8 @@
return sorter
def parseconfig(self, *args):
+ if not args:
+ args = (self.tmpdir,)
return py.test.config._reparse(list(args))
def getitem(self, source, funcname="test_func"):
Modified: py/branch/pytestplugin/py/test/testing/test_config.py
==============================================================================
--- py/branch/pytestplugin/py/test/testing/test_config.py (original)
+++ py/branch/pytestplugin/py/test/testing/test_config.py Mon Feb 23 16:23:42 2009
@@ -1,287 +1,47 @@
-from __future__ import generators
import py
-from py.__.test.config import gettopdir
-
-def getcolitems(config):
- return [config.getfsnode(arg) for arg in config.args]
-
-def test_tmpdir():
- d1 = py.test.ensuretemp('hello')
- d2 = py.test.ensuretemp('hello')
- assert d1 == d2
- assert d1.check(dir=1)
-
-def test_config_cmdline_options():
- o = py.test.ensuretemp('configoptions')
- o.ensure("conftest.py").write(py.code.Source("""
- import py
- def _callback(option, opt_str, value, parser, *args, **kwargs):
- option.tdest = True
- Option = py.test.config.Option
- option = py.test.config.addoptions("testing group",
- Option('-G', '--glong', action="store", default=42,
- type="int", dest="gdest", help="g value."),
- # XXX note: special case, option without a destination
- Option('-T', '--tlong', action="callback", callback=_callback,
- help='t value'),
- )
- """))
- old = o.chdir()
- try:
- config = py.test.config._reparse(['-G', '17'])
- finally:
- old.chdir()
- assert config.option.gdest == 17
-
-def test_config_cmdline_options_only_lowercase():
- o = py.test.ensuretemp('test_config_cmdline_options_only_lowercase')
- o = o.mkdir("onemore") # neccessary because collection of o.dirpath()
- # could see our conftest.py
- o.ensure("conftest.py").write(py.code.Source("""
- import py
- Option = py.test.config.Option
- options = py.test.config.addoptions("testing group",
- Option('-g', '--glong', action="store", default=42,
- type="int", dest="gdest", help="g value."),
- )
- """))
- old = o.chdir()
- try:
- py.test.raises(ValueError, """
- py.test.config._reparse(['-g', '17'])
- """)
- finally:
- old.chdir()
-
-def test_parsing_again_fails():
- dir = py.test.ensuretemp("parsing_again_fails")
- config = py.test.config._reparse([str(dir)])
- py.test.raises(AssertionError, "config.parse([])")
-
-def test_config_getvalue_honours_conftest():
- o = py.test.ensuretemp('testconfigget')
- o.ensure("conftest.py").write("x=1")
- o.ensure("sub", "conftest.py").write("x=2 ; y = 3")
- config = py.test.config._reparse([str(o)])
- 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'))])
- assert config.getvalue("x") == 2
- assert config.getvalue("y") == 3
- assert config.getvalue("x", o) == 1
- py.test.raises(KeyError, 'config.getvalue("y", o)')
-
-
-def test_config_overwrite():
- o = py.test.ensuretemp('testconfigget')
- o.ensure("conftest.py").write("x=1")
- config = py.test.config._reparse([str(o)])
- assert config.getvalue('x') == 1
- config.option.x = 2
- assert config.getvalue('x') == 2
- config = py.test.config._reparse([str(o)])
- assert config.getvalue('x') == 1
-
-def test_gettopdir():
- tmp = py.test.ensuretemp("topdir")
- assert gettopdir([tmp]) == tmp
- topdir =gettopdir([tmp.join("hello"), tmp.join("world")])
- assert topdir == tmp
- somefile = tmp.ensure("somefile.py")
- assert gettopdir([somefile]) == tmp
-
-def test_gettopdir_pypkg():
- tmp = py.test.ensuretemp("topdir2")
- a = tmp.ensure('a', dir=1)
- b = tmp.ensure('a', 'b', '__init__.py')
- c = tmp.ensure('a', 'b', 'c.py')
- Z = tmp.ensure('Z', dir=1)
- assert gettopdir([c]) == a
- assert gettopdir([c, Z]) == tmp
-
- at py.test.keywords(xfail="issue1 config's pytestplugins/bus initialization")
-def test_config_initafterpickle_plugin(testdir):
- testdir.makepyfile(__init__="", conftest="x=1; y=2")
- hello = testdir.makepyfile(hello="")
- tmp = testdir.tmpdir
- config = py.test.config._reparse([hello])
- config2 = py.test.config._reparse([tmp.dirpath()])
- config2._initialized = False # we have to do that from tests
- config2._repr = config._makerepr()
- config2._initafterpickle(topdir=tmp.dirpath())
- # we check that config "remote" config objects
- # have correct plugin initialization
- #XXX assert config2.pytestplugins.pm._plugins
- #XXX assert config2.bus.isregistered(config2.pytestplugins.forward_event)
- assert config2.bus == py._com.pyplugins
- assert config2.pytestplugins.pm == py._com.pyplugins
-
-def test_config_initafterpickle_some():
- tmp = py.test.ensuretemp("test_config_initafterpickle_some")
- tmp.ensure("__init__.py")
- tmp.ensure("conftest.py").write("x=1 ; y=2")
- hello = tmp.ensure("test_hello.py")
- config = py.test.config._reparse([hello])
- config2 = py.test.config._reparse([tmp.dirpath()])
- config2._initialized = False # we have to do that from tests
- config2._repr = config._makerepr()
- config2._initafterpickle(topdir=tmp.dirpath())
-
- for col1, col2 in zip(getcolitems(config), getcolitems(config2)):
- assert col1.fspath == col2.fspath
- cols = getcolitems(config2)
- assert len(cols) == 1
- col = cols[0]
- assert col.name == 'test_hello.py'
- assert col.parent.name == tmp.basename
- assert col.parent.parent is None
-
-def test_config_make_and__mergerepr():
- tmp = py.test.ensuretemp("reprconfig1")
- tmp.ensure("__init__.py")
- tmp.ensure("conftest.py").write("x=1")
- config = py.test.config._reparse([tmp])
- repr = config._makerepr()
- config.option.verbose = 42
- repr2 = config._makerepr()
- config = py.test.config._reparse([tmp.dirpath()])
- py.test.raises(KeyError, "config.getvalue('x')")
- config._mergerepr(repr)
- assert config.getvalue('x') == 1
- config._mergerepr(repr2)
- assert config.option.verbose == 42
-
-def test_config_rconfig():
- tmp = py.test.ensuretemp("rconfigopt")
- tmp.ensure("__init__.py")
- tmp.ensure("conftest.py").write(py.code.Source("""
- import py
- Option = py.test.config.Option
- option = py.test.config.addoptions("testing group",
- Option('-G', '--glong', action="store", default=42,
- type="int", dest="gdest", help="g value."))
- """))
- config = py.test.config._reparse([tmp, "-G", "11"])
- assert config.option.gdest == 11
- repr = config._makerepr()
- config = py.test.config._reparse([tmp.dirpath()])
- py.test.raises(AttributeError, "config.option.gdest")
- config._mergerepr(repr)
- option = config.addoptions("testing group",
- config.Option('-G', '--glong', action="store", default=42,
- type="int", dest="gdest", help="g value."))
- assert config.option.gdest == 11
- assert option.gdest == 11
-
-class TestSessionAndOptions:
- def test_implied_dsession(self, testdir):
- for x in 'startserver runbrowser rest'.split():
- config = testdir.parseconfig(testdir.tmpdir, '--dist', '--%s' % x)
- assert config._getestdirname() == 'DSession'
-
- def test_implied_different_sessions(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
- assert config._getestdirname() == 'Session'
- config = py.test.config._reparse([tmpdir, '--dist'])
- assert config._getestdirname() == 'DSession'
- config = py.test.config._reparse([tmpdir, '-n3'])
- assert config._getestdirname() == 'DSession'
- config = py.test.config._reparse([tmpdir, '--looponfailing'])
- assert config._getestdirname() == 'LooponfailingSession'
- config = py.test.config._reparse([tmpdir, '--exec=x'])
- assert config._getestdirname() == 'DSession'
- config = py.test.config._reparse([tmpdir, '--dist', '--exec=x'])
- assert config._getestdirname() == 'DSession'
- config = py.test.config._reparse([tmpdir, '-f',
- '--dist', '--exec=x'])
- assert config._getestdirname() == 'LooponfailingSession'
- config = py.test.config._reparse([tmpdir, '-f', '-n3',
- '--dist', '--exec=x',
- '--collectonly'])
- assert config._getestdirname() == 'Session'
-
- def test_sessionname_lookup_custom(self, testdir):
+class TestConfigCmdlineParsing:
+ def test_config_cmdline_options(self, testdir):
testdir.makepyfile(conftest="""
- from py.__.test.session import Session
- class MySession(Session):
- pass
- """)
- config = testdir.parseconfig("--session=MySession", testdir.tmpdir)
- session = config.initsession()
- assert session.__class__.__name__ == 'MySession'
-
- def test_initsession(self, tmpdir):
- config = py.test.config._reparse([tmpdir])
- session = config.initsession()
- assert session.config is config
-
- def test_boxed_option_default(self, testdir):
- testdir.makepyfile(conftest="dist_hosts=[]")
- tmpdir = testdir.tmpdir.ensure("subdir", dir=1)
- config = py.test.config._reparse([tmpdir])
- config.initsession()
- assert not config.option.boxed
- config = py.test.config._reparse(['--dist', tmpdir])
- config.initsession()
- assert not config.option.boxed
-
- def test_boxed_option_from_conftest(self, testdir):
- testdir.makepyfile(conftest="dist_hosts=[]")
- tmpdir = testdir.tmpdir.ensure("subdir", dir=1)
- tmpdir.join("conftest.py").write(py.code.Source("""
- dist_hosts = []
- dist_boxed = True
- """))
- config = py.test.config._reparse(['--dist', tmpdir])
- config.initsession()
- assert config.option.boxed
-
- def test_boxed_option_from_conftest(self, testdir):
- testdir.makepyfile(conftest="dist_boxed=False")
- config = py.test.config._reparse([testdir.tmpdir, '--box'])
- assert config.option.boxed
- config.initsession()
- assert config.option.boxed
-
- def test_getvalue_pathlist(self, tmpdir):
- somepath = tmpdir.join("x", "y", "z")
- p = tmpdir.join("conftest.py")
- p.write("pathlist = ['.', %r]" % str(somepath))
- config = py.test.config._reparse([p])
- assert config.getvalue_pathlist('notexist') is None
- pl = config.getvalue_pathlist('pathlist')
- print pl
- assert len(pl) == 2
- assert pl[0] == tmpdir
- assert pl[1] == somepath
+ import py
+ def _callback(option, opt_str, value, parser, *args, **kwargs):
+ option.tdest = True
+ Option = py.test.config.Option
+ option = py.test.config.addoptions("testing group",
+ Option('-G', '--glong', action="store", default=42,
+ type="int", dest="gdest", help="g value."),
+ # XXX note: special case, option without a destination
+ Option('-T', '--tlong', action="callback", callback=_callback,
+ help='t value'),
+ )
+ """)
+ old = testdir.chdir()
+ try:
+ config = py.test.config._reparse(['-G', '17'])
+ finally:
+ old.chdir()
+ assert config.option.gdest == 17
- config.option.mypathlist = [py.path.local()]
- pl = config.getvalue_pathlist('mypathlist')
- assert pl == [py.path.local()]
+ def test_config_cmdline_options_only_lowercase(self, testdir):
+ testdir.makepyfile(conftest="""
+ import py
+ Option = py.test.config.Option
+ options = py.test.config.addoptions("testing group",
+ Option('-g', '--glong', action="store", default=42,
+ type="int", dest="gdest", help="g value."),
+ )
+ """)
+ old = testdir.chdir()
+ try:
+ py.test.raises(ValueError, """
+ py.test.config._reparse(['-g', '17'])
+ """)
+ finally:
+ old.chdir()
- def test_config_iocapturing(self, testdir):
- config = testdir.parseconfig(testdir.tmpdir)
- assert config.getvalue("conf_iocapture")
- tmpdir = testdir.tmpdir.ensure("sub-with-conftest", dir=1)
- tmpdir.join("conftest.py").write(py.code.Source("""
- conf_iocapture = "no"
- """))
+ def test_parsing_again_fails(self, tmpdir):
config = py.test.config._reparse([tmpdir])
- assert config.getvalue("conf_iocapture") == "no"
- capture = config._getcapture()
- assert isinstance(capture, py.io.StdCapture)
- assert not capture._out
- assert not capture._err
- assert not capture._in
- assert isinstance(capture, py.io.StdCapture)
- for opt, cls in (("sys", py.io.StdCapture),
- ("fd", py.io.StdCaptureFD),
- ):
- config.option.conf_iocapture = opt
- capture = config._getcapture()
- assert isinstance(capture, cls)
+ py.test.raises(AssertionError, "config.parse([])")
def test_conflict_options(self):
def check_conflict_option(opts):
@@ -299,32 +59,60 @@
for spec in conflict_options:
opts = spec.split()
yield check_conflict_option, opts
-
- def test_default_session_options(self, testdir):
- def runfiletest(opts):
- sorter = testdir.inline_run(*opts)
- passed, skipped, failed = sorter.countoutcomes()
- assert failed == 2
- assert skipped == passed == 0
- path = testdir.makepyfile("""
- def test_f1(): assert 0
- def test_f2(): assert 0
- """)
-
- for opts in ([], ['-l'], ['-s'], ['--tb=no'], ['--tb=short'],
- ['--tb=long'], ['--fulltrace'], ['--nomagic'],
- ['--traceconfig'], ['-v'], ['-v', '-v']):
- runfiletest(opts + [path])
- def test_is_not_boxed_by_default(self, testdir):
- config = py.test.config._reparse([testdir.tmpdir])
- assert not config.option.boxed
+class TestConfigAPI:
+ def test_tmpdir(self):
+ d1 = py.test.ensuretemp('hello')
+ d2 = py.test.ensuretemp('hello')
+ assert d1 == d2
+ assert d1.check(dir=1)
+
+ def test_config_getvalue_honours_conftest(self, testdir):
+ testdir.makepyfile(conftest="x=1")
+ testdir.mkdir("sub").join("conftest.py").write("x=2 ; y = 3")
+ config = testdir.parseconfig()
+ o = testdir.tmpdir
+ 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'))])
+ assert config.getvalue("x") == 2
+ assert config.getvalue("y") == 3
+ assert config.getvalue("x", o) == 1
+ py.test.raises(KeyError, 'config.getvalue("y", o)')
+
+
+ def test_config_overwrite(self, testdir):
+ o = testdir.tmpdir
+ o.ensure("conftest.py").write("x=1")
+ config = py.test.config._reparse([str(o)])
+ assert config.getvalue('x') == 1
+ config.option.x = 2
+ assert config.getvalue('x') == 2
+ config = py.test.config._reparse([str(o)])
+ assert config.getvalue('x') == 1
+
+ def test_getvalue_pathlist(self, tmpdir):
+ somepath = tmpdir.join("x", "y", "z")
+ p = tmpdir.join("conftest.py")
+ p.write("pathlist = ['.', %r]" % str(somepath))
+ config = py.test.config._reparse([p])
+ assert config.getvalue_pathlist('notexist') is None
+ pl = config.getvalue_pathlist('pathlist')
+ print pl
+ assert len(pl) == 2
+ assert pl[0] == tmpdir
+ assert pl[1] == somepath
+
+ config.option.mypathlist = [py.path.local()]
+ pl = config.getvalue_pathlist('mypathlist')
+ assert pl == [py.path.local()]
-class TestConfigColitems:
+class TestConfigApi_getcolitems:
def test_getcolitems_onedir(self, tmpdir):
config = py.test.config._reparse([tmpdir])
- colitems = getcolitems(config)
+ colitems = config.getcolitems()
assert len(colitems) == 1
col = colitems[0]
assert isinstance(col, py.test.collect.Directory)
@@ -333,7 +121,7 @@
def test_getcolitems_twodirs(self, tmpdir):
config = py.test.config._reparse([tmpdir, tmpdir])
- colitems = getcolitems(config)
+ colitems = config.getcolitems()
assert len(colitems) == 2
col1, col2 = colitems
assert col1.name == col2.name
@@ -342,7 +130,7 @@
def test_getcolitems_curdir_and_subdir(self, tmpdir):
a = tmpdir.ensure("a", dir=1)
config = py.test.config._reparse([tmpdir, a])
- colitems = getcolitems(config)
+ colitems = config.getcolitems()
assert len(colitems) == 2
col1, col2 = colitems
assert col1.name == tmpdir.basename
@@ -384,6 +172,160 @@
for col in col.listchain():
assert col._config is config
+
+
+
+class TestOptionEffects:
+ def test_boxed_option_default(self, testdir):
+ testdir.makepyfile(conftest="dist_hosts=[]")
+ tmpdir = testdir.tmpdir.ensure("subdir", dir=1)
+ config = py.test.config._reparse([tmpdir])
+ config.initsession()
+ assert not config.option.boxed
+ config = py.test.config._reparse(['--dist', tmpdir])
+ config.initsession()
+ assert not config.option.boxed
+
+ def test_is_not_boxed_by_default(self, testdir):
+ config = py.test.config._reparse([testdir.tmpdir])
+ assert not config.option.boxed
+
+ def test_boxed_option_from_conftest(self, testdir):
+ testdir.makepyfile(conftest="dist_hosts=[]")
+ tmpdir = testdir.tmpdir.ensure("subdir", dir=1)
+ tmpdir.join("conftest.py").write(py.code.Source("""
+ dist_hosts = []
+ dist_boxed = True
+ """))
+ config = py.test.config._reparse(['--dist', tmpdir])
+ config.initsession()
+ assert config.option.boxed
+
+ def test_boxed_option_from_conftest(self, testdir):
+ testdir.makepyfile(conftest="dist_boxed=False")
+ config = py.test.config._reparse([testdir.tmpdir, '--box'])
+ assert config.option.boxed
+ config.initsession()
+ assert config.option.boxed
+
+ def test_config_iocapturing(self, testdir):
+ config = testdir.parseconfig(testdir.tmpdir)
+ assert config.getvalue("conf_iocapture")
+ tmpdir = testdir.tmpdir.ensure("sub-with-conftest", dir=1)
+ tmpdir.join("conftest.py").write(py.code.Source("""
+ conf_iocapture = "no"
+ """))
+ config = py.test.config._reparse([tmpdir])
+ assert config.getvalue("conf_iocapture") == "no"
+ capture = config._getcapture()
+ assert isinstance(capture, py.io.StdCapture)
+ assert not capture._out
+ assert not capture._err
+ assert not capture._in
+ assert isinstance(capture, py.io.StdCapture)
+ for opt, cls in (("sys", py.io.StdCapture),
+ ("fd", py.io.StdCaptureFD),
+ ):
+ config.option.conf_iocapture = opt
+ capture = config._getcapture()
+ assert isinstance(capture, cls)
+
+
+class TestConfig_gettopdir:
+ def test_gettopdir(self, testdir):
+ from py.__.test.config import gettopdir
+ tmp = testdir.tmpdir
+ assert gettopdir([tmp]) == tmp
+ topdir = gettopdir([tmp.join("hello"), tmp.join("world")])
+ assert topdir == tmp
+ somefile = tmp.ensure("somefile.py")
+ assert gettopdir([somefile]) == tmp
+
+ def test_gettopdir_pypkg(self, testdir):
+ from py.__.test.config import gettopdir
+ tmp = testdir.tmpdir
+ a = tmp.ensure('a', dir=1)
+ b = tmp.ensure('a', 'b', '__init__.py')
+ c = tmp.ensure('a', 'b', 'c.py')
+ Z = tmp.ensure('Z', dir=1)
+ assert gettopdir([c]) == a
+ assert gettopdir([c, Z]) == tmp
+
+class TestConfigPickling:
+ @py.test.keywords(xfail="issue1 config's pytestplugins/bus initialization")
+ def test_config_initafterpickle_plugin(self, testdir):
+ testdir.makepyfile(__init__="", conftest="x=1; y=2")
+ hello = testdir.makepyfile(hello="")
+ tmp = testdir.tmpdir
+ config = py.test.config._reparse([hello])
+ config2 = py.test.config._reparse([tmp.dirpath()])
+ config2._initialized = False # we have to do that from tests
+ config2._repr = config._makerepr()
+ config2._initafterpickle(topdir=tmp.dirpath())
+ # we check that config "remote" config objects
+ # have correct plugin initialization
+ #XXX assert config2.pytestplugins.pm._plugins
+ #XXX assert config2.bus.isregistered(config2.pytestplugins.forward_event)
+ assert config2.bus == py._com.pyplugins
+ assert config2.pytestplugins.pm == py._com.pyplugins
+
+ def test_config_initafterpickle_some(self, testdir):
+ tmp = testdir.tmpdir
+ tmp.ensure("__init__.py")
+ tmp.ensure("conftest.py").write("x=1 ; y=2")
+ hello = tmp.ensure("test_hello.py")
+ config = py.test.config._reparse([hello])
+ config2 = py.test.config._reparse([tmp.dirpath()])
+ config2._initialized = False # we have to do that from tests
+ config2._repr = config._makerepr()
+ config2._initafterpickle(topdir=tmp.dirpath())
+
+ for col1, col2 in zip(config.getcolitems(), config2.getcolitems()):
+ assert col1.fspath == col2.fspath
+ cols = config2.getcolitems()
+ assert len(cols) == 1
+ col = cols[0]
+ assert col.name == 'test_hello.py'
+ assert col.parent.name == tmp.basename
+ assert col.parent.parent is None
+
+ def test_config_make_and__mergerepr(self, testdir):
+ tmp = testdir.tmpdir
+ tmp.ensure("__init__.py")
+ tmp.ensure("conftest.py").write("x=1")
+ config = py.test.config._reparse([tmp])
+ repr = config._makerepr()
+ config.option.verbose = 42
+ repr2 = config._makerepr()
+ config = py.test.config._reparse([tmp.dirpath()])
+ py.test.raises(KeyError, "config.getvalue('x')")
+ config._mergerepr(repr)
+ assert config.getvalue('x') == 1
+ config._mergerepr(repr2)
+ assert config.option.verbose == 42
+
+ def test_config_rconfig(self, testdir):
+ tmp = testdir.tmpdir
+ tmp.ensure("__init__.py")
+ tmp.ensure("conftest.py").write(py.code.Source("""
+ import py
+ Option = py.test.config.Option
+ option = py.test.config.addoptions("testing group",
+ Option('-G', '--glong', action="store", default=42,
+ type="int", dest="gdest", help="g value."))
+ """))
+ config = py.test.config._reparse([tmp, "-G", "11"])
+ assert config.option.gdest == 11
+ repr = config._makerepr()
+ config = py.test.config._reparse([tmp.dirpath()])
+ py.test.raises(AttributeError, "config.option.gdest")
+ config._mergerepr(repr)
+ option = config.addoptions("testing group",
+ config.Option('-G', '--glong', action="store", default=42,
+ type="int", dest="gdest", help="g value."))
+ assert config.option.gdest == 11
+ assert option.gdest == 11
+
def test_config_picklability(self, tmpdir):
import cPickle
config = py.test.config._reparse([tmpdir])
@@ -442,6 +384,64 @@
assert newcol2.fspath.basename == dir1.basename
assert newcol2.fspath.relto(topdir)
+class TestSessionAndOptions:
+ def test_implied_dsession(self, testdir):
+ for x in 'startserver runbrowser rest'.split():
+ config = testdir.parseconfig(testdir.tmpdir, '--dist', '--%s' % x)
+ assert config._getestdirname() == 'DSession'
+
+ def test_implied_different_sessions(self, tmpdir):
+ config = py.test.config._reparse([tmpdir])
+ assert config._getestdirname() == 'Session'
+ config = py.test.config._reparse([tmpdir, '--dist'])
+ assert config._getestdirname() == 'DSession'
+ config = py.test.config._reparse([tmpdir, '-n3'])
+ assert config._getestdirname() == 'DSession'
+ config = py.test.config._reparse([tmpdir, '--looponfailing'])
+ assert config._getestdirname() == 'LooponfailingSession'
+ config = py.test.config._reparse([tmpdir, '--exec=x'])
+ assert config._getestdirname() == 'DSession'
+ config = py.test.config._reparse([tmpdir, '--dist', '--exec=x'])
+ assert config._getestdirname() == 'DSession'
+ config = py.test.config._reparse([tmpdir, '-f',
+ '--dist', '--exec=x'])
+ assert config._getestdirname() == 'LooponfailingSession'
+ config = py.test.config._reparse([tmpdir, '-f', '-n3',
+ '--dist', '--exec=x',
+ '--collectonly'])
+ assert config._getestdirname() == 'Session'
+
+ def test_sessionname_lookup_custom(self, testdir):
+ testdir.makepyfile(conftest="""
+ from py.__.test.session import Session
+ class MySession(Session):
+ pass
+ """)
+ config = testdir.parseconfig("--session=MySession", testdir.tmpdir)
+ session = config.initsession()
+ assert session.__class__.__name__ == 'MySession'
+
+ def test_initsession(self, tmpdir):
+ config = py.test.config._reparse([tmpdir])
+ session = config.initsession()
+ assert session.config is config
+
+ def test_default_session_options(self, testdir):
+ def runfiletest(opts):
+ sorter = testdir.inline_run(*opts)
+ passed, skipped, failed = sorter.countoutcomes()
+ assert failed == 2
+ assert skipped == passed == 0
+ path = testdir.makepyfile("""
+ def test_f1(): assert 0
+ def test_f2(): assert 0
+ """)
+
+ for opts in ([], ['-l'], ['-s'], ['--tb=no'], ['--tb=short'],
+ ['--tb=long'], ['--fulltrace'], ['--nomagic'],
+ ['--traceconfig'], ['-v'], ['-v', '-v']):
+ runfiletest(opts + [path])
+
def test_default_bus():
assert py.test.config.bus is py._com.pyplugins
Modified: py/branch/pytestplugin/py/test/testing/test_pycollect.py
==============================================================================
--- py/branch/pytestplugin/py/test/testing/test_pycollect.py (original)
+++ py/branch/pytestplugin/py/test/testing/test_pycollect.py Mon Feb 23 16:23:42 2009
@@ -335,7 +335,7 @@
f1, f2 = colitems
assert cmp(f2, f1) > 0
-class TestCustomConftest:
+class TestConftestCustomization:
def test_extra_python_files_and_functions(self, testdir):
testdir.makepyfile(conftest="""
import py
More information about the pytest-commit
mailing list