From 5d271b2bdee37b87c7c13cf156e23df3f8c3ccad Mon Sep 17 00:00:00 2001 From: hpk Date: Thu, 9 Apr 2009 16:03:09 +0200 Subject: [PATCH] [svn r63894] grand renaming on plugin-related mostly internal objects. --HG-- branch : trunk --- py/__init__.py | 12 ++--- py/_com.py | 22 +++++----- py/misc/testing/test_com.py | 30 ++++++------- py/misc/testing/test_warn.py | 8 ++-- py/misc/warn.py | 8 ++-- py/test/cmdline.py | 4 +- py/test/collect.py | 2 +- py/test/config.py | 23 +++++----- py/test/dist/dsession.py | 8 ++-- py/test/dist/testing/test_dsession.py | 8 ++-- py/test/dist/testing/test_nodemanage.py | 2 +- py/test/dist/testing/test_txnode.py | 2 +- py/test/dist/txnode.py | 10 ++--- py/test/looponfail/remote.py | 4 +- py/test/plugin/pytest__pytest.py | 26 +++++------ py/test/plugin/pytest_default.py | 8 ++-- py/test/plugin/pytest_plugintester.py | 4 +- py/test/plugin/pytest_pytester.py | 32 +++++++------- py/test/plugin/pytest_resultdb.py | 4 +- py/test/plugin/pytest_resultlog.py | 4 +- py/test/plugin/pytest_runner.py | 2 +- py/test/plugin/pytest_terminal.py | 24 +++++----- py/test/pycollect.py | 14 +++--- py/test/pytestplugin.py | 58 ++++++++++++------------- py/test/session.py | 10 ++--- py/test/testing/test_collect.py | 4 +- py/test/testing/test_config.py | 2 +- py/test/testing/test_pickling.py | 15 +++---- py/test/testing/test_pycollect.py | 18 ++++---- py/test/testing/test_pytestplugin.py | 48 ++++++++++---------- 30 files changed, 206 insertions(+), 210 deletions(-) diff --git a/py/__init__.py b/py/__init__.py index b00a7bb5d..783640e8e 100644 --- a/py/__init__.py +++ b/py/__init__.py @@ -25,8 +25,8 @@ version = "1.0.0b1" initpkg(__name__, description = "pylib and py.test: agile development and test support library", - revision = int('$LastChangedRevision: 63869 $'.split(':')[1][:-1]), - lastchangedate = '$LastChangedDate: 2009-04-08 19:50:14 +0200 (Wed, 08 Apr 2009) $', + revision = int('$LastChangedRevision: 63894 $'.split(':')[1][:-1]), + lastchangedate = '$LastChangedDate: 2009-04-09 16:03:09 +0200 (Thu, 09 Apr 2009) $', version = version, url = "http://pylib.org", download_url = "http://codespeak.net/py/%s/download.html" % version, @@ -54,9 +54,9 @@ initpkg(__name__, exportdefs = { # py lib events and plugins - '_com.PyPlugins' : ('./_com.py', 'PyPlugins'), + '_com.Registry' : ('./_com.py', 'Registry'), '_com.MultiCall' : ('./_com.py', 'MultiCall'), - '_com.pyplugins' : ('./_com.py', 'pyplugins'), + '_com.comregistry' : ('./_com.py', 'comregistry'), '_com.PluginAPI' : ('./_com.py', 'PluginAPI'), # py lib cmdline tools @@ -70,7 +70,7 @@ initpkg(__name__, # helpers for use from test functions or collectors 'test.__doc__' : ('./test/__init__.py', '__doc__'), - 'test._PytestPlugins' : ('./test/pytestplugin.py', 'PytestPlugins'), + 'test._PluginManager' : ('./test/pytestplugin.py', 'PluginManager'), 'test.raises' : ('./test/outcome.py', 'raises'), 'test.mark' : ('./test/outcome.py', 'mark',), 'test.deprecated_call' : ('./test/outcome.py', 'deprecated_call'), @@ -199,6 +199,6 @@ initpkg(__name__, }) import py -py._com.pyplugins.consider_env() +py._com.comregistry.consider_env() diff --git a/py/_com.py b/py/_com.py index 7f6fdf8ed..80efdb139 100644 --- a/py/_com.py +++ b/py/_com.py @@ -62,7 +62,7 @@ class MultiCall: self._ex1 = True -class PyPlugins: +class Registry: """ Manage Plugins: Load plugins and manage calls to plugins. """ @@ -71,7 +71,7 @@ class PyPlugins: def __init__(self, plugins=None): if plugins is None: plugins = [] - self._plugins = plugins + self.plugins = plugins def import_module(self, modspec): # XXX allow modspec to specify version / lookup @@ -99,22 +99,22 @@ class PyPlugins: def register(self, plugin): assert not isinstance(plugin, str) self.call_each("pytest_plugin_registered", plugin) - self._plugins.append(plugin) + self.plugins.append(plugin) def unregister(self, plugin): self.call_each("pytest_plugin_unregistered", plugin) - self._plugins.remove(plugin) + self.plugins.remove(plugin) def getplugins(self): - return list(self._plugins) + return list(self.plugins) def isregistered(self, plugin): - return plugin in self._plugins + return plugin in self.plugins def listattr(self, attrname, plugins=None, extra=(), reverse=False): l = [] if plugins is None: - plugins = self._plugins + plugins = self.plugins if extra: plugins += list(extra) for plugin in plugins: @@ -143,15 +143,15 @@ class PluginAPI: def __init__(self, apiclass, plugins=None): self._apiclass = apiclass if plugins is None: - plugins = pyplugins - self._plugins = plugins + plugins = comregistry + self.plugins = plugins for name, method in vars(apiclass).items(): if name[:2] != "__": firstresult = getattr(method, 'firstresult', False) mm = ApiCall(plugins, name, firstresult=firstresult) setattr(self, name, mm) def __repr__(self): - return "" %(self._apiclass, self._plugins) + return "" %(self._apiclass, self.plugins) class ApiCall: def __init__(self, plugins, name, firstresult): @@ -168,4 +168,4 @@ class ApiCall: #print "making multicall", self return mc.execute(firstresult=self.firstresult) -pyplugins = PyPlugins() +comregistry = Registry() diff --git a/py/misc/testing/test_com.py b/py/misc/testing/test_com.py index 43bbde593..26c121c07 100644 --- a/py/misc/testing/test_com.py +++ b/py/misc/testing/test_com.py @@ -1,7 +1,7 @@ import py import os -from py._com import PyPlugins, MultiCall +from py._com import Registry, MultiCall from py._com import PluginAPI pytest_plugins = "xfail" @@ -75,13 +75,13 @@ class TestMultiCall: #assert res == 10 -class TestPyPlugins: +class TestRegistry: def test_MultiCall(self): - plugins = PyPlugins() + plugins = Registry() assert hasattr(plugins, "MultiCall") def test_register(self): - plugins = PyPlugins() + plugins = Registry() class MyPlugin: pass my = MyPlugin() @@ -98,7 +98,7 @@ class TestPyPlugins: assert plugins.getplugins() == [my2] def test_call_methods(self): - plugins = PyPlugins() + plugins = Registry() class api1: def m(self, __call__, x): return x @@ -121,7 +121,7 @@ class TestPyPlugins: assert plugins.call_plugin(api2(), 't') is None def test_call_none_is_no_result(self): - plugins = PyPlugins() + plugins = Registry() class api1: def m(self): return None @@ -135,7 +135,7 @@ class TestPyPlugins: assert plugins.call_each('m') == [41] def test_call_noneasresult(self): - plugins = PyPlugins() + plugins = Registry() class api1: def m(self, __call__): return __call__.NONEASRESULT @@ -145,7 +145,7 @@ class TestPyPlugins: assert plugins.call_each('m') == [None, None] def test_listattr(self): - plugins = PyPlugins() + plugins = Registry() class api1: x = 41 class api2: @@ -161,12 +161,12 @@ class TestPyPlugins: assert l == [43, 42, 41] def test_consider_env(self, monkeypatch): - plugins = PyPlugins() + plugins = Registry() monkeypatch.setitem(os.environ, 'PYLIB', "unknownconsider_env") py.test.raises(ImportError, "plugins.consider_env()") def test_consider_module(self): - plugins = PyPlugins() + plugins = Registry() mod = py.std.new.module("temp") mod.pylib = ["xxx nomod"] excinfo = py.test.raises(ImportError, "plugins.consider_module(mod)") @@ -174,10 +174,10 @@ class TestPyPlugins: plugins.consider_module(mod) def test_api_and_defaults(): - assert isinstance(py._com.pyplugins, PyPlugins) + assert isinstance(py._com.comregistry, Registry) def test_subprocess_env(testdir, monkeypatch): - plugins = PyPlugins() + plugins = Registry() old = py.path.local(py.__file__).dirpath().dirpath().chdir() try: monkeypatch.setitem(os.environ, "PYLIB", 'unknownconsider') @@ -191,7 +191,7 @@ def test_subprocess_env(testdir, monkeypatch): class TestPluginAPI: def test_happypath(self): - plugins = PyPlugins() + plugins = Registry() class Api: def hello(self, arg): pass @@ -208,7 +208,7 @@ class TestPluginAPI: assert not hasattr(mcm, 'world') def test_firstresult(self): - plugins = PyPlugins() + plugins = Registry() class Api: def hello(self, arg): pass hello.firstresult = True @@ -224,4 +224,4 @@ class TestPluginAPI: def test_default_plugins(self): class Api: pass mcm = PluginAPI(apiclass=Api) - assert mcm._plugins == py._com.pyplugins + assert mcm.plugins == py._com.comregistry diff --git a/py/misc/testing/test_warn.py b/py/misc/testing/test_warn.py index d1859ec4a..76147e7de 100644 --- a/py/misc/testing/test_warn.py +++ b/py/misc/testing/test_warn.py @@ -4,9 +4,9 @@ mypath = py.magic.autopath() class TestWarningPlugin: def setup_method(self, method): - self.bus = py._com.PyPlugins() - self.wb = WarningPlugin(self.bus) - self.bus.register(self) + self.pluginmanager = py._com.Registry() + self.wb = WarningPlugin(self.pluginmanager) + self.pluginmanager.register(self) self.warnings = [] def pyevent__WARNING(self, warning): @@ -46,4 +46,4 @@ class TestWarningPlugin: def test_default(): from py.__.misc.warn import APIWARN - assert py._com.pyplugins.isregistered(APIWARN.im_self) + assert py._com.comregistry.isregistered(APIWARN.im_self) diff --git a/py/misc/warn.py b/py/misc/warn.py index 30404a333..0431a54bf 100644 --- a/py/misc/warn.py +++ b/py/misc/warn.py @@ -10,12 +10,12 @@ class Warning(py.std.exceptions.DeprecationWarning): def __str__(self): return self.msg -# XXX probably only apiwarn() + py._com.pyplugins forwarding +# XXX probably only apiwarn() + py._com.comregistry forwarding # warn_explicit is actually needed class WarningPlugin(object): def __init__(self, bus): - self.bus = bus + self.pluginmanager = bus bus.register(self) def pyevent__WARNING(self, warning): @@ -62,8 +62,8 @@ class WarningPlugin(object): filename = module path = py.path.local(filename) warning = Warning(msg, path, lineno) - self.bus.call_each("pyevent__WARNING", warning) + self.pluginmanager.call_each("pyevent__WARNING", warning) # singleton api warner for py lib -apiwarner = WarningPlugin(py._com.pyplugins) +apiwarner = WarningPlugin(py._com.comregistry) APIWARN = apiwarner.apiwarn diff --git a/py/test/cmdline.py b/py/test/cmdline.py index c3fea5e88..5b2a86743 100644 --- a/py/test/cmdline.py +++ b/py/test/cmdline.py @@ -11,10 +11,10 @@ def main(args=None): config = py.test.config try: config.parse(args) - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) session = config.initsession() exitstatus = session.main() - config.pytestplugins.do_unconfigure(config) + config.pluginmanager.do_unconfigure(config) raise SystemExit(exitstatus) except config.Error, e: py.std.sys.stderr.write("ERROR: %s\n" %(e.args[0],)) diff --git a/py/test/collect.py b/py/test/collect.py index d980cabda..196725af7 100644 --- a/py/test/collect.py +++ b/py/test/collect.py @@ -443,7 +443,7 @@ class Directory(FSCollector): def consider_dir(self, path, usefilters=None): if usefilters is not None: APIWARN("0.99", "usefilters argument not needed") - res = self.config.pytestplugins.call_firstresult( + res = self.config.pluginmanager.call_firstresult( 'pytest_collect_recurse', path=path, parent=self) if res is None or res: return self.config.api.pytest_collect_directory( diff --git a/py/test/config.py b/py/test/config.py index 3fbee0f1f..eb56d32ca 100644 --- a/py/test/config.py +++ b/py/test/config.py @@ -28,25 +28,24 @@ class Config(object): basetemp = None _sessionclass = None - def __init__(self, pytestplugins=None, topdir=None): + def __init__(self, pluginmanager=None, topdir=None): self.option = CmdOptions() self.topdir = topdir self._parser = parseopt.Parser( usage="usage: %prog [options] [file_or_dir] [file_or_dir] [...]", processopt=self._processopt, ) - if pytestplugins is None: - pytestplugins = py.test._PytestPlugins() - assert isinstance(pytestplugins, py.test._PytestPlugins) - self.bus = pytestplugins.pyplugins - self.pytestplugins = pytestplugins + if pluginmanager is None: + pluginmanager = py.test._PluginManager() + assert isinstance(pluginmanager, py.test._PluginManager) + self.pluginmanager = pluginmanager self._conftest = Conftest(onimport=self._onimportconftest) self._setupstate = SetupState() - self.api = pytestplugins.api + self.api = pluginmanager.api def _onimportconftest(self, conftestmodule): self.trace("loaded conftestmodule %r" %(conftestmodule,)) - self.pytestplugins.consider_conftest(conftestmodule) + self.pluginmanager.consider_conftest(conftestmodule) def trace(self, msg): if getattr(self.option, 'traceconfig', None): @@ -76,8 +75,8 @@ class Config(object): def _preparse(self, args): self._conftest.setinitial(args) - self.pytestplugins.consider_env() - self.pytestplugins.do_addoption(self._parser) + self.pluginmanager.consider_env() + self.pluginmanager.do_addoption(self._parser) def parse(self, args): """ parse cmdline arguments into this config object. @@ -108,7 +107,7 @@ class Config(object): # * registering to py lib plugins # * setting py.test.config self.__init__( - pytestplugins=py.test._PytestPlugins(py._com.pyplugins), + pluginmanager=py.test._PluginManager(py._com.comregistry), topdir=py.path.local(), ) # we have to set py.test.config because preparse() @@ -339,6 +338,6 @@ def gettopdir(args): # this is the one per-process instance of py.test configuration config_per_process = Config( - pytestplugins=py.test._PytestPlugins(py._com.pyplugins) + pluginmanager=py.test._PluginManager(py._com.comregistry) ) diff --git a/py/test/dist/dsession.py b/py/test/dist/dsession.py index a05a8c988..76f2c1e0c 100644 --- a/py/test/dist/dsession.py +++ b/py/test/dist/dsession.py @@ -121,11 +121,11 @@ class DSession(Session): loopstate.exitstatus = outcome.EXIT_TESTSFAILED else: loopstate.exitstatus = outcome.EXIT_OK - #self.config.bus.unregister(loopstate) + #self.config.pluginmanager.unregister(loopstate) def _initloopstate(self, colitems): loopstate = LoopState(self, colitems) - self.config.bus.register(loopstate) + self.config.pluginmanager.register(loopstate) return loopstate def loop(self, colitems): @@ -140,9 +140,9 @@ class DSession(Session): except KeyboardInterrupt: exitstatus = outcome.EXIT_INTERRUPTED except: - self.config.pytestplugins.notify_exception() + self.config.pluginmanager.notify_exception() exitstatus = outcome.EXIT_INTERNALERROR - self.config.bus.unregister(loopstate) + self.config.pluginmanager.unregister(loopstate) if exitstatus == 0 and self._testsfailed: exitstatus = outcome.EXIT_TESTSFAILED return exitstatus diff --git a/py/test/dist/testing/test_dsession.py b/py/test/dist/testing/test_dsession.py index 9af7c498e..3eafdfe23 100644 --- a/py/test/dist/testing/test_dsession.py +++ b/py/test/dist/testing/test_dsession.py @@ -174,7 +174,7 @@ class TestDSession: session.senditems_load([item1, item2]) node = session.item2nodes[item1] [0] session.queueevent("pytest_testnodedown", node, None) - evrec = testdir.geteventrecorder(session.bus) + evrec = testdir.geteventrecorder(session.pluginmanager) print session.item2nodes loopstate = session._initloopstate([]) session.loop_once(loopstate) @@ -261,7 +261,7 @@ class TestDSession: session.addnode(node) loopstate = session._initloopstate([]) loopstate.shuttingdown = True - evrec = testdir.geteventrecorder(session.bus) + evrec = testdir.geteventrecorder(session.pluginmanager) session.queueevent("pytest_itemtestreport", rep=run(item, node)) session.loop_once(loopstate) assert not evrec.getcalls("pytest_testnodedown") @@ -282,7 +282,7 @@ class TestDSession: dsel = session.filteritems([modcol]) assert dsel == [modcol] items = modcol.collect() - callrecorder = testdir.geteventrecorder(session.bus).callrecorder + callrecorder = testdir.geteventrecorder(session.pluginmanager).callrecorder remaining = session.filteritems(items) assert remaining == [] @@ -355,7 +355,7 @@ class TestDSession: """) config = testdir.parseconfig('-d', p1, '--tx=popen') dsession = DSession(config) - callrecorder = testdir.geteventrecorder(config.bus).callrecorder + callrecorder = testdir.geteventrecorder(config.pluginmanager).callrecorder dsession.main([config.getfsnode(p1)]) rep = callrecorder.popcall("pytest_itemtestreport").rep assert rep.passed diff --git a/py/test/dist/testing/test_nodemanage.py b/py/test/dist/testing/test_nodemanage.py index b6ba51221..8c30ff9e4 100644 --- a/py/test/dist/testing/test_nodemanage.py +++ b/py/test/dist/testing/test_nodemanage.py @@ -104,7 +104,7 @@ class TestNodeManager: config = py.test.config._reparse([source, '--debug']) assert config.option.debug nodemanager = NodeManager(config, specs) - sorter = testdir.geteventrecorder(config.bus).callrecorder + sorter = testdir.geteventrecorder(config.pluginmanager).callrecorder nodemanager.setup_nodes(putevent=[].append) for spec in nodemanager.gwmanager.specs: l = sorter.getcalls("pytest_trace") diff --git a/py/test/dist/testing/test_txnode.py b/py/test/dist/testing/test_txnode.py index ebaaa04f3..bf2c09099 100644 --- a/py/test/dist/testing/test_txnode.py +++ b/py/test/dist/testing/test_txnode.py @@ -35,7 +35,7 @@ class MySetup: self.pyfuncitem = pyfuncitem def geteventargs(self, eventname, timeout=2.0): - eq = EventQueue(self.config.bus, self.queue) + eq = EventQueue(self.config.pluginmanager, self.queue) return eq.geteventargs(eventname, timeout=timeout) def makenode(self, config=None): diff --git a/py/test/dist/txnode.py b/py/test/dist/txnode.py index 5b3b21240..ebd5a620b 100644 --- a/py/test/dist/txnode.py +++ b/py/test/dist/txnode.py @@ -61,7 +61,7 @@ class TXNode(object): except: excinfo = py.code.ExceptionInfo() print "!" * 20, excinfo - self.config.pytestplugins.notify_exception(excinfo) + self.config.pluginmanager.notify_exception(excinfo) def send(self, item): assert item is not None @@ -112,8 +112,8 @@ class SlaveNode(object): self.config, basetemp = channel.receive() if basetemp: self.config.basetemp = py.path.local(basetemp) - self.config.pytestplugins.do_configure(self.config) - self.config.pytestplugins.register(self) + self.config.pluginmanager.do_configure(self.config) + self.config.pluginmanager.register(self) self.sendevent("slaveready") try: while 1: @@ -123,9 +123,9 @@ class SlaveNode(object): break if isinstance(task, list): for item in task: - item.config.pytestplugins.do_itemrun(item) + item.config.pluginmanager.do_itemrun(item) else: - task.config.pytestplugins.do_itemrun(item=task) + task.config.pluginmanager.do_itemrun(item=task) except KeyboardInterrupt: raise except: diff --git a/py/test/looponfail/remote.py b/py/test/looponfail/remote.py index dd3983ae9..0324d3816 100644 --- a/py/test/looponfail/remote.py +++ b/py/test/looponfail/remote.py @@ -116,7 +116,7 @@ def slave_runsession(channel, config, fullwidth, hasmarkup): config.option.looponfail = False config.option.usepdb = False trails = channel.receive() - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) DEBUG("SLAVE: initsession()") session = config.initsession() # XXX configure the reporter object's terminal writer more directly @@ -143,7 +143,7 @@ def slave_runsession(channel, config, fullwidth, hasmarkup): pytest_collectreport = pytest_itemtestreport failreports = Failures() - session.bus.register(failreports) + session.pluginmanager.register(failreports) DEBUG("SLAVE: starting session.main()") session.main(colitems) diff --git a/py/test/plugin/pytest__pytest.py b/py/test/plugin/pytest__pytest.py index adb18ee44..424fa9411 100644 --- a/py/test/plugin/pytest__pytest.py +++ b/py/test/plugin/pytest__pytest.py @@ -8,10 +8,10 @@ class PytestArg: def __init__(self, pyfuncitem): self.pyfuncitem = pyfuncitem - def getcallrecorder(self, apiclass, pyplugins=None): - if pyplugins is None: - pyplugins = self.pyfuncitem.config.pytestplugins.pyplugins - callrecorder = CallRecorder(pyplugins) + def getcallrecorder(self, apiclass, comregistry=None): + if comregistry is None: + comregistry = self.pyfuncitem.config.pluginmanager.comregistry + callrecorder = CallRecorder(comregistry) callrecorder.start_recording(apiclass) self.pyfuncitem.addfinalizer(callrecorder.finalize) return callrecorder @@ -30,8 +30,8 @@ class ParsedCall: return "" %(self._name, d) class CallRecorder: - def __init__(self, pyplugins): - self._pyplugins = pyplugins + def __init__(self, comregistry): + self._comregistry = comregistry self.calls = [] self._recorders = {} @@ -44,11 +44,11 @@ class CallRecorder: setattr(RecordCalls, name, self._getcallparser(method)) recorder = RecordCalls() self._recorders[apiclass] = recorder - self._pyplugins.register(recorder) + self._comregistry.register(recorder) def finalize(self): for recorder in self._recorders.values(): - self._pyplugins.unregister(recorder) + self._comregistry.unregister(recorder) self._recorders.clear() def recordsmethod(self, name): @@ -99,13 +99,13 @@ def test_generic(plugintester): plugintester.apicheck(_pytestPlugin) def test_callrecorder_basic(): - pyplugins = py._com.PyPlugins() - rec = CallRecorder(pyplugins) + comregistry = py._com.Registry() + rec = CallRecorder(comregistry) class ApiClass: def xyz(self, arg): pass rec.start_recording(ApiClass) - pyplugins.call_each("xyz", 123) + comregistry.call_each("xyz", 123) call = rec.popcall("xyz") assert call.arg == 123 assert call._name == "xyz" @@ -122,8 +122,8 @@ def test_functional(testdir, linecomp): class Plugin: def xyz(self, arg): return arg + 1 - rec._pyplugins.register(Plugin()) - res = rec._pyplugins.call_firstresult("xyz", 41) + rec._comregistry.register(Plugin()) + res = rec._comregistry.call_firstresult("xyz", 41) assert res == 42 """) sorter.assertoutcome(passed=1) diff --git a/py/test/plugin/pytest_default.py b/py/test/plugin/pytest_default.py index a7131ad95..36a7d97ad 100644 --- a/py/test/plugin/pytest_default.py +++ b/py/test/plugin/pytest_default.py @@ -158,7 +158,7 @@ class DefaultPlugin: def loadplugins(self, config): for name in config.getvalue("plugin"): print "importing", name - config.pytestplugins.import_plugin(name) + config.pluginmanager.import_plugin(name) def setsession(self, config): val = config.getvalue @@ -177,7 +177,7 @@ def test_implied_different_sessions(tmpdir): def x(*args): config = py.test.config._reparse([tmpdir] + list(args)) try: - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) except ValueError: return Exception return getattr(config._sessionclass, '__name__', None) @@ -194,13 +194,13 @@ def test_plugin_specify(testdir): testdir.chdir() config = testdir.parseconfig("-p", "nqweotexistent") py.test.raises(ImportError, - "config.pytestplugins.do_configure(config)" + "config.pluginmanager.do_configure(config)" ) def test_plugin_already_exists(testdir): config = testdir.parseconfig("-p", "default") assert config.option.plugin == ['default'] - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) class TestDistOptions: diff --git a/py/test/plugin/pytest_plugintester.py b/py/test/plugin/pytest_plugintester.py index bd04c5c86..30022accc 100644 --- a/py/test/plugin/pytest_plugintester.py +++ b/py/test/plugin/pytest_plugintester.py @@ -27,7 +27,7 @@ class Support(object): class PluginTester(Support): def testdir(self): # XXX import differently, eg. - # FSTester = self.pyfuncitem.config.pytestplugins.getpluginattr("pytester", "FSTester") + # FSTester = self.pyfuncitem.config.pluginmanager.getpluginattr("pytester", "FSTester") from pytest_pytester import TmpTestdir crunner = TmpTestdir(self.pyfuncitem) self.pyfuncitem.addfinalizer(crunner.finalize) @@ -42,7 +42,7 @@ class PluginTester(Support): def apicheck(self, pluginclass): print "loading and checking", pluginclass fail = False - pm = py.test._PytestPlugins() + pm = py.test._PluginManager() methods = collectattr(pluginclass) hooks = collectattr(api.PluginHooks) getargs = py.std.inspect.getargs diff --git a/py/test/plugin/pytest_pytester.py b/py/test/plugin/pytest_pytester.py index 703cec614..e3cf8b374 100644 --- a/py/test/plugin/pytest_pytester.py +++ b/py/test/plugin/pytest_pytester.py @@ -25,8 +25,8 @@ class PytesterPlugin: # return EventRecorder def pytest_funcarg__eventrecorder(self, pyfuncitem): - evrec = EventRecorder(py._com.pyplugins) - pyfuncitem.addfinalizer(lambda: evrec.pyplugins.unregister(evrec)) + evrec = EventRecorder(py._com.comregistry) + pyfuncitem.addfinalizer(lambda: evrec.comregistry.unregister(evrec)) return evrec def test_generic(plugintester): @@ -65,10 +65,10 @@ class TmpTestdir: def __repr__(self): return "" % (self.tmpdir,) - def Config(self, pyplugins=None, topdir=None): + def Config(self, comregistry=None, topdir=None): if topdir is None: topdir = self.tmpdir.dirpath() - return pytestConfig(pyplugins, topdir=topdir) + return pytestConfig(comregistry, topdir=topdir) def finalize(self): for p in self._syspathremove: @@ -132,7 +132,7 @@ class TmpTestdir: #config = self.parseconfig(*args) config = self.parseconfig(*args) session = config.initsession() - rec = self.geteventrecorder(config.bus) + rec = self.geteventrecorder(config.pluginmanager) colitems = [config.getfsnode(arg) for arg in config.args] items = list(session.genitems(colitems)) return items, rec @@ -152,20 +152,20 @@ class TmpTestdir: def inline_run(self, *args): config = self.parseconfig(*args) - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) session = config.initsession() - sorter = self.geteventrecorder(config.bus) + sorter = self.geteventrecorder(config.pluginmanager) session.main() - config.pytestplugins.do_unconfigure(config) + config.pluginmanager.do_unconfigure(config) return sorter def config_preparse(self): config = self.Config() for plugin in self.plugins: if isinstance(plugin, str): - config.pytestplugins.import_plugin(plugin) + config.pluginmanager.import_plugin(plugin) else: - config.pytestplugins.register(plugin) + config.pluginmanager.register(plugin) return config def parseconfig(self, *args): @@ -178,7 +178,7 @@ class TmpTestdir: def parseconfigure(self, *args): config = self.parseconfig(*args) - config.pytestplugins.do_configure(config) + config.pluginmanager.do_configure(config) return config def getitem(self, source, funcname="test_func"): @@ -279,10 +279,10 @@ class ParsedCall: return "" %(self.__dict__,) class EventRecorder(object): - def __init__(self, pyplugins, debug=False): # True): - self.pyplugins = pyplugins + def __init__(self, comregistry, debug=False): # True): + self.comregistry = comregistry self.debug = debug - pyplugins.register(self) + comregistry.register(self) def getcall(self, name): l = self.getcalls(name) @@ -360,11 +360,11 @@ class EventRecorder(object): self.callrecorder.calls[:] = [] def unregister(self): - self.pyplugins.unregister(self) + self.comregistry.unregister(self) self.callrecorder.finalize() def test_eventrecorder(testdir): - bus = py._com.PyPlugins() + bus = py._com.Registry() recorder = testdir.geteventrecorder(bus) assert not recorder.getfailures() rep = runner.ItemTestReport(None, None) diff --git a/py/test/plugin/pytest_resultdb.py b/py/test/plugin/pytest_resultdb.py index 0e90200bc..84f8b4ee0 100644 --- a/py/test/plugin/pytest_resultdb.py +++ b/py/test/plugin/pytest_resultdb.py @@ -41,12 +41,12 @@ class ResultdbPlugin: raise config.Error('Unknown --resultdb_format: %s' % config.option.resultdbformat) - config.bus.register(self.resultdb) + config.pluginmanager.register(self.resultdb) def pytest_unconfigure(self, config): if hasattr(self, 'resultdb'): del self.resultdb - #config.bus.unregister(self.resultdb) + #config.pluginmanager.unregister(self.resultdb) class JSONResultArchive(object): diff --git a/py/test/plugin/pytest_resultlog.py b/py/test/plugin/pytest_resultlog.py index 8c22d3b82..09e3cd74d 100644 --- a/py/test/plugin/pytest_resultlog.py +++ b/py/test/plugin/pytest_resultlog.py @@ -14,13 +14,13 @@ class ResultlogPlugin: if resultlog: logfile = open(resultlog, 'w', 1) # line buffered self.resultlog = ResultLog(logfile) - config.bus.register(self.resultlog) + config.pluginmanager.register(self.resultlog) def pytest_unconfigure(self, config): if hasattr(self, 'resultlog'): self.resultlog.logfile.close() del self.resultlog - #config.bus.unregister(self.resultlog) + #config.pluginmanager.unregister(self.resultlog) def generic_path(item): chain = item.listchain() diff --git a/py/test/plugin/pytest_runner.py b/py/test/plugin/pytest_runner.py index 749f143e1..850266df1 100644 --- a/py/test/plugin/pytest_runner.py +++ b/py/test/plugin/pytest_runner.py @@ -208,7 +208,7 @@ class TestRunnerPlugin: item = testdir.getitem("""def test_func(): pass""") plugin = RunnerPlugin() plugin.pytest_configure(item.config) - sorter = testdir.geteventrecorder(item.config.bus) + sorter = testdir.geteventrecorder(item.config.pluginmanager) plugin.pytest_item_setup_and_runtest(item) rep = sorter.getcall("pytest_itemtestreport").rep assert rep.passed diff --git a/py/test/plugin/pytest_terminal.py b/py/test/plugin/pytest_terminal.py index 4a8e5b64e..c2dc00694 100644 --- a/py/test/plugin/pytest_terminal.py +++ b/py/test/plugin/pytest_terminal.py @@ -15,7 +15,7 @@ class TerminalPlugin(object): name = attr.split("_")[-1] assert hasattr(self.reporter._tw, name), name setattr(self.reporter._tw, name, getattr(config, attr)) - config.bus.register(self.reporter) + config.pluginmanager.register(self.reporter) class TerminalReporter: def __init__(self, config, file=None): @@ -209,7 +209,7 @@ class TerminalReporter: py.path.local(py.__file__).dirpath(), rev)) if self.config.option.traceconfig: plugins = [] - for x in self.config.pytestplugins._plugins: + for x in self.config.pluginmanager.plugins: if isinstance(x, str) and x.startswith("pytest_"): plugins.append(x[7:]) else: @@ -368,7 +368,7 @@ class TestTerminal: assert 0 """) rep = TerminalReporter(modcol.config, file=linecomp.stringio) - rep.config.bus.register(rep) + rep.config.pluginmanager.register(rep) rep.config.api.pytest_testrunstart() for item in testdir.genitems([modcol]): @@ -395,7 +395,7 @@ class TestTerminal: assert 0 """, configargs=("-v",)) rep = TerminalReporter(modcol.config, file=linecomp.stringio) - rep.config.bus.register(rep) + rep.config.pluginmanager.register(rep) rep.config.api.pytest_testrunstart() items = modcol.collect() rep.config.option.debug = True # @@ -420,7 +420,7 @@ class TestTerminal: def test_collect_fail(self, testdir, linecomp): modcol = testdir.getmodulecol("import xyz") rep = TerminalReporter(modcol.config, file=linecomp.stringio) - rep.config.bus.register(rep) + rep.config.pluginmanager.register(rep) rep.config.api.pytest_testrunstart() l = list(testdir.genitems([modcol])) assert len(l) == 0 @@ -516,7 +516,7 @@ class TestTerminal: g() # --calling-- """, configargs=("--tb=%s" % tbopt,)) rep = TerminalReporter(modcol.config, file=linecomp.stringio) - rep.config.bus.register(rep) + rep.config.pluginmanager.register(rep) rep.config.api.pytest_testrunstart() for item in testdir.genitems([modcol]): rep.config.api.pytest_itemtestreport( @@ -543,7 +543,7 @@ class TestTerminal: pass """) rep = TerminalReporter(modcol.config, file=linecomp.stringio) - modcol.config.bus.register(rep) + modcol.config.pluginmanager.register(rep) l = list(testdir.genitems([modcol])) assert len(l) == 1 modcol.config.option.debug = True @@ -563,8 +563,8 @@ class TestTerminal: """, configargs=("-v",)*verbose) #""", configargs=("--showskipsummary",) + ("-v",)*verbose) rep = TerminalReporter(modcol.config, file=linecomp.stringio) - modcol.config.bus.register(rep) - bus = modcol.config.bus + modcol.config.pluginmanager.register(rep) + bus = modcol.config.pluginmanager modcol.config.api.pytest_testrunstart() try: for item in testdir.genitems([modcol]): @@ -625,7 +625,7 @@ class TestCollectonly: pass """) rep = CollectonlyReporter(modcol.config, out=linecomp.stringio) - modcol.config.bus.register(rep) + modcol.config.pluginmanager.register(rep) indent = rep.indent rep.config.api.pytest_collectstart(collector=modcol) linecomp.assert_contains_lines([ @@ -646,7 +646,7 @@ class TestCollectonly: py.test.skip("nomod") """) rep = CollectonlyReporter(modcol.config, out=linecomp.stringio) - modcol.config.bus.register(rep) + modcol.config.pluginmanager.register(rep) cols = list(testdir.genitems([modcol])) assert len(cols) == 0 linecomp.assert_contains_lines(""" @@ -659,7 +659,7 @@ class TestCollectonly: raise ValueError(0) """) rep = CollectonlyReporter(modcol.config, out=linecomp.stringio) - modcol.config.bus.register(rep) + modcol.config.pluginmanager.register(rep) cols = list(testdir.genitems([modcol])) assert len(cols) == 0 linecomp.assert_contains_lines(""" diff --git a/py/test/pycollect.py b/py/test/pycollect.py index 4da4be40a..b60fcc22c 100644 --- a/py/test/pycollect.py +++ b/py/test/pycollect.py @@ -167,7 +167,7 @@ class Module(py.test.collect.File, PyCollectorMixin): # we assume we are only called once per module mod = self.fspath.pyimport() #print "imported test module", mod - self.config.pytestplugins.consider_module(mod) + self.config.pluginmanager.consider_module(mod) return mod def setup(self): @@ -177,7 +177,7 @@ class Module(py.test.collect.File, PyCollectorMixin): #print "*" * 20, "INVOKE assertion", self py.magic.invoke(assertion=1) mod = self.obj - self.config.pytestplugins.register(mod) + self.config.pluginmanager.register(mod) if hasattr(mod, 'setup_module'): self.obj.setup_module(mod) @@ -187,7 +187,7 @@ class Module(py.test.collect.File, PyCollectorMixin): if not self.config.option.nomagic: #print "*" * 20, "revoke assertion", self py.magic.revoke(assertion=1) - self.config.pytestplugins.unregister(self.obj) + self.config.pluginmanager.unregister(self.obj) class Class(PyCollectorMixin, py.test.collect.Collector): @@ -376,8 +376,8 @@ class Function(FunctionMixin, py.test.collect.Item): def lookup_onearg(self, argname): prefix = "pytest_funcarg__" - #makerlist = self.config.pytestplugins.listattr(prefix + argname) - value = self.config.pytestplugins.call_firstresult(prefix + argname, pyfuncitem=self) + #makerlist = self.config.pluginmanager.listattr(prefix + argname) + value = self.config.pluginmanager.call_firstresult(prefix + argname, pyfuncitem=self) if value is not None: return value else: @@ -386,8 +386,8 @@ class Function(FunctionMixin, py.test.collect.Item): def _raisefuncargerror(self, argname, prefix="pytest_funcarg__"): metainfo = self.repr_metainfo() available = [] - plugins = self.config.pytestplugins._plugins.values() - plugins.extend(self.config.pytestplugins.pyplugins._plugins) + plugins = self.config.pluginmanager.plugins.values() + plugins.extend(self.config.pluginmanager.comregistry.plugins) for plugin in plugins: for name in vars(plugin.__class__): if name.startswith(prefix): diff --git a/py/test/pytestplugin.py b/py/test/pytestplugin.py index 4cac4b34d..f7e94fcc9 100644 --- a/py/test/pytestplugin.py +++ b/py/test/pytestplugin.py @@ -4,42 +4,42 @@ handling py.test plugins. import py from py.__.test.plugin import api -class PytestPlugins(object): - def __init__(self, pyplugins=None): - if pyplugins is None: - pyplugins = py._com.PyPlugins() - self.pyplugins = pyplugins - self.MultiCall = self.pyplugins.MultiCall - self._plugins = {} +class PluginManager(object): + def __init__(self, comregistry=None): + if comregistry is None: + comregistry = py._com.Registry() + self.comregistry = comregistry + self.MultiCall = self.comregistry.MultiCall + self.plugins = {} self.api = py._com.PluginAPI( apiclass=api.PluginHooks, - plugins=self.pyplugins) + plugins=self.comregistry) def register(self, plugin): - self.pyplugins.register(plugin) + self.comregistry.register(plugin) def unregister(self, plugin): - self.pyplugins.unregister(plugin) + self.comregistry.unregister(plugin) def isregistered(self, plugin): - return self.pyplugins.isregistered(plugin) + return self.comregistry.isregistered(plugin) def getplugins(self): - return self.pyplugins.getplugins() + return self.comregistry.getplugins() # API for bootstrapping # def getplugin(self, importname): impname, clsname = canonical_names(importname) - return self._plugins[impname] + return self.plugins[impname] def consider_env(self): - for spec in self.pyplugins._envlist("PYTEST_PLUGINS"): + for spec in self.comregistry._envlist("PYTEST_PLUGINS"): self.import_plugin(spec) def consider_conftest(self, conftestmodule): cls = getattr(conftestmodule, 'ConftestPlugin', None) - if cls is not None and cls not in self._plugins: - self._plugins[cls] = True + if cls is not None and cls not in self.plugins: + self.plugins[cls] = True self.register(cls()) self.consider_module(conftestmodule) @@ -54,11 +54,11 @@ class PytestPlugins(object): def import_plugin(self, spec): assert isinstance(spec, str) modname, clsname = canonical_names(spec) - if modname in self._plugins: + if modname in self.plugins: return mod = importplugin(modname) - plugin = registerplugin(self.pyplugins.register, mod, clsname) - self._plugins[modname] = plugin + plugin = registerplugin(self.comregistry.register, mod, clsname) + self.plugins[modname] = plugin self.consider_module(mod) # # @@ -66,18 +66,18 @@ class PytestPlugins(object): # # def getfirst(self, attrname): - for x in self.pyplugins.listattr(attrname): + for x in self.comregistry.listattr(attrname): return x def listattr(self, attrname): - return self.pyplugins.listattr(attrname) + return self.comregistry.listattr(attrname) def call_firstresult(self, *args, **kwargs): - return self.pyplugins.call_firstresult(*args, **kwargs) + return self.comregistry.call_firstresult(*args, **kwargs) def call_each(self, *args, **kwargs): #print "plugins.call_each", args[0], args[1:], kwargs - return self.pyplugins.call_each(*args, **kwargs) + return self.comregistry.call_each(*args, **kwargs) def notify_exception(self, excinfo=None): if excinfo is None: @@ -86,18 +86,18 @@ class PytestPlugins(object): return self.api.pytest_internalerror(excrepr=excrepr) def do_addoption(self, parser): - methods = self.pyplugins.listattr("pytest_addoption", reverse=True) + methods = self.comregistry.listattr("pytest_addoption", reverse=True) mc = py._com.MultiCall(methods, parser=parser) mc.execute() def pytest_plugin_registered(self, plugin): if hasattr(self, '_config'): - self.pyplugins.call_plugin(plugin, "pytest_addoption", parser=self._config._parser) - self.pyplugins.call_plugin(plugin, "pytest_configure", config=self._config) + self.comregistry.call_plugin(plugin, "pytest_addoption", parser=self._config._parser) + self.comregistry.call_plugin(plugin, "pytest_configure", config=self._config) def do_configure(self, config): assert not hasattr(self, '_config') - config.bus.register(self) + config.pluginmanager.register(self) self._config = config config.api.pytest_configure(config=self._config) @@ -105,10 +105,10 @@ class PytestPlugins(object): config = self._config del self._config config.api.pytest_unconfigure(config=config) - config.bus.unregister(self) + config.pluginmanager.unregister(self) def do_itemrun(self, item, pdb=None): - res = self.pyplugins.call_firstresult("pytest_itemrun", item=item, pdb=pdb) + res = self.comregistry.call_firstresult("pytest_itemrun", item=item, pdb=pdb) if res is None: raise ValueError("could not run %r" %(item,)) diff --git a/py/test/session.py b/py/test/session.py index 70057bb7d..490b73b20 100644 --- a/py/test/session.py +++ b/py/test/session.py @@ -20,8 +20,8 @@ class Session(object): """ def __init__(self, config): self.config = config - self.bus = config.bus # shortcut - self.bus.register(self) + self.pluginmanager = config.pluginmanager # shortcut + self.pluginmanager.register(self) self._testsfailed = False self._nomatch = False self.shouldstop = False @@ -33,7 +33,7 @@ class Session(object): if isinstance(next, (tuple, list)): colitems[:] = list(next) + colitems continue - assert self.bus is next.config.bus + assert self.pluginmanager is next.config.pluginmanager if isinstance(next, Item): remaining = self.filteritems([next]) if remaining: @@ -120,7 +120,7 @@ class Session(object): exitstatus = outcome.EXIT_INTERRUPTED except: captured_excinfo = py.code.ExceptionInfo() - self.config.pytestplugins.notify_exception(captured_excinfo) + self.config.pluginmanager.notify_exception(captured_excinfo) exitstatus = outcome.EXIT_INTERNALERROR if exitstatus == 0 and self._testsfailed: exitstatus = outcome.EXIT_TESTSFAILED @@ -133,4 +133,4 @@ class Session(object): def runtest(self, item): pdb = self.config.option.usepdb and self.runpdb or None - item.config.pytestplugins.do_itemrun(item, pdb=pdb) + item.config.pluginmanager.do_itemrun(item, pdb=pdb) diff --git a/py/test/testing/test_collect.py b/py/test/testing/test_collect.py index f8d6529dc..954207ed4 100644 --- a/py/test/testing/test_collect.py +++ b/py/test/testing/test_collect.py @@ -67,7 +67,7 @@ class TestCollector: def test_listnames_and__getitembynames(self, testdir): modcol = testdir.getmodulecol("pass", withinit=True) - print modcol.config.pytestplugins.getplugins() + print modcol.config.pluginmanager.getplugins() names = modcol.listnames() print names dircol = modcol.config.getfsnode(modcol.config.topdir) @@ -145,7 +145,7 @@ class TestCollectPluginHooks: def pytest_collect_file(self, path, parent): wascalled.append(path) config = testdir.Config() - config.pytestplugins.register(Plugin()) + config.pluginmanager.register(Plugin()) config.parse([tmpdir]) col = config.getfsnode(tmpdir) testdir.makefile(".abc", "xyz") diff --git a/py/test/testing/test_config.py b/py/test/testing/test_config.py index be014fc6c..7f60dc961 100644 --- a/py/test/testing/test_config.py +++ b/py/test/testing/test_config.py @@ -318,7 +318,7 @@ def test_options_on_small_file_do_not_blow_up(testdir): runfiletest(opts + [path]) def test_default_bus(): - assert py.test.config.bus is py._com.pyplugins + assert py.test.config.pluginmanager.comregistry is py._com.comregistry @py.test.mark.todo("test for deprecation") def test_ensuretemp(): diff --git a/py/test/testing/test_pickling.py b/py/test/testing/test_pickling.py index 25089c603..fed4aa8cb 100644 --- a/py/test/testing/test_pickling.py +++ b/py/test/testing/test_pickling.py @@ -4,22 +4,22 @@ def pytest_funcarg__pickletransport(pyfuncitem): return ImmutablePickleTransport() def pytest_pyfunc_call(__call__, pyfuncitem, args, kwargs): - # for each function call we patch py._com.pyplugins + # for each function call we patch py._com.comregistry # so that the unpickling of config objects # (which bind to this mechanism) doesn't do harm # usually config objects are no meant to be unpickled in # the same system oldconfig = py.test.config - oldcom = py._com.pyplugins + oldcom = py._com.comregistry print "setting py.test.config to None" py.test.config = None - py._com.pyplugins = py._com.PyPlugins() + py._com.comregistry = py._com.Registry() try: return __call__.execute(firstresult=True) finally: print "setting py.test.config to", oldconfig py.test.config = oldconfig - py._com.pyplugins = oldcom + py._com.comregistry = oldcom class ImmutablePickleTransport: def __init__(self): @@ -195,13 +195,10 @@ def test_config__setstate__wired_correctly_in_childprocess(testdir): from py.__.test.dist.mypickle import PickleChannel channel = PickleChannel(channel) config = channel.receive() - assert py.test.config.pytestplugins.pyplugins == py._com.pyplugins, "pyplugins wrong" - assert py.test.config.bus == py._com.pyplugins, "bus wrong" + assert py.test.config.pluginmanager.comregistry == py._com.comregistry, "comregistry wrong" """) channel = PickleChannel(channel) config = testdir.parseconfig() channel.send(config) - channel.waitclose() # this will raise + channel.waitclose() # this will potentially raise gw.exit() - - diff --git a/py/test/testing/test_pycollect.py b/py/test/testing/test_pycollect.py index 74b03ab4e..b2fb2f8fa 100644 --- a/py/test/testing/test_pycollect.py +++ b/py/test/testing/test_pycollect.py @@ -37,11 +37,11 @@ class TestModule: def test_module_participates_as_plugin(self, testdir): modcol = testdir.getmodulecol("") modcol.setup() - assert modcol.config.pytestplugins.isregistered(modcol.obj) + assert modcol.config.pluginmanager.isregistered(modcol.obj) modcol.teardown() - assert not modcol.config.pytestplugins.isregistered(modcol.obj) + assert not modcol.config.pluginmanager.isregistered(modcol.obj) - def test_module_considers_pytestplugins_at_import(self, testdir): + def test_module_considers_pluginmanager_at_import(self, testdir): modcol = testdir.getmodulecol("pytest_plugins='xasdlkj',") py.test.raises(ImportError, "modcol.obj") @@ -259,7 +259,7 @@ class TestFunction: class Provider: def pytest_funcarg__some(self, pyfuncitem): return pyfuncitem.name - item.config.pytestplugins.register(Provider()) + item.config.pluginmanager.register(Provider()) item.setupargs() assert len(item.funcargs) == 1 @@ -268,7 +268,7 @@ class TestFunction: class Provider: def pytest_funcarg__other(self, pyfuncitem): return pyfuncitem.name - item.config.pytestplugins.register(Provider()) + item.config.pluginmanager.register(Provider()) item.setupargs() assert len(item.funcargs) == 1 name, value = item.funcargs.popitem() @@ -282,7 +282,7 @@ class TestFunction: return pyfuncitem.name def pytest_funcarg__other(self, pyfuncitem): return 42 - item.config.pytestplugins.register(Provider()) + item.config.pluginmanager.register(Provider()) item.setupargs() assert len(item.funcargs) == 2 assert item.funcargs['some'] == "test_func" @@ -295,7 +295,7 @@ class TestFunction: def pytest_funcarg__some(self, pyfuncitem): pyfuncitem.addfinalizer(lambda: l.append(42)) return 3 - item.config.pytestplugins.register(Provider()) + item.config.pluginmanager.register(Provider()) item.setupargs() assert len(item.funcargs) == 1 assert item.funcargs['some'] == 3 @@ -317,13 +317,13 @@ class TestFunction: """) item1, item2 = testdir.genitems([modcol]) modcol.setup() - assert modcol.config.pytestplugins.isregistered(modcol.obj) + assert modcol.config.pluginmanager.isregistered(modcol.obj) item1.setupargs() assert item1.funcargs['something'] == "test_method" item2.setupargs() assert item2.funcargs['something'] == "test_func" modcol.teardown() - assert not modcol.config.pytestplugins.isregistered(modcol.obj) + assert not modcol.config.pluginmanager.isregistered(modcol.obj) class TestSorting: def test_check_equality_and_cmp_basic(self, testdir): diff --git a/py/test/testing/test_pytestplugin.py b/py/test/testing/test_pytestplugin.py index 1b816372c..8570e9cda 100644 --- a/py/test/testing/test_pytestplugin.py +++ b/py/test/testing/test_pytestplugin.py @@ -1,15 +1,15 @@ import py, os -from py.__.test.pytestplugin import PytestPlugins, canonical_names +from py.__.test.pytestplugin import PluginManager, canonical_names from py.__.test.pytestplugin import registerplugin, importplugin class TestBootstrapping: def test_consider_env_fails_to_import(self, monkeypatch): - plugins = PytestPlugins() + plugins = PluginManager() monkeypatch.setitem(os.environ, 'PYTEST_PLUGINS', 'nonexistingmodule') py.test.raises(ImportError, "plugins.consider_env()") def test_consider_env_plugin_instantiation(self, testdir, monkeypatch): - plugins = PytestPlugins() + plugins = PluginManager() testdir.syspathinsert() testdir.makepyfile(pytest_xy123="class Xy123Plugin: pass") monkeypatch.setitem(os.environ, 'PYTEST_PLUGINS', 'xy123') @@ -27,7 +27,7 @@ class TestBootstrapping: p = testdir.makepyfile(""" import py def test_hello(): - plugin = py.test.config.pytestplugins.getplugin('x500') + plugin = py.test.config.pluginmanager.getplugin('x500') assert plugin is not None """) new = str(x500.dirpath()) # "%s:%s" %(x500.dirpath(), os.environ.get('PYTHONPATH', '')) @@ -38,7 +38,7 @@ class TestBootstrapping: extra = result.stdout.fnmatch_lines(["*1 passed in*"]) def test_import_plugin_importname(self, testdir): - plugins = PytestPlugins() + plugins = PluginManager() py.test.raises(ImportError, 'plugins.import_plugin("x.y")') py.test.raises(ImportError, 'plugins.import_plugin("pytest_x.y")') @@ -59,7 +59,7 @@ class TestBootstrapping: assert plugin2 is plugin1 def test_consider_module(self, testdir): - plugins = PytestPlugins() + plugins = PluginManager() testdir.syspathinsert() testdir.makepyfile(pytest_plug1="class Plug1Plugin: pass") testdir.makepyfile(pytest_plug2="class Plug2Plugin: pass") @@ -73,7 +73,7 @@ class TestBootstrapping: mod = py.std.new.module("x") mod.pytest_plugins = "pytest_a" aplugin = testdir.makepyfile(pytest_a="""class APlugin: pass""") - plugins = PytestPlugins() + plugins = PluginManager() sorter = testdir.geteventrecorder(plugins) #syspath.prepend(aplugin.dirpath()) py.std.sys.path.insert(0, str(aplugin.dirpath())) @@ -87,7 +87,7 @@ class TestBootstrapping: assert len(l) == 1 def test_consider_conftest(self, testdir): - pp = PytestPlugins() + pp = PluginManager() mod = testdir.makepyfile("class ConftestPlugin: hello = 1").pyimport() pp.consider_conftest(mod) l = [x for x in pp.getplugins() if isinstance(x, mod.ConftestPlugin)] @@ -104,11 +104,11 @@ class TestBootstrapping: def test_consider_conftest_deps(self, testdir): mod = testdir.makepyfile("pytest_plugins='xyz'").pyimport() - pp = PytestPlugins() + pp = PluginManager() py.test.raises(ImportError, "pp.consider_conftest(mod)") def test_registry(self): - pp = PytestPlugins() + pp = PluginManager() a1, a2 = object(), object() pp.register(a1) assert pp.isregistered(a1) @@ -150,7 +150,7 @@ class TestPytestPluginInteractions: """) config = Config() config._conftest.importconftest(p) - print config.pytestplugins.getplugins() + print config.pluginmanager.getplugins() config.parse([]) assert not config.option.test123 @@ -158,7 +158,7 @@ class TestPytestPluginInteractions: from py.__.test.config import Config config = Config() config.parse([]) - config.pytestplugins.do_configure(config=config) + config.pluginmanager.do_configure(config=config) assert not hasattr(config.option, 'test123') p = testdir.makepyfile(""" class ConftestPlugin: @@ -179,30 +179,30 @@ class TestPytestPluginInteractions: def xyz(self, obj): events.append(obj) - config.bus.register(A()) + config.pluginmanager.register(A()) assert len(l) == 0 - config.pytestplugins.do_configure(config=config) + config.pluginmanager.do_configure(config=config) assert len(l) == 1 - config.bus.register(A()) # this should lead to a configured() plugin + config.pluginmanager.register(A()) # this should lead to a configured() plugin assert len(l) == 2 assert l[0] != l[1] - config.bus.call_each("xyz", obj=42) + config.pluginmanager.call_each("xyz", obj=42) assert len(events) == 2 assert events == [42,42] - config.pytestplugins.do_unconfigure(config=config) - config.bus.register(A()) + config.pluginmanager.do_unconfigure(config=config) + config.pluginmanager.register(A()) assert len(l) == 2 def test_MultiCall(self): - pp = PytestPlugins() + pp = PluginManager() assert hasattr(pp, 'MultiCall') # lower level API def test_getfirst(self): - plugins = PytestPlugins() + plugins = PluginManager() class My1: x = 1 assert plugins.getfirst("x") is None @@ -210,7 +210,7 @@ class TestPytestPluginInteractions: assert plugins.getfirst("x") == 1 def test_call_each(self): - plugins = PytestPlugins() + plugins = PluginManager() class My: def method(self, arg): pass @@ -221,7 +221,7 @@ class TestPytestPluginInteractions: py.test.raises(TypeError, 'plugins.call_each("method", arg=42, s=13)') def test_call_firstresult(self): - plugins = PytestPlugins() + plugins = PluginManager() class My1: def method(self): pass @@ -241,7 +241,7 @@ class TestPytestPluginInteractions: assert plugins.call_firstresult("method") == True def test_listattr(self): - plugins = PytestPlugins() + plugins = PluginManager() class My2: x = 42 plugins.register(My2()) @@ -267,7 +267,7 @@ class TestPytestPluginInteractions: return x+0 """) l = [] - call = modcol.config.pytestplugins.setupcall(modcol, "pytest_method", 1) + call = modcol.config.pluginmanager.setupcall(modcol, "pytest_method", 1) assert len(call.methods) == 3 results = call.execute() assert results == [1,2,2]