5 new commits in tox:
https://bitbucket.org/hpk42/tox/commits/92d5e08065fc/
Changeset: 92d5e08065fc
User: hpk42
Date: 2015-04-20 18:40:23+00:00
Summary: remove empty vendor directory
Affected #: 2 files
diff -r 45733e7d58f2617938fd2e9dd0c64860785b3974 -r
92d5e08065fc927d14ecb7e4c8081a219bce9cf5 setup.py
--- a/setup.py
+++ b/setup.py
@@ -31,7 +31,7 @@
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel',
author_email='[email protected]',
- packages=['tox', 'tox.vendor'],
+ packages=['tox'],
entry_points={'console_scripts':
'tox=tox:cmdline\ntox-quickstart=tox._quickstart:main'},
# we use a public tox version to test, see tox.ini's testenv
# "deps" definition for the required dependencies
diff -r 45733e7d58f2617938fd2e9dd0c64860785b3974 -r
92d5e08065fc927d14ecb7e4c8081a219bce9cf5 tox/vendor/__init__.py
--- a/tox/vendor/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-#
https://bitbucket.org/hpk42/tox/commits/1877e74ab9b8/
Changeset: 1877e74ab9b8
User: hpk42
Date: 2015-04-20 19:51:46+00:00
Summary: introduce new "platform" setting for tox
(XXX) consider using environment marker syntax
Affected #: 9 files
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,11 @@
-dev
+2.0.dev1
-----------
--
+- introduce a way to specify on which platform a testenvironment is to
+ execute: the new per-environment "platform" setting allows to specify
+ a regular expression which is matched against sys.platform.
+ If platform is set and doesn't match the test environment the
+ test environment is ignored, no setup or tests are attempted.
1.9.2
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -155,6 +155,12 @@
(Experimentally introduced in 1.6.1) all installer commands are executed
using the ``{toxinidir}`` as the current working directory.
+.. confval:: platform=REGEX
+
+ A testenv can define a new ``platform`` setting as a regular expression.
+ If a non-empty expression is defined and does not match against the
+ ``sys.platform`` string the test environment will be skipped.
+
.. confval:: setenv=MULTI-LINE-LIST
.. versionadded:: 0.9
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 doc/example/basic.txt
--- a/doc/example/basic.txt
+++ b/doc/example/basic.txt
@@ -46,6 +46,19 @@
However, you can also create your own test environment names,
see some of the examples in :doc:`examples <../examples>`.
+specifying a platform
+-----------------------------------------------
+
+.. versionadded:: 2.0
+
+If you want to specify which platform(s) your test environment
+runs on you can set a platform regular expression like this::
+
+ platform = linux2|darwin
+
+If the expression does not match against ``sys.platform``
+the test environment will be skipped.
+
whitelisting non-virtualenv commands
-----------------------------------------------
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -7,6 +7,7 @@
import tox._config
from tox._config import * # noqa
from tox._config import _split_env
+from tox._venv import VirtualEnv
class TestVenvConfig:
@@ -18,6 +19,7 @@
assert config.toxworkdir.realpath() == tmpdir.join(".tox").realpath()
assert config.envconfigs['py1'].basepython == sys.executable
assert config.envconfigs['py1'].deps == []
+ assert not config.envconfigs['py1'].platform
def test_config_parsing_multienv(self, tmpdir, newconfig):
config = newconfig([], """
@@ -98,6 +100,50 @@
assert parseini._is_same_dep('pkg_hello-world3==1.0',
'pkg_hello-world3<=2.0')
assert not parseini._is_same_dep('pkg_hello-world3==1.0',
'otherpkg>=2.0')
+
+class TestConfigPlatform:
+ def test_config_parse_platform(self, newconfig):
+ config = newconfig([], """
+ [testenv:py1]
+ platform = linux2
+ """)
+ assert len(config.envconfigs) == 1
+ assert config.envconfigs['py1'].platform == "linux2"
+
+ def test_config_parse_platform_rex(self, newconfig, mocksession,
monkeypatch):
+ config = newconfig([], """
+ [testenv:py1]
+ platform = a123|b123
+ """)
+ assert len(config.envconfigs) == 1
+ envconfig = config.envconfigs['py1']
+ venv = VirtualEnv(envconfig, session=mocksession)
+ assert not venv.matching_platform()
+ monkeypatch.setattr(sys, "platform", "a123")
+ assert venv.matching_platform()
+ monkeypatch.setattr(sys, "platform", "b123")
+ assert venv.matching_platform()
+ monkeypatch.undo()
+ assert not venv.matching_platform()
+
+
+ @pytest.mark.parametrize("plat", ["win", "lin", ])
+ def test_config_parse_platform_with_factors(self, newconfig, plat,
monkeypatch):
+ monkeypatch.setattr(sys, "platform", "win32")
+ config = newconfig([], """
+ [tox]
+ envlist = py27-{win,lin,osx}
+ [testenv]
+ platform =
+ win: win32
+ lin: linux2
+ """)
+ assert len(config.envconfigs) == 3
+ platform = config.envconfigs['py27-' + plat].platform
+ expected = {"win": "win32", "lin": "linux2"}.get(plat)
+ assert platform == expected
+
+
class TestConfigPackage:
def test_defaults(self, tmpdir, newconfig):
config = newconfig([], "")
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tests/test_z_cmdline.py
--- a/tests/test_z_cmdline.py
+++ b/tests/test_z_cmdline.py
@@ -242,6 +242,24 @@
"*ERROR*InterpreterNotFound*xyz_unknown_interpreter*",
])
+def test_skip_platform_mismatch(cmd, initproj):
+ initproj("interp123-0.5", filedefs={
+ 'tests': {'test_hello.py': "def test_hello(): pass"},
+ 'tox.ini': '''
+ [testenv]
+ changedir=tests
+ platform=x123
+ '''
+ })
+ result = cmd.run("tox")
+ assert not result.ret
+ assert "platform mismatch" not in result.stdout.str()
+ result = cmd.run("tox", "-v")
+ assert not result.ret
+ result.stdout.fnmatch_lines([
+ "*python*platform mismatch*"
+ ])
+
def test_skip_unknown_interpreter(cmd, initproj):
initproj("interp123-0.5", filedefs={
'tests': {'test_hello.py': "def test_hello(): pass"},
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tox/_cmdline.py
--- a/tox/_cmdline.py
+++ b/tox/_cmdline.py
@@ -474,6 +474,9 @@
if self.config.option.sdistonly:
return
for venv in self.venvlist:
+ if not venv.matching_platform():
+ venv.status = "platform mismatch"
+ continue # we simply omit non-matching platforms
if self.setupenv(venv):
if venv.envconfig.develop:
self.developpkg(venv, self.config.setupdir)
@@ -505,6 +508,9 @@
else:
retcode = 1
self.report.error(msg)
+ elif status == "platform mismatch":
+ msg = " %s: %s" %(venv.envconfig.envname, str(status))
+ self.report.verbosity1(msg)
elif status and status != "skipped tests":
msg = " %s: %s" %(venv.envconfig.envname, str(status))
self.report.error(msg)
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -151,9 +151,11 @@
homedir = self.toxinidir # XXX good idea?
return homedir
+
class VenvConfig:
- def __init__(self, **kw):
- self.__dict__.update(kw)
+ def __init__(self, envname, config):
+ self.envname = envname
+ self.config = config
@property
def envbindir(self):
@@ -195,6 +197,8 @@
"python2.5 is not supported anymore, sorry")
return info.executable
+
+
testenvprefix = "testenv:"
def get_homedir():
@@ -321,8 +325,7 @@
return factors
def _makeenvconfig(self, name, section, subs, config):
- vc = VenvConfig(envname=name)
- vc.config = config
+ vc = VenvConfig(config=config, envname=name)
factors = set(name.split('-'))
reader = IniReader(self._cfg, fallbacksections=["testenv"],
factors=factors)
@@ -381,6 +384,13 @@
ixserver = None
name = self._replace_forced_dep(name, config)
vc.deps.append(DepConfig(name, ixserver))
+
+ platform = ""
+ for platform in reader.getlist(section, "platform"):
+ if platform.strip():
+ break
+ vc.platform = platform
+
vc.distribute = reader.getbool(section, "distribute", False)
vc.sitepackages = self.config.option.sitepackages or \
reader.getbool(section, "sitepackages", False)
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -1,5 +1,6 @@
from __future__ import with_statement
import sys, os
+import re
import codecs
import py
import tox
@@ -171,6 +172,9 @@
def getsupportedinterpreter(self):
return self.envconfig.getsupportedinterpreter()
+ def matching_platform(self):
+ return re.match(self.envconfig.platform, sys.platform)
+
def create(self, action=None):
#if self.getcommandpath("activate").dirpath().check():
# return
diff -r 92d5e08065fc927d14ecb7e4c8081a219bce9cf5 -r
1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 tox/interpreters.py
--- a/tox/interpreters.py
+++ b/tox/interpreters.py
@@ -90,11 +90,12 @@
class InterpreterInfo:
runnable = True
- def __init__(self, name, executable, version_info):
+ def __init__(self, name, executable, version_info, sysplatform):
assert executable and version_info
self.name = name
self.executable = executable
self.version_info = version_info
+ self.sysplatform = sysplatform
def __str__(self):
return "<executable at %s, version_info %s>" % (
@@ -163,7 +164,8 @@
def pyinfo():
import sys
- return dict(version_info=tuple(sys.version_info))
+ return dict(version_info=tuple(sys.version_info),
+ sysplatform=sys.platform)
def sitepackagesdir(envdir):
from distutils.sysconfig import get_python_lib
https://bitbucket.org/hpk42/tox/commits/49f0a9981117/
Changeset: 49f0a9981117
User: hpk42
Date: 2015-04-21 09:51:10+00:00
Summary: trying out isolating env variables
Affected #: 10 files
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,21 @@
-2.0.dev1
+2.0.0.dev1
-----------
-- introduce a way to specify on which platform a testenvironment is to
- execute: the new per-environment "platform" setting allows to specify
+- (new) introduce environment variable isolation:
+ tox now only passes the PATH variable from the tox
+ invocation environment to the test environment and on Windows
+ also ``SYSTEMROOT`` and ``PATHEXT``. If you need to pass through further
+ environment variables you can use the new ``passenv`` setting,
+ a space-separated list of environment variable names. Each name
+ can make use of fnmatch-style glob patterns. All environment
+ variables which exist in the tox-invocation environment will be copied
+ to the test environment.
+
+- (new) introduce a way to specify on which platform a testenvironment is to
+ execute: the new per-venv "platform" setting allows to specify
a regular expression which is matched against sys.platform.
- If platform is set and doesn't match the test environment the
- test environment is ignored, no setup or tests are attempted.
+ 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.
1.9.2
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -169,6 +169,20 @@
will be used for all test command invocations as well as for installing
the sdist package into a virtual environment.
+.. confval:: passenv=SPACE-SEPARATED-GLOBNAMES
+
+ .. versionadded:: 2.0
+
+ A list of wildcard environment variable names which
+ shall be copied from the tox invocation environment to the test
+ environment. If a specified environment variable doesn't exist in the tox
+ invocation environment it is ignored. You can use ``*`` and ``?`` to
+ match multiple environment variables with one name.
+
+ Note that the ``PATH`` variable is unconditionally passed down and on
+ Windows ``SYSTEMROOT`` and ``PATHEXT`` will be passed down as well.
+ You can override these variables with the ``setenv`` option.
+
.. confval:: recreate=True|False(default)
Always recreate virtual environment if this option is True.
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 doc/example/basic.txt
--- a/doc/example/basic.txt
+++ b/doc/example/basic.txt
@@ -173,6 +173,22 @@
would trigger a complete reinstallation of the existing py27 environment
(or create it afresh if it doesn't exist).
+passing down environment variables
+-------------------------------------------
+
+.. versionadded:: 2.0
+
+By default tox will only pass the ``PATH`` environment variable (and on
+windows ``SYSTEMROOT`` and ``PATHEXT``) from the tox invocation to the
+test environments. If you want to pass down additional environment
+variables you can use the ``passenv`` option::
+
+ [testenv]
+ passenv = LANG
+
+When your test commands execute they will execute with
+the same LANG setting as the one with which tox was invoked.
+
setting environment variables
-------------------------------------------
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 setup.cfg
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[bdist_wheel]
+universal=1
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 setup.py
--- a/setup.py
+++ b/setup.py
@@ -26,7 +26,7 @@
description='virtualenv-based automation of test activities',
long_description=open("README.rst").read(),
url='http://tox.testrun.org/',
- version='1.9.3.dev1',
+ version='2.0.0.dev1',
license='http://opensource.org/licenses/MIT',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
author='holger krekel',
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -642,6 +642,43 @@
assert envconfig.setenv['PYTHONPATH'] == 'something'
assert envconfig.setenv['ANOTHER_VAL'] == 'else'
+ @pytest.mark.parametrize("plat", ["win32", "linux2"])
+ def test_passenv(self, tmpdir, newconfig, monkeypatch, plat):
+ monkeypatch.setattr(sys, "platform", plat)
+ monkeypatch.setenv("A123A", "a")
+ monkeypatch.setenv("A123B", "b")
+ monkeypatch.setenv("BX23", "0")
+ config = newconfig("""
+ [testenv]
+ passenv = A123* B?23
+ """)
+ assert len(config.envconfigs) == 1
+ envconfig = config.envconfigs['python']
+ if plat == "win32":
+ assert "PATHEXT" in envconfig.passenv
+ assert "SYSTEMROOT" in envconfig.passenv
+ assert "PATH" in envconfig.passenv
+ assert "A123A" in envconfig.passenv
+ assert "A123B" in envconfig.passenv
+
+ def test_passenv_with_factor(self, tmpdir, newconfig, monkeypatch):
+ monkeypatch.setenv("A123A", "a")
+ monkeypatch.setenv("A123B", "b")
+ monkeypatch.setenv("BX23", "0")
+ config = newconfig("""
+ [tox]
+ envlist = {x1,x2}
+ [testenv]
+ passenv =
+ x1: A123A
+ x2: A123B
+ """)
+ assert len(config.envconfigs) == 2
+ assert "A123A" in config.envconfigs["x1"].passenv
+ assert "A123B" not in config.envconfigs["x1"].passenv
+ assert "A123B" in config.envconfigs["x2"].passenv
+ assert "A123A" not in config.envconfigs["x2"].passenv
+
def test_changedir_override(self, tmpdir, newconfig):
config = newconfig("""
[testenv]
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 tests/test_venv.py
--- a/tests/test_venv.py
+++ b/tests/test_venv.py
@@ -517,11 +517,13 @@
assert 'PIP_REQUIRE_VIRTUALENV' not in os.environ
assert '__PYVENV_LAUNCHER__' not in os.environ
-def test_setenv_added_to_pcall(tmpdir, mocksession, newconfig):
+def test_env_variables_added_to_pcall(tmpdir, mocksession, newconfig,
monkeypatch):
pkg = tmpdir.ensure("package.tar.gz")
+ monkeypatch.setenv("X123", "123")
config = newconfig([], """
[testenv:python]
commands=python -V
+ passenv = X123
setenv =
ENV_VAR = value
""")
@@ -540,9 +542,12 @@
assert 'ENV_VAR' in env
assert env['ENV_VAR'] == 'value'
assert env['VIRTUAL_ENV'] == str(venv.path)
+ assert env['X123'] == "123"
- for e in os.environ:
- assert e in env
+ assert set(env) == set(["ENV_VAR", "VIRTUAL_ENV", "PYTHONHASHSEED",
+ "X123", "PATH"])
+ #for e in os.environ:
+ # assert e in env
def test_installpkg_no_upgrade(tmpdir, newmocksession):
pkg = tmpdir.ensure("package.tar.gz")
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 tox/__init__.py
--- a/tox/__init__.py
+++ b/tox/__init__.py
@@ -1,5 +1,5 @@
#
-__version__ = '1.9.3.dev1'
+__version__ = '2.0.0.dev1'
class exception:
class Error(Exception):
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -1,6 +1,7 @@
import argparse
import os
import random
+from fnmatch import fnmatchcase
import sys
import re
import shlex
@@ -366,6 +367,17 @@
if config.hashseed is not None:
setenv['PYTHONHASHSEED'] = config.hashseed
setenv.update(reader.getdict(section, 'setenv'))
+
+ # read passenv
+ vc.passenv = set(["PATH"])
+ if sys.platform == "win32":
+ vc.passenv.add("SYSTEMROOT") # needed for python's crypto module
+ vc.passenv.add("PATHEXT") # needed for discovering executables
+ for spec in reader.getlist(section, "passenv", sep=" "):
+ for name in os.environ:
+ if fnmatchcase(name, spec):
+ vc.passenv.add(name)
+
vc.setenv = setenv
if not vc.setenv:
vc.setenv = None
diff -r 1877e74ab9b82b8a7d1818dd623edf2f6f2ea822 -r
49f0a9981117a5ca9b598dd52b2f831b86df57f2 tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -326,7 +326,10 @@
action=action, extraenv=extraenv)
def _getenv(self, extraenv={}):
- env = os.environ.copy()
+ env = {}
+ for envname in self.envconfig.passenv:
+ if envname in os.environ:
+ env[envname] = os.environ[envname]
setenv = self.envconfig.setenv
if setenv:
env.update(setenv)
https://bitbucket.org/hpk42/tox/commits/385a38e6afca/
Changeset: 385a38e6afca
User: hpk42
Date: 2015-04-21 09:59:54+00:00
Summary: remove the long-deprecated "distribute" option as it has no effect
these days.
Affected #: 8 files
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -17,6 +17,7 @@
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.
+- remove the long-deprecated "distribute" option as it has no effect these
days.
1.9.2
-----------
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc doc/Makefile
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -37,7 +37,7 @@
-rm -rf $(BUILDDIR)/*
install: clean html
- @rsync -avz $(BUILDDIR)/html/ testrun.org:/www/testrun.org/tox/latest
+ @rsync -avz $(BUILDDIR)/html/ testrun.org:/www/testrun.org/tox/dev
#latexpdf
#@scp $(BUILDDIR)/latex/*.pdf testrun.org:www-tox/latest
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -200,15 +200,6 @@
`--download-cache` command-line option.
**default**: no download cache will be used.
-.. confval:: distribute=True|False
-
- **DEPRECATED** -- as of August 2013 you should use setuptools
- which has merged most of distribute_ 's changes. Just use
- the default, Luke! In future versions of tox this option might
- be ignored and setuptools always chosen.
-
- **default:** False.
-
.. confval:: sitepackages=True|False
Set to ``True`` if you want to create virtual environments that also
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc doc/links.txt
--- a/doc/links.txt
+++ b/doc/links.txt
@@ -13,7 +13,6 @@
.. _`easy_install`: http://peak.telecommunity.com/DevCenter/EasyInstall
.. _pip: https://pypi.python.org/pypi/pip
.. _setuptools: https://pypi.python.org/pypi/setuptools
-.. _distribute: https://pypi.python.org/pypi/distribute
.. _`jenkins`: http://jenkins-ci.org/
.. _sphinx: https://pypi.python.org/pypi/Sphinx
.. _discover: https://pypi.python.org/pypi/discover
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -543,7 +543,6 @@
envconfig = config.envconfigs['python']
assert envconfig.commands == [["xyz", "--abc"]]
assert envconfig.changedir == config.setupdir
- assert envconfig.distribute == False
assert envconfig.sitepackages == False
assert envconfig.develop == False
assert envconfig.envlogdir == envconfig.envdir.join("log")
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc tests/test_venv.py
--- a/tests/test_venv.py
+++ b/tests/test_venv.py
@@ -80,22 +80,6 @@
p = venv.getcommandpath("easy_install")
assert py.path.local(p).relto(envconfig.envbindir), p
-def test_create_distribute(monkeypatch, mocksession, newconfig):
- config = newconfig([], """
- [testenv:py123]
- distribute=False
- """)
- envconfig = config.envconfigs['py123']
- venv = VirtualEnv(envconfig, session=mocksession)
- assert venv.path == envconfig.envdir
- assert not venv.path.check()
- venv.create()
- l = mocksession._pcalls
- assert len(l) >= 1
- args = l[0].args
- assert "--distribute" not in map(str, args)
- assert "--setuptools" in map(str, args)
-
def test_create_sitepackages(monkeypatch, mocksession, newconfig):
config = newconfig([], """
[testenv:site]
@@ -158,7 +142,6 @@
monkeypatch.delenv("PIP_DOWNLOAD_CACHE", raising=False)
mocksession = newmocksession([], """
[testenv:py123]
- distribute=True
deps=
dep1
dep2
@@ -458,18 +441,6 @@
venv.update()
mocksession.report.expect("*", "*recreate*")
- def test_distribute_recreation(self, newconfig, mocksession):
- config = newconfig([], "")
- envconfig = config.envconfigs['python']
- venv = VirtualEnv(envconfig, session=mocksession)
- venv.update()
- cconfig = venv._getliveconfig()
- cconfig.distribute = True
- cconfig.writeconfig(venv.path_config)
- mocksession._clearmocks()
- venv.update()
- mocksession.report.expect("verbosity0", "*recreate*")
-
def test_develop_recreation(self, newconfig, mocksession):
config = newconfig([], "")
envconfig = config.envconfigs['python']
@@ -523,7 +494,7 @@
config = newconfig([], """
[testenv:python]
commands=python -V
- passenv = X123
+ passenv = x123
setenv =
ENV_VAR = value
""")
@@ -544,8 +515,9 @@
assert env['VIRTUAL_ENV'] == str(venv.path)
assert env['X123'] == "123"
- assert set(env) == set(["ENV_VAR", "VIRTUAL_ENV", "PYTHONHASHSEED",
- "X123", "PATH"])
+ assert set(["ENV_VAR", "VIRTUAL_ENV", "PYTHONHASHSEED", "X123", "PATH"])\
+ .issubset(env)
+
#for e in os.environ:
# assert e in env
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -375,7 +375,7 @@
vc.passenv.add("PATHEXT") # needed for discovering executables
for spec in reader.getlist(section, "passenv", sep=" "):
for name in os.environ:
- if fnmatchcase(name, spec):
+ if fnmatchcase(name.lower(), spec.lower()):
vc.passenv.add(name)
vc.setenv = setenv
@@ -403,7 +403,6 @@
break
vc.platform = platform
- vc.distribute = reader.getbool(section, "distribute", False)
vc.sitepackages = self.config.option.sitepackages or \
reader.getbool(section, "sitepackages", False)
diff -r 49f0a9981117a5ca9b598dd52b2f831b86df57f2 -r
385a38e6afca771820ffd44ee23348ebb3fcf0bc tox/_venv.py
--- a/tox/_venv.py
+++ b/tox/_venv.py
@@ -7,20 +7,18 @@
from tox._config import DepConfig
class CreationConfig:
- def __init__(self, md5, python, version, distribute, sitepackages,
+ def __init__(self, md5, python, version, sitepackages,
develop, deps):
self.md5 = md5
self.python = python
self.version = version
- self.distribute = distribute
self.sitepackages = sitepackages
self.develop = develop
self.deps = deps
def writeconfig(self, path):
lines = ["%s %s" % (self.md5, self.python)]
- lines.append("%s %d %d %d" % (self.version, self.distribute,
- self.sitepackages, self.develop))
+ lines.append("%s %d %d" % (self.version, self.sitepackages,
self.develop))
for dep in self.deps:
lines.append("%s %s" % dep)
path.ensure()
@@ -32,27 +30,21 @@
lines = path.readlines(cr=0)
value = lines.pop(0).split(None, 1)
md5, python = value
- version, distribute, sitepackages, develop = lines.pop(0).split(
- None, 3)
- distribute = bool(int(distribute))
+ version, sitepackages, develop = lines.pop(0).split(None, 3)
sitepackages = bool(int(sitepackages))
develop = bool(int(develop))
deps = []
for line in lines:
md5, depstring = line.split(None, 1)
deps.append((md5, depstring))
- return CreationConfig(md5, python, version,
- distribute, sitepackages, develop, deps)
- except KeyboardInterrupt:
- raise
- except:
+ return CreationConfig(md5, python, version, sitepackages, develop,
deps)
+ except Exception:
return None
def matches(self, other):
return (other and self.md5 == other.md5
and self.python == other.python
and self.version == other.version
- and self.distribute == other.distribute
and self.sitepackages == other.sitepackages
and self.develop == other.develop
and self.deps == other.deps)
@@ -148,7 +140,6 @@
python = self.envconfig._basepython_info.executable
md5 = getdigest(python)
version = tox.__version__
- distribute = self.envconfig.distribute
sitepackages = self.envconfig.sitepackages
develop = self.envconfig.develop
deps = []
@@ -157,7 +148,7 @@
md5 = getdigest(raw_dep)
deps.append((md5, raw_dep))
return CreationConfig(md5, python, version,
- distribute, sitepackages, develop, deps)
+ sitepackages, develop, deps)
def _getresolvedeps(self):
l = []
@@ -183,10 +174,6 @@
config_interpreter = self.getsupportedinterpreter()
args = [sys.executable, '-m', 'virtualenv']
- if self.envconfig.distribute:
- args.append("--distribute")
- else:
- args.append("--setuptools")
if self.envconfig.sitepackages:
args.append('--system-site-packages')
# add interpreter explicitly, to prevent using
https://bitbucket.org/hpk42/tox/commits/7fb0ae11640d/
Changeset: 7fb0ae11640d
User: hpk42
Date: 2015-04-21 14:39:13+00:00
Summary: fix issue233: avoid hanging with tox-setuptools integration
example. Thanks simonb.
Affected #: 2 files
diff -r 385a38e6afca771820ffd44ee23348ebb3fcf0bc -r
7fb0ae11640dc5416ba58d58e2858cfe7d7f7c07 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -19,6 +19,8 @@
- remove the long-deprecated "distribute" option as it has no effect these
days.
+- fix issue233: avoid hanging with tox-setuptools integration example. Thanks
simonb.
+
1.9.2
-----------
diff -r 385a38e6afca771820ffd44ee23348ebb3fcf0bc -r
7fb0ae11640dc5416ba58d58e2858cfe7d7f7c07 doc/example/basic.txt
--- a/doc/example/basic.txt
+++ b/doc/example/basic.txt
@@ -254,7 +254,10 @@
#import here, cause outside the eggs aren't loaded
import tox
import shlex
- errno = tox.cmdline(args=shlex.split(self.tox_args))
+ args = self.tox_args
+ if args:
+ args = shlex.split(self.tox_args)
+ errno = tox.cmdline(args=args)
sys.exit(errno)
setup(
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.
_______________________________________________
pytest-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pytest-commit