[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