diff --git a/_pytest/main.py b/_pytest/main.py index de61807ad..d58b42b12 100644 --- a/_pytest/main.py +++ b/_pytest/main.py @@ -54,16 +54,14 @@ def pytest_configure(config): if config.option.exitfirst: config.option.maxfail = 1 -def pytest_cmdline_main(config): - """ default command line protocol for initialization, session, - running tests and reporting. """ +def wrap_session(config, doit): + """Skeleton command line program""" session = Session(config) session.exitstatus = EXIT_OK try: config.pluginmanager.do_configure(config) config.hook.pytest_sessionstart(session=session) - config.hook.pytest_collection(session=session) - config.hook.pytest_runtestloop(session=session) + doit(config, session) except pytest.UsageError: raise except KeyboardInterrupt: @@ -83,6 +81,15 @@ def pytest_cmdline_main(config): config.pluginmanager.do_unconfigure(config) return session.exitstatus +def pytest_cmdline_main(config): + return wrap_session(config, _main) + +def _main(config, session): + """ default command line protocol for initialization, session, + running tests and reporting. """ + config.hook.pytest_collection(session=session) + config.hook.pytest_runtestloop(session=session) + def pytest_collection(session): session.perform_collect() hook = session.config.hook diff --git a/_pytest/python.py b/_pytest/python.py index 615e01a0c..9402d93d0 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -754,8 +754,10 @@ class FuncargRequest: raise self.LookupError(msg) def showfuncargs(config): - from _pytest.main import Session - session = Session(config) + from _pytest.main import wrap_session + return wrap_session(config, _showfuncargs_main) + +def _showfuncargs_main(config, session): session.perform_collect() if session.items: plugins = session.items[0].getplugins()