diff options
-rw-r--r-- | CHANGELOG | 3 | ||||
-rw-r--r-- | tests/test_config.py | 17 | ||||
-rw-r--r-- | tox/config.py | 9 |
3 files changed, 27 insertions, 2 deletions
@@ -1,6 +1,9 @@ 2.4.0 ----- +- add --workdir option to override where tox stores its ".tox" directory + and all of the virtualenv environment. Thanks Danring. + - introduce per-venv list_dependencies_command which defaults to "python -m pip freeze" to obtain the list of installed packages. If you need to run python2.6 you need to configure it to diff --git a/tests/test_config.py b/tests/test_config.py index ffc8343..86eb9f1 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1865,6 +1865,23 @@ class TestCmdInvocation: "*ERROR*tox.ini*not*found*", ]) + def test_override_workdir(self, tmpdir, cmd, initproj): + baddir = "badworkdir-123" + gooddir = "overridden-234" + initproj("overrideworkdir-0.5", filedefs={ + 'tox.ini': ''' + [tox] + toxworkdir=%s + ''' % baddir, + }) + result = cmd.run("tox", "--workdir", gooddir, "--showconfig") + assert not result.ret + stdout = result.stdout.str() + assert gooddir in stdout + assert baddir not in stdout + assert py.path.local(gooddir).check() + assert not py.path.local(baddir).check() + def test_showconfig_with_force_dep_version(self, cmd, initproj): initproj('force_dep_version', filedefs={ 'tox.ini': ''' diff --git a/tox/config.py b/tox/config.py index 1fd702c..2d2a536 100644 --- a/tox/config.py +++ b/tox/config.py @@ -367,6 +367,9 @@ def tox_addoption(parser): help="override sitepackages setting to True in all envs") parser.add_argument("--skip-missing-interpreters", action="store_true", help="don't fail tests for missing interpreters") + parser.add_argument("--workdir", action="store", + dest="workdir", metavar="PATH", default=None, + help="tox working directory") parser.add_argument("args", nargs="*", help="additional arguments available to command positional substitution") @@ -675,7 +678,6 @@ class parseini: # As older versions of tox may have bugs or incompatabilities that # prevent parsing of tox.ini this must be the first thing checked. config.minversion = reader.getstring("minversion", None) - # Parse our compatability immediately if config.minversion: minversion = NormalizedVersion(self.config.minversion) toxversion = NormalizedVersion(tox.__version__) @@ -683,7 +685,10 @@ class parseini: raise tox.exception.MinVersionError( "tox version is %s, required is at least %s" % ( toxversion, minversion)) - config.toxworkdir = reader.getpath("toxworkdir", "{toxinidir}/.tox") + if config.option.workdir is None: + config.toxworkdir = reader.getpath("toxworkdir", "{toxinidir}/.tox") + else: + config.toxworkdir = config.toxinidir.join(config.option.workdir, abs=True) if not config.option.skip_missing_interpreters: config.option.skip_missing_interpreters = \ |