[Pytest-commit] commit/tox: 5 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon May 11 12:09:02 CEST 2015
5 new commits in tox:
https://bitbucket.org/hpk42/tox/commits/74ab147d9778/
Changeset: 74ab147d9778
Branch: abort_by_default_when_a_command_fails
User: msabramo
Date: 2015-05-01 22:29:07+00:00
Summary: Abort command execution when a command fails by default
It's pretty meaningless to keep executing commands when one command fails. So
let's make it abort by default if any command returns a non-zero exit code.
E.g.:
$ tox
py27 runtests: PYTHONHASHSEED='2154811636'
py27 runtests: commands[0] | echo 1
1
py27 runtests: commands[1] | false
ERROR: InvocationError: '/usr/bin/false'
ERROR: Stopping processing of commands for env py27 because `/usr/bin/false` failed with exit code 1
_____________________________________________ summary ______________________________________________
ERROR: py27: commands failed
Unless the `ignore_errors` setting is set to `True`, in which case, it keeps
processing, like it did in older versions of tox.
Affected #: 3 files
diff -r 273d12589a2548f4a0603da9d82ade8a284d4196 -r 74ab147d9778f534c10c06cc60e58e07f0cd855b tox/_cmdline.py
--- a/tox/_cmdline.py
+++ b/tox/_cmdline.py
@@ -157,7 +157,7 @@
raise tox.exception.InvocationError(
"%s (see %s)" % (invoked, outpath), ret)
else:
- raise tox.exception.InvocationError("%r" % (invoked, ))
+ raise tox.exception.InvocationError("%r" % (invoked, ), ret)
if not out and outpath:
out = outpath.read()
if hasattr(self, "commandlog"):
diff -r 273d12589a2548f4a0603da9d82ade8a284d4196 -r 74ab147d9778f534c10c06cc60e58e07f0cd855b tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -442,6 +442,7 @@
section, "pip_pre", False)
vc.skip_install = reader.getbool(section, "skip_install", False)
+ vc.ignore_errors = reader.getbool(section, "ignore_errors", False)
return vc
diff -r 273d12589a2548f4a0603da9d82ade8a284d4196 -r 74ab147d9778f534c10c06cc60e58e07f0cd855b tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -361,6 +361,14 @@
val = sys.exc_info()[1]
self.session.report.error(str(val))
self.status = "commands failed"
+ if not self.envconfig.ignore_errors:
+ self.session.report.error(
+ 'Stopping processing of commands for env %s '
+ 'because `%s` failed with exit code %s'
+ % (self.name,
+ ' '.join([str(x) for x in argv]),
+ val.args[1]))
+ break # Don't process remaining commands
except KeyboardInterrupt:
self.status = "keyboardinterrupt"
self.session.report.error(self.status)
https://bitbucket.org/hpk42/tox/commits/38485f31e6a6/
Changeset: 38485f31e6a6
Branch: abort_by_default_when_a_command_fails
User: msabramo
Date: 2015-05-05 15:33:13+00:00
Summary: test_config: Add some tests for new ignore_errors setting
Affected #: 1 file
diff -r 74ab147d9778f534c10c06cc60e58e07f0cd855b -r 38485f31e6a6a413fc9332274d4eafc68e1fa400 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -587,6 +587,7 @@
assert envconfig.changedir == config.setupdir
assert envconfig.sitepackages is False
assert envconfig.develop is False
+ assert envconfig.ignore_errors is False
assert envconfig.envlogdir == envconfig.envdir.join("log")
assert list(envconfig.setenv.keys()) == ['PYTHONHASHSEED']
hashseed = envconfig.setenv['PYTHONHASHSEED']
@@ -647,6 +648,15 @@
assert envconfig.changedir.basename == "xyz"
assert envconfig.changedir == config.toxinidir.join("xyz")
+ def test_ignore_errors(self, tmpdir, newconfig):
+ config = newconfig("""
+ [testenv]
+ ignore_errors=True
+ """)
+ assert len(config.envconfigs) == 1
+ envconfig = config.envconfigs['python']
+ assert envconfig.ignore_errors is True
+
def test_envbindir(self, tmpdir, newconfig):
config = newconfig("""
[testenv]
https://bitbucket.org/hpk42/tox/commits/7009b80c4bf6/
Changeset: 7009b80c4bf6
Branch: abort_by_default_when_a_command_fails
User: msabramo
Date: 2015-05-05 16:02:27+00:00
Summary: doc/config.txt: Document new ignore_errors setting
Affected #: 1 file
diff -r 38485f31e6a6a413fc9332274d4eafc68e1fa400 -r 7009b80c4bf62e44866cc484be110c56a1b13b83 doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -110,6 +110,26 @@
pip install {opts} {packages}
+.. confval:: ignore_errors=True|False(default)
+
+ .. versionadded:: 2.0
+
+ If ``True``, a non-zero exit code from one command will be ignored and
+ further commands will be executed (which was the default behavior in tox <
+ 2.0). If ``False`` (the default), then a non-zero exit code from one command
+ will abort execution of commands for that environment.
+
+ It may be helpful to note that this setting is analogous to the ``-i`` or
+ ``ignore-errors`` option of GNU Make. A similar name was chosen to reflect the
+ similarity in function.
+
+ Note that in tox 2.0, the default behavior of tox with respect to
+ treating errors from commands changed. Tox < 2.0 would ignore errors by
+ default. Tox >= 2.0 will abort on an error by default, which is safer and more
+ typical of CI and command execution tools, as it doesn't make sense to
+ run tests if installing some prerequisite failed and it doesn't make sense to
+ try to deploy if tests failed.
+
.. confval:: pip_pre=True|False(default)
.. versionadded:: 1.9
https://bitbucket.org/hpk42/tox/commits/376a0d33dc01/
Changeset: 376a0d33dc01
Branch: abort_by_default_when_a_command_fails
User: msabramo
Date: 2015-05-05 16:02:51+00:00
Summary: CHANGELOG: Document new "ignore_errors" setting
Affected #: 1 file
diff -r 7009b80c4bf62e44866cc484be110c56a1b13b83 -r 376a0d33dc016fdcf0ab12d94414b3a94369b0b3 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -17,6 +17,12 @@
If platform is set and doesn't match the platform spec in the test
environment the test environment is ignored, no setup or tests are attempted.
+.. (new) add per-venv "ignore_errors" setting, which defaults to False.
+ If ``True``, a non-zero exit code from one command will be ignored and
+ further commands will be executed (which was the default behavior in tox <
+ 2.0). If ``False`` (the default), then a non-zero exit code from one command
+ will abort execution of commands for that environment.
+
- remove the long-deprecated "distribute" option as it has no effect these days.
- fix issue233: avoid hanging with tox-setuptools integration example. Thanks simonb.
https://bitbucket.org/hpk42/tox/commits/3d7925f2ef6c/
Changeset: 3d7925f2ef6c
User: hpk42
Date: 2015-05-11 10:08:59+00:00
Summary: Merged in msabramo/tox/abort_by_default_when_a_command_fails (pull request #151)
Abort command execution when a command fails by default
Affected #: 6 files
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -17,6 +17,12 @@
If platform is set and doesn't match the platform spec in the test
environment the test environment is ignored, no setup or tests are attempted.
+.. (new) add per-venv "ignore_errors" setting, which defaults to False.
+ If ``True``, a non-zero exit code from one command will be ignored and
+ further commands will be executed (which was the default behavior in tox <
+ 2.0). If ``False`` (the default), then a non-zero exit code from one command
+ will abort execution of commands for that environment.
+
- remove the long-deprecated "distribute" option as it has no effect these days.
- fix issue233: avoid hanging with tox-setuptools integration example. Thanks simonb.
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -110,6 +110,26 @@
pip install {opts} {packages}
+.. confval:: ignore_errors=True|False(default)
+
+ .. versionadded:: 2.0
+
+ If ``True``, a non-zero exit code from one command will be ignored and
+ further commands will be executed (which was the default behavior in tox <
+ 2.0). If ``False`` (the default), then a non-zero exit code from one command
+ will abort execution of commands for that environment.
+
+ It may be helpful to note that this setting is analogous to the ``-i`` or
+ ``ignore-errors`` option of GNU Make. A similar name was chosen to reflect the
+ similarity in function.
+
+ Note that in tox 2.0, the default behavior of tox with respect to
+ treating errors from commands changed. Tox < 2.0 would ignore errors by
+ default. Tox >= 2.0 will abort on an error by default, which is safer and more
+ typical of CI and command execution tools, as it doesn't make sense to
+ run tests if installing some prerequisite failed and it doesn't make sense to
+ try to deploy if tests failed.
+
.. confval:: pip_pre=True|False(default)
.. versionadded:: 1.9
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -587,6 +587,7 @@
assert envconfig.changedir == config.setupdir
assert envconfig.sitepackages is False
assert envconfig.develop is False
+ assert envconfig.ignore_errors is False
assert envconfig.envlogdir == envconfig.envdir.join("log")
assert list(envconfig.setenv.keys()) == ['PYTHONHASHSEED']
hashseed = envconfig.setenv['PYTHONHASHSEED']
@@ -647,6 +648,15 @@
assert envconfig.changedir.basename == "xyz"
assert envconfig.changedir == config.toxinidir.join("xyz")
+ def test_ignore_errors(self, tmpdir, newconfig):
+ config = newconfig("""
+ [testenv]
+ ignore_errors=True
+ """)
+ assert len(config.envconfigs) == 1
+ envconfig = config.envconfigs['python']
+ assert envconfig.ignore_errors is True
+
def test_envbindir(self, tmpdir, newconfig):
config = newconfig("""
[testenv]
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 tox/_cmdline.py
--- a/tox/_cmdline.py
+++ b/tox/_cmdline.py
@@ -157,7 +157,7 @@
raise tox.exception.InvocationError(
"%s (see %s)" % (invoked, outpath), ret)
else:
- raise tox.exception.InvocationError("%r" % (invoked, ))
+ raise tox.exception.InvocationError("%r" % (invoked, ), ret)
if not out and outpath:
out = outpath.read()
if hasattr(self, "commandlog"):
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -442,6 +442,7 @@
section, "pip_pre", False)
vc.skip_install = reader.getbool(section, "skip_install", False)
+ vc.ignore_errors = reader.getbool(section, "ignore_errors", False)
return vc
diff -r 850fb37c60625112b2bf5ad21373d2804be98336 -r 3d7925f2ef6c716de3bc3e84f649ce9b5f15b498 tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -361,6 +361,14 @@
val = sys.exc_info()[1]
self.session.report.error(str(val))
self.status = "commands failed"
+ if not self.envconfig.ignore_errors:
+ self.session.report.error(
+ 'Stopping processing of commands for env %s '
+ 'because `%s` failed with exit code %s'
+ % (self.name,
+ ' '.join([str(x) for x in argv]),
+ val.args[1]))
+ break # Don't process remaining commands
except KeyboardInterrupt:
self.status = "keyboardinterrupt"
self.session.report.error(self.status)
Repository URL: https://bitbucket.org/hpk42/tox/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the pytest-commit
mailing list