diff options
author | Bernát Gábor <gaborjbernat@gmail.com> | 2019-03-29 13:03:58 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-29 13:03:58 +0000 |
commit | 3f81152225110e6aa00f5592cc463f6b1351edaf (patch) | |
tree | 1013a67efb9ed4f194b0e2396e153df3d1357b7b | |
parent | 47476e13e55c3ae8994574d6898fd58a0792dd75 (diff) | |
download | tox-git-3f81152225110e6aa00f5592cc463f6b1351edaf.tar.gz |
#1228 do not print traceback on provisioned tox command fail (#1230)
👍
-rw-r--r-- | docs/changelog/1228.bugfix.rst | 1 | ||||
-rw-r--r-- | src/tox/_pytestplugin.py | 11 | ||||
-rw-r--r-- | src/tox/session/__init__.py | 10 | ||||
-rw-r--r-- | src/tox/session/commands/provision.py | 8 | ||||
-rw-r--r-- | tests/integration/test_provision_int.py | 11 |
5 files changed, 28 insertions, 13 deletions
diff --git a/docs/changelog/1228.bugfix.rst b/docs/changelog/1228.bugfix.rst new file mode 100644 index 00000000..cdd5e7c8 --- /dev/null +++ b/docs/changelog/1228.bugfix.rst @@ -0,0 +1 @@ +Do not print exception traceback when the provisioned tox fails - by :user:`gaborbernat` diff --git a/src/tox/_pytestplugin.py b/src/tox/_pytestplugin.py index cca7f991..14d166bd 100644 --- a/src/tox/_pytestplugin.py +++ b/src/tox/_pytestplugin.py @@ -5,6 +5,7 @@ import subprocess import sys import textwrap import time +import traceback from collections import OrderedDict from fnmatch import fnmatch @@ -120,18 +121,18 @@ def cmd(request, monkeypatch, capfd): with RunResult(argv, capfd) as result: _collect_session(result) + # noinspection PyBroadException try: tox.session.main([str(x) for x in argv]) assert False # this should always exist with SystemExit except SystemExit as exception: result.ret = exception.code except OSError as e: + traceback.print_exc() result.ret = e.errno - except tox.exception.InvocationError as exception: - result.ret = exception.exit_code - if exception.out is not None: - with open(exception.out, "rt") as file_handler: - tox.reporter.verbosity0(file_handler.read()) + except Exception: + traceback.print_exc() + result.ret = 1 return result def _collect_session(result): diff --git a/src/tox/session/__init__.py b/src/tox/session/__init__.py index 5fdc300f..2a2079cb 100644 --- a/src/tox/session/__init__.py +++ b/src/tox/session/__init__.py @@ -65,10 +65,10 @@ def main(args): ensure_empty_dir(config.logdir) with set_os_env_var("TOX_WORK_DIR", config.toxworkdir): session = build_session(config) - retcode = session.runcommand() - if retcode is None: - retcode = 0 - raise SystemExit(retcode) + exit_code = session.runcommand() + if exit_code is None: + exit_code = 0 + raise SystemExit(exit_code) except tox.exception.BadRequirement: raise SystemExit(1) except KeyboardInterrupt: @@ -179,7 +179,7 @@ class Session(object): show_description = reporter.has_level(reporter.Verbosity.DEFAULT) if self.config.run_provision: provision_tox_venv = self.getvenv(self.config.provision_tox_env) - provision_tox(provision_tox_venv, self.config.args) + return provision_tox(provision_tox_venv, self.config.args) else: if self.config.option.showconfig: self.showconfig() diff --git a/src/tox/session/commands/provision.py b/src/tox/session/commands/provision.py index 7237a535..3f0ac619 100644 --- a/src/tox/session/commands/provision.py +++ b/src/tox/session/commands/provision.py @@ -1,12 +1,18 @@ """In case the tox environment is not correctly setup provision it and delegate execution""" from __future__ import absolute_import, unicode_literals +from tox.exception import InvocationError + def provision_tox(provision_venv, args): ensure_meta_env_up_to_date(provision_venv) with provision_venv.new_action("provision") as action: provision_args = [str(provision_venv.envconfig.envpython), "-m", "tox"] + args - action.popen(provision_args, redirect=False) + try: + action.popen(provision_args, redirect=False, report_fail=False) + return 0 + except InvocationError as exception: + return exception.exit_code def ensure_meta_env_up_to_date(provision_venv): diff --git a/tests/integration/test_provision_int.py b/tests/integration/test_provision_int.py index 2c8a75ea..22e76b4b 100644 --- a/tests/integration/test_provision_int.py +++ b/tests/integration/test_provision_int.py @@ -23,9 +23,16 @@ def test_provision_missing(initproj, cmd): """ }, ) - result = cmd("-q", "-q") + result = cmd("-e", "py") result.assert_fail() - meta_python = Path(result.out.strip()) + assert "tox.exception.InvocationError" not in result.output() + assert not result.err + assert ".tox create: " in result.out + assert ".tox installdeps: " in result.out + assert "py create: " in result.out + + at = next(at for at, l in enumerate(result.outlines) if l.startswith("py run-test: ")) + 1 + meta_python = Path(result.outlines[at]) assert meta_python.exists() |