holger krekel
1c0582eaa7
simplify addition of method and scanning of plugins
...
--HG--
branch : more_plugin
2015-04-25 18:15:42 +02:00
holger krekel
1e883f5979
simplify tracing mechanics by simply going through an indirection
...
--HG--
branch : more_plugin
2015-04-25 18:15:39 +02:00
holger krekel
7364647f2f
fix issue732: make sure removed plugins remove all hook callers.
...
--HG--
branch : more_plugin
2015-04-25 18:14:39 +02:00
holger krekel
4e116ed503
make pytest_plugin_registered a historic hook
...
--HG--
branch : more_plugin
2015-04-25 13:38:30 +02:00
holger krekel
e7a2e53108
Streamline data structures
...
--HG--
branch : more_plugin
2015-04-25 13:38:29 +02:00
holger krekel
2f8a1aed6e
properly perform hook calls with extra methods
...
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
a63585dcab
introduce historic hook spec which will memorize calls to a hook
...
in order to call them on later registered plugins
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
d2a5c7f99b
add documented hookimpl_opts and hookspec_opts decorators
...
so that one doesn't have to use pytest.mark or function-attribute setting anymore
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
bbbb6dc2e3
remove _do_register indirection between PluginManager and PytestPluginManager
...
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
f41528433b
also incrementally remove plugins from hook callers
...
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
02a4042dca
incrementally update hook call lists instead of regenerating the whole
...
list on each registered plugin
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
b03c1342ac
allow to register plugins with hooks that are only added later
...
--HG--
branch : more_plugin
2015-04-25 11:29:11 +02:00
holger krekel
9020bf48b7
remove useless check
...
--HG--
branch : plugin_no_pytest
2015-04-24 14:09:57 +02:00
holger krekel
237ac8562f
minimize HookCaller attributes: avoid passing in hookrelay to HookCallers
...
--HG--
branch : plugin_no_pytest
2015-04-24 13:02:49 +02:00
holger krekel
27589eb7e1
reshuffle pluginmanager methods and add some docstrings.
...
--HG--
branch : plugin_no_pytest
2015-04-22 16:42:41 +02:00
holger krekel
715a235b45
remove shutdown logic from PluginManager and add a add_cleanup() API
...
for the already existing cleanup logic of the config object.
This simplifies lifecycle management as we don't keep two
layers of shutdown functions and also simplifies the pluginmanager
interface.
also add some docstrings.
--HG--
branch : plugin_no_pytest
2015-04-22 16:33:20 +02:00
holger krekel
f746c190ac
slight cleanup of plugin register() functionality
...
--HG--
branch : plugin_no_pytest
2015-04-22 14:54:28 +02:00
holger krekel
c08dfdc330
move bookkeeping of conftest plugins in core pluginmanager to PytestPluginManager
...
--HG--
branch : plugin_no_pytest
2015-04-22 13:33:01 +02:00
holger krekel
7049ebe4e2
avoid prepend to register api as it's redundant wrt to hooks
...
--HG--
branch : plugin_no_pytest
2015-04-22 13:31:46 +02:00
holger krekel
1ef49ac5ab
minimize HookRelay to become a pure container, refactor initialization and
...
tests of plugin management to be a bit better split between pytest
and pytest-independent bits
--HG--
branch : plugin_no_pytest
2015-04-22 13:31:46 +02:00
holger krekel
db650de372
remove redundant py check as our setup.py excludes py <=1.4 already
...
--HG--
branch : plugin_no_pytest
2015-04-22 10:04:13 +02:00
holger krekel
e04273df57
fixed regression to 2.6.4 which surfaced e.g. in lost stdout capture printing
...
when tests raised SystemExit.
--HG--
branch : systemexit
2015-04-17 11:47:29 +02:00
holger krekel
34df678bc3
some docs and refined semantics for wrappers
2014-10-09 12:21:01 +02:00
holger krekel
eda39f361d
re-scan methods during plugin register and unregister and not
...
during hook calling anymore. Simplify register/getplugin api of PluginManager
2014-10-09 10:47:32 +02:00
holger krekel
d9858844c3
improve docstring, remove unused custom Exception
2014-10-09 09:55:46 +02:00
holger krekel
0253f7b8d5
remove all occurences of "__multicall__" on hook impls in pytest/*.
...
also simplify pytest_runtest_markereport hook in _pytest/skipping.py
while touching the code anyway.
2014-10-08 20:23:40 +02:00
holger krekel
f5f924d293
- refactor wrapped call support to also accomodate
...
pytest.mark.hookwrapper
- introduce a CallOutcome class to hold the result/excinfo status of
calling a function.
- rename add_method_controller to add_method_wrapper
2014-10-08 11:27:14 +02:00
holger krekel
a43fb9cd93
fix add_method_controller to deal properly in the event of exceptions.
...
add a docstring as well.
2014-10-07 16:16:47 +02:00
holger krekel
8cfec56a82
simplify internal pytester machinery
2014-10-06 13:37:57 +02:00
holger krekel
63f070317c
simplify method to record calls
2014-10-04 15:49:31 +02:00
holger krekel
3d794b6b38
factor out a small "wrapping" helper
2014-10-04 15:49:31 +02:00
holger krekel
2161b54555
remove overhead for tracing of hook calls and remove some old unused code
2014-10-02 15:25:42 +02:00
holger krekel
de83d35994
optimize argument slicing when calling plugin hooks
2014-10-01 14:55:54 +02:00
holger krekel
e635f9f9b2
simplify _scan_plugin implementation and store argnames on HookCaller
2014-10-01 13:57:35 +02:00
holger krekel
351931d5ca
call scanning of plugins directly, code is shifted from helpconfig.py to core.py
2014-10-01 12:20:11 +02:00
holger krekel
3de715ec13
refine internal management of plugins and conftest files
2014-10-01 12:19:11 +02:00
Bruno Oliveira
5603a0cd4b
Removing py.std usage from _pytest
2014-07-31 19:13:40 -03:00
holger krekel
e19462d581
fix ordering of import line of last commit
2014-07-03 13:20:51 +02:00
holger krekel
a811fabb43
avoid importing "py.test" (an old alias module for "pytest")
2014-07-03 12:58:12 +02:00
holger krekel
f43cda9681
implement a new hook type: hook wrappers using a "yield" to distinguish
...
between working at the front and at the end of a hook call chain.
The idea is to make it easier for a plugin to "wrap" a certain hook
call and use context managers, in particular allow a major cleanup of
capturing.
2014-03-14 12:49:35 +01:00
holger krekel
ebd10aa6b4
shrink and merge the somewhat obscure and undocumented internal hinting
...
system with the new warnings one
2014-03-11 22:10:51 +01:00
holger krekel
1ffc006363
fixed circular imports by reverting a few py.test -> pytest substitions.
2014-01-22 11:17:25 +01:00
Jurko Gospodnetić
9fb2079458
replace py.test module references with pytest
...
The only remaining 'py.test' references are:
* those referring to the 'py.test' executable
* those in code explicitly testing py.test/pytest module compatibility
* those in old CHANGES documentation
* those in documentation generated based on external data
* those in seemingly unfinished & unmaintained Japanese documentation
Minor stylistic changes and typo corrections made to documentation next to
several applied py.test --> pytest content changes.
2014-01-18 12:31:33 +01:00
holger krekel
9b21d3f206
internally make varnames() deal with classes's __init__,
...
although it's not needed by pytest itself atm. Also
fix caching. Fixes issue376.
2013-11-19 15:33:52 +01:00
holger krekel
dde0a81677
don't hide an ImportError when importing a plugin produces one.
...
fixes issue375.
2013-11-19 14:45:51 +01:00
holger krekel
19a76337a4
add pluginmanager.do_configure(config) as a link to
...
config.do_configure() for plugin-compatibility
add some more plugins to plugin-test.sh
2013-10-04 11:36:45 +02:00
holger krekel
05f6422392
remove unused imports (using "importchecker" project)
2013-10-02 14:32:40 +02:00
holger krekel
4b709037ab
some more separation of core pluginmanager from pytest specific functionality.
...
Idea is to have the PluginManager be re-useable from other projects at some point.
2013-09-30 13:14:14 +02:00
holger krekel
d946299b0a
shift pytest_configure/unconfigure/addoption/namespace hook calling to config object.
...
The _pytest.config module itself is no longer a plugin but the actual
config instance is plugin-registered as ``pytestconfig``.
This allows to put most pytest specific logic to _pytest.config instead
of in the core pluginmanager.
2013-09-30 13:14:14 +02:00
holger krekel
a930f44e60
introduce pluginmanager.ensure_teardown() which allows
2013-09-28 22:23:00 +02:00