[py-svn] r37055 - in py/branch/config/py/test: . terminal testing

hpk at codespeak.net hpk at codespeak.net
Sat Jan 20 12:52:00 CET 2007


Author: hpk
Date: Sat Jan 20 12:51:54 2007
New Revision: 37055

Modified:
   py/branch/config/py/test/cmdline.py
   py/branch/config/py/test/config.py
   py/branch/config/py/test/defaultconftest.py
   py/branch/config/py/test/terminal/remote.py
   py/branch/config/py/test/testing/test_collect.py
   py/branch/config/py/test/testing/test_config.py
   py/branch/config/py/test/testing/test_session.py
Log:
reintroducing --session to lookup custom session objects in conftests.py 
there is no other way to override a session object from conftests. 



Modified: py/branch/config/py/test/cmdline.py
==============================================================================
--- py/branch/config/py/test/cmdline.py	(original)
+++ py/branch/config/py/test/cmdline.py	Sat Jan 20 12:51:54 2007
@@ -10,9 +10,7 @@
         args = py.std.sys.argv[1:]
     config = py.test.config
     config.parse(args)
-    sessionclass = config.getsessionclass() 
-    session = sessionclass(config)
-    
+    session = config.initsession()
     try: 
         failures = session.main()
         if failures: 

Modified: py/branch/config/py/test/config.py
==============================================================================
--- py/branch/config/py/test/config.py	(original)
+++ py/branch/config/py/test/config.py	Sat Jan 20 12:51:54 2007
@@ -76,23 +76,27 @@
         except KeyError:
             return self.conftest.rget(name, path) 
 
-    def getsessionclass(self): 
+    def initsession(self):
+        """ return an initialized session object. """
+        cls = self._getsessionclass()
+        session = cls(config)
+        #session.fixoptions()
+        return session
+
+    def _getsessionclass(self): 
         """ return Session class determined from cmdline options
             and looked up in initial config modules. 
         """
-        name = self._getsessionname()
-        return self._lookupsession(name)
-
-    def _lookupsession(self, name):
-        """ return session class for the given name. """
-        res = self.conftest.rget(name)
-        if isinstance(res, str): 
-            mod = __import__(res, None, None, '__doc__')
-            res = getattr(mod, name)
-        return res
+        if self.option.session is not None:
+            return self.conftest.rget(self.option.session)
+        else:
+            name = self._getsessionname()
+            importpath = globals()[name]
+            mod = __import__(importpath, None, None, '__doc__')
+            return getattr(mod, name)
 
     def _getsessionname(self):
-        """ return session name as determined from options. """
+        """ return default session name as determined from options. """
         name = 'TerminalSession'
         if self.option.dist:
             name = 'RSession'
@@ -162,6 +166,13 @@
 # this is the one per-process instance of py.test configuration 
 config = Config()
 
+# default import paths for sessions 
+
+TkinterSession = 'py.__.test.tkinter.reportsession'
+TerminalSession = 'py.__.test.terminal.terminal'
+RSession = 'py.__.test.rsession.rsession'
+LSession = 'py.__.test.rsession.rsession'
+
 #
 # helpers
 #

Modified: py/branch/config/py/test/defaultconftest.py
==============================================================================
--- py/branch/config/py/test/defaultconftest.py	(original)
+++ py/branch/config/py/test/defaultconftest.py	Sat Jan 20 12:51:54 2007
@@ -10,13 +10,6 @@
 
 additionalinfo = None
 
-# ===================================================
-# Default Sessions 
-
-TkinterSession = 'py.__.test.tkinter.reportsession'
-TerminalSession = 'py.__.test.terminal.terminal'
-RSession = 'py.__.test.rsession.rsession'
-LSession = 'py.__.test.rsession.rsession'
 
 # ===================================================
 # Distributed testing specific options 
@@ -73,13 +66,9 @@
         Option('', '--traceconfig',
                action="store_true", dest="traceconfig", default=False,
                help="trace considerations of conftest.py files."),
-        Option('', '--apigen',
-               action="store", dest="apigen",
-               help="generate api documentation while testing (requires"
-               "argument pointing to a script)."),
     )
 
-    py.test.config.addoptions('options implying subprocesses (warning: beta)',
+    py.test.config.addoptions('EXPERIMENTAL options implying subprocesses',
         Option('', '--tkinter',
                action="store_true", dest="tkinter", default=False,
                help="use tkinter test session frontend."),
@@ -103,5 +92,12 @@
         Option('-r', '--rest',
                action='store_true', dest="restreport", default=False,
                help="restructured text output reporting."),
+        Option('', '--apigen',
+               action="store", dest="apigen",
+               help="generate api documentation while testing (requires"
+               "argument pointing to a script)."),
+        Option('', '--session',
+               action="store", dest="session", default=None,
+               help="lookup sessioname in conftest.py files and use it."), 
     )
     

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	Sat Jan 20 12:51:54 2007
@@ -64,7 +64,7 @@
     else:
         cols = args 
     #print "processing", cols
-    session = config.getsessionclass()(config) 
+    session = config._getsessionclass()(config) 
     session.shouldclose = channel.isclosed 
     failures = session.main()
     channel.send(failures)

Modified: py/branch/config/py/test/testing/test_collect.py
==============================================================================
--- py/branch/config/py/test/testing/test_collect.py	(original)
+++ py/branch/config/py/test/testing/test_collect.py	Sat Jan 20 12:51:54 2007
@@ -215,7 +215,7 @@
     try: 
         config = py.test.config._reparse([]) 
         out = py.std.cStringIO.StringIO()
-        session = config.getsessionclass()(config, out) 
+        session = config._getsessionclass()(config, out) 
         session.main() 
         l = session.getitemoutcomepairs(py.test.Item.Passed) 
         assert len(l) == 2
@@ -225,7 +225,7 @@
     # test that running the file directly works 
     config = py.test.config._reparse([str(checkfile)]) 
     out = py.std.cStringIO.StringIO()
-    session = config.getsessionclass()(config, out) 
+    session = config._getsessionclass()(config, out) 
     session.main() 
     l = session.getitemoutcomepairs(py.test.Item.Passed) 
     assert len(l) == 2
@@ -262,7 +262,7 @@
     try: 
         config = py.test.config._reparse([]) 
         out = py.std.cStringIO.StringIO()
-        session = config.getsessionclass()(config, out) 
+        session = config._getsessionclass()(config, out) 
         session.main() 
         l = session.getitemoutcomepairs(py.test.Item.Passed) 
         assert len(l) == 1
@@ -272,7 +272,7 @@
     # test that running the file directly works 
     config = py.test.config._reparse([str(checkfile)]) 
     out = py.std.cStringIO.StringIO()
-    session = config.getsessionclass()(config, out) 
+    session = config._getsessionclass()(config, out) 
     session.main() 
     l = session.getitemoutcomepairs(py.test.Item.Passed) 
     assert len(l) == 1

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	Sat Jan 20 12:51:54 2007
@@ -155,22 +155,15 @@
     def test_tkintersession(self):
         config = py.test.config._reparse([self.tmpdir, '--tkinter'])
         assert config._getsessionname() == 'TkinterSession'
-
-    def test_sessionname_lookup(self):
-        config = py.test.config._reparse([self.tmpdir])
-        for name in 'TerminalSession LSession RSession TkinterSession'.split():
-            cls = config._lookupsession(name)
-            assert cls.__name__ == name 
+        config = py.test.config._reparse([self.tmpdir, '--dist'])
 
     def test_sessionname_lookup_custom(self):
         self.tmpdir.join("conftest.py").write(py.code.Source("""
-            TerminalSession = 0
-            TkinterSession = 1
-            RSession = 2
-            LSession = 3
+            class MySession:
+                def __init__(self, config):
+                    self.config = config 
         """)) 
-        config = py.test.config._reparse([self.tmpdir])
-        assert config._lookupsession('TerminalSession') == 0
-        assert config._lookupsession('TkinterSession') == 1
-        assert config._lookupsession('RSession') == 2
-        assert config._lookupsession('LSession') == 3
+        config = py.test.config._reparse(["--session=MySession", self.tmpdir])
+        session = config.initsession()
+        assert session.__class__.__name__ == 'MySession'
+

Modified: py/branch/config/py/test/testing/test_session.py
==============================================================================
--- py/branch/config/py/test/testing/test_session.py	(original)
+++ py/branch/config/py/test/testing/test_session.py	Sat Jan 20 12:51:54 2007
@@ -8,7 +8,7 @@
 class TestDefaultSession: 
     def test_simple(self): 
         config = py.test.config._reparse([datadir/'filetest.py']) 
-        session = config.getsessionclass()(config, py.std.sys.stdout)
+        session = config._getsessionclass()(config, py.std.sys.stdout)
         session.main()
         l = session.getitemoutcomepairs(py.test.Item.Failed)
         assert len(l) == 2 
@@ -18,7 +18,7 @@
     def test_simple_verbose(self): 
         config = py.test.config._reparse([datadir/'filetest.py', 
                                                 '--verbose']) 
-        session = config.getsessionclass()(config, py.std.sys.stdout)
+        session = config._getsessionclass()(config, py.std.sys.stdout)
         session.main()
         l = session.getitemoutcomepairs(py.test.Item.Failed)
         assert len(l) == 2 
@@ -28,7 +28,7 @@
     def test_simple_verbose_verbose(self): 
         config = py.test.config._reparse([datadir/'filetest.py', 
                                                 '-v', '-v']) 
-        session = config.getsessionclass()(config, py.std.sys.stdout)
+        session = config._getsessionclass()(config, py.std.sys.stdout)
         session.main()
         l = session.getitemoutcomepairs(py.test.Item.Failed)
         assert len(l) == 2 
@@ -40,7 +40,7 @@
         for keyword in ['test_one', 'est_on']:
             config = py.test.config._reparse([datadir/'filetest.py', 
                                                    '-k', keyword])
-            session = config.getsessionclass()(config, py.std.sys.stdout)
+            session = config._getsessionclass()(config, py.std.sys.stdout)
             session.main()
             l = session.getitemoutcomepairs(py.test.Item.Failed)
             assert len(l) == 1 
@@ -69,7 +69,7 @@
                         'TestClass test_2', 'xxx TestClass test_2',): 
             f = py.std.StringIO.StringIO()
             config = py.test.config._reparse([o, '-k', keyword]) 
-            session = config.getsessionclass()(config, f) 
+            session = config._getsessionclass()(config, f) 
             session.main()
             print "keyword", repr(keyword)
             l = session.getitemoutcomepairs(py.test.Item.Passed)
@@ -339,7 +339,7 @@
                         ['--exec=' + py.std.sys.executable, 
                          o])
         assert config.option._remote 
-        cls = config.getsessionclass() 
+        cls = config._getsessionclass() 
         out = []  # out = py.std.Queue.Queue() 
         session = cls(config, out.append) 
         session.main()
@@ -359,7 +359,7 @@
         print py.std.sys.executable
         config = py.test.config._reparse(['--looponfailing', str(o)])
         assert config.option._remote 
-        cls = config.getsessionclass() 
+        cls = config._getsessionclass() 
         out = py.std.Queue.Queue() 
         session = cls(config, out.put) 
         pool = py._thread.WorkerPool() 



More information about the pytest-commit mailing list