4 new commits in tox:

https://bitbucket.org/hpk42/tox/commits/7c15500c3883/
Changeset:   7c15500c3883
User:        hpk42
Date:        2015-05-12 17:57:41+00:00
Summary:     refine docs
Affected #:  5 files

diff -r 6fc03c1208fd310cd38a013e8fff7330dc10f6c3 -r 
7c15500c388337c46627a22668ed3d12a3df412b README.rst
--- a/README.rst
+++ b/README.rst
@@ -21,5 +21,5 @@
 
 have fun,
 
-holger krekel, 2014
+holger krekel, 2015
 

diff -r 6fc03c1208fd310cd38a013e8fff7330dc10f6c3 -r 
7c15500c388337c46627a22668ed3d12a3df412b doc/index.txt
--- a/doc/index.txt
+++ b/doc/index.txt
@@ -65,8 +65,7 @@
 
 * :doc:`(new in 2.0) plugin system <plugins>` to modify tox execution with 
simple hooks.
 
-* uses pip_ and setuptools_ by default.  Experimental
-  support for configuring the installer command
+* uses pip_ and setuptools_ by default.  Support for configuring the installer 
command
   through :confval:`install_command=ARGV`.
 
 * **cross-Python compatible**: CPython-2.6, 2.7, 3.2 and higher,

diff -r 6fc03c1208fd310cd38a013e8fff7330dc10f6c3 -r 
7c15500c388337c46627a22668ed3d12a3df412b doc/plugins.txt
--- a/doc/plugins.txt
+++ b/doc/plugins.txt
@@ -6,8 +6,9 @@
 .. versionadded:: 2.0
 
 With tox-2.0 a few aspects of tox running can be experimentally modified
-by writing hook functions.  We expect the list of hook function to grow
-over time.
+by writing hook functions.  The list of of available hook function is
+to grow over time on a per-need basis.
+
 
 writing a setuptools entrypoints plugin
 ---------------------------------------
@@ -30,19 +31,23 @@
             install_requires=['tox>=2.0'],
         )
 
-You can then install the plugin to develop it via::
+If installed, the ``entry_points`` part will make tox see and integrate
+your plugin during startup.
+
+You can install the plugin for development ("in-place") via::
 
     pip install -e .
 
-and later publish it.
+and later publish it via something like::
 
-The ``entry_points`` part allows tox to see your plugin during startup.
+    python setup.py sdist register upload
 
 
 Writing hook implementations
 ----------------------------
 
-A plugin module needs can define one or more hook implementation functions::
+A plugin module defines one or more hook implementation functions
+by decorating them with tox's ``hookimpl`` marker::
 
     from tox import hookimpl
 
@@ -65,5 +70,9 @@
 ----------------------------
 
 .. automodule:: tox.hookspecs
+
+.. autoclass:: tox.config.Parser
     :members:
 
+.. autoclass:: tox.config.Config
+    :members:

diff -r 6fc03c1208fd310cd38a013e8fff7330dc10f6c3 -r 
7c15500c388337c46627a22668ed3d12a3df412b tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -38,29 +38,48 @@
     return pm
 
 
-class MyParser:
+class Parser:
+    """ command line and ini-parser control object. """
+
     def __init__(self):
         self.argparser = argparse.ArgumentParser(
             description="tox options", add_help=False)
         self._testenv_attr = []
 
     def add_argument(self, *args, **kwargs):
+        """ add argument to command line parser.  This takes the
+        same arguments that ``argparse.ArgumentParser.add_argument``.
+        """
         return self.argparser.add_argument(*args, **kwargs)
 
     def add_testenv_attribute(self, name, type, help, default=None, 
postprocess=None):
+        """ add an ini-file variable for "testenv" section.
+
+        Types are specified as strings like "bool", "line-list", "string", 
"argv", "path",
+        "argvlist".  The ``postprocess`` function will be called for each 
testenv
+        like ``postprocess(config=config, reader=reader, 
section_val=section_val)``
+        where ``section_val`` is the value as read from the ini (or the 
default value).
+        Any postprocess function must return a value which will then become the
+        eventual value in the testenv section.
+        """
         self._testenv_attr.append(VenvAttribute(name, type, default, help, 
postprocess))
 
     def add_testenv_attribute_obj(self, obj):
+        """ add an ini-file variable as an object.
+
+        This works as ``add_testenv_attribute`` but expects "name", "type", 
"help",
+        and "postprocess" attributes on the object.
+        """
         assert hasattr(obj, "name")
         assert hasattr(obj, "type")
         assert hasattr(obj, "help")
         assert hasattr(obj, "postprocess")
         self._testenv_attr.append(obj)
 
-    def parse_args(self, args):
+    def _parse_args(self, args):
         return self.argparser.parse_args(args)
 
-    def format_help(self):
+    def _format_help(self):
         return self.argparser.format_help()
 
 
@@ -168,11 +187,11 @@
         args = sys.argv[1:]
 
     # prepare command line options
-    parser = MyParser()
+    parser = Parser()
     pm.hook.tox_addoption(parser=parser)
 
     # parse command line options
-    option = parser.parse_args(args)
+    option = parser._parse_args(args)
     interpreters = tox.interpreters.Interpreters(hook=pm.hook)
     config = Config(pluginmanager=pm, option=option, interpreters=interpreters)
     config._parser = parser
@@ -440,10 +459,12 @@
 
 class Config(object):
     def __init__(self, pluginmanager, option, interpreters):
+        #: dictionary containing envname to envconfig mappings
         self.envconfigs = {}
         self.invocationcwd = py.path.local()
         self.interpreters = interpreters
         self.pluginmanager = pluginmanager
+        #: option namespace containing all parsed command line options
         self.option = option
 
     @property

diff -r 6fc03c1208fd310cd38a013e8fff7330dc10f6c3 -r 
7c15500c388337c46627a22668ed3d12a3df412b tox/session.py
--- a/tox/session.py
+++ b/tox/session.py
@@ -44,7 +44,7 @@
 
 def show_help(config):
     tw = py.io.TerminalWriter()
-    tw.write(config._parser.format_help())
+    tw.write(config._parser._format_help())
     tw.line()
 
 


https://bitbucket.org/hpk42/tox/commits/6813a1058194/
Changeset:   6813a1058194
User:        hpk42
Date:        2015-05-12 19:25:22+00:00
Summary:     rename some API that is reachable by hooks
Affected #:  6 files

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,13 +4,17 @@
 - (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,
+  also ``SYSTEMROOT``, ``PATHEXT``, ``TEMP`` and ``TMP`` whereas
+  on linux additionally ``TMPDIR`` is passed.  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.
 
+- a new ``--help-ini`` option shows all possible testenv settings and
+  their defaults.
+
 - (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.

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 doc/announce/release-2.0.txt
--- a/doc/announce/release-2.0.txt
+++ b/doc/announce/release-2.0.txt
@@ -51,20 +51,23 @@
 best,
 Holger Krekel, merlinux GmbH
 
-
 2.0.0
 -----------
 
 - (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,
+  also ``SYSTEMROOT``, ``PATHEXT``, ``TEMP`` and ``TMP`` whereas
+  on linux additionally ``TMPDIR`` is passed.  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.
 
+- a new ``--help-ini`` option shows all possible testenv settings and
+  their defaults.
+
 - (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.
@@ -107,5 +110,3 @@
 
 - DEPRECATE distshare in documentation
 
-
-

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 doc/install.txt
--- a/doc/install.txt
+++ b/doc/install.txt
@@ -8,7 +8,7 @@
 
 **Operating systems**: Linux, Windows, OSX, Unix
 
-**Installer Requirements**: setuptools_ or Distribute_
+**Installer Requirements**: setuptools_
 
 **License**: MIT license
 

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 doc/plugins.txt
--- a/doc/plugins.txt
+++ b/doc/plugins.txt
@@ -66,13 +66,16 @@
 
 
 
-tox hook specifications
-----------------------------
+tox hook specifications and related API
+---------------------------------------
 
 .. automodule:: tox.hookspecs
 
-.. autoclass:: tox.config.Parser
+.. autoclass:: tox.config.Parser()
     :members:
 
-.. autoclass:: tox.config.Config
+.. autoclass:: tox.config.Config()
     :members:
+
+.. autoclass:: tox.config.TestenvConfig()
+    :members:

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 tox.ini
--- a/tox.ini
+++ b/tox.ini
@@ -19,7 +19,7 @@
     py.test -v check_sphinx.py {posargs}
 
 [testenv:flakes]
-qwe = 123
+platform=linux
 deps = pytest-flakes>=0.2
        pytest-pep8
 

diff -r 7c15500c388337c46627a22668ed3d12a3df412b -r 
6813a10581945910d6197a67b672d07276c6e2e0 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -56,19 +56,24 @@
         """ add an ini-file variable for "testenv" section.
 
         Types are specified as strings like "bool", "line-list", "string", 
"argv", "path",
-        "argvlist".  The ``postprocess`` function will be called for each 
testenv
-        like ``postprocess(config=config, reader=reader, 
section_val=section_val)``
-        where ``section_val`` is the value as read from the ini (or the 
default value).
-        Any postprocess function must return a value which will then become the
-        eventual value in the testenv section.
+        "argvlist".
+
+        The ``postprocess`` function will be called for each testenv
+        like ``postprocess(testenv_config=testenv_config, value=value)``
+        where ``value`` is the value as read from the ini (or the default 
value)
+        and ``testenv_config`` is a :py:class:`tox.config.TestenvConfig` 
instance
+        which will receive all ini-variables as object attributes.
+
+        Any postprocess function must return a value which will then be set
+        as the final value in the testenv section.
         """
         self._testenv_attr.append(VenvAttribute(name, type, default, help, 
postprocess))
 
     def add_testenv_attribute_obj(self, obj):
         """ add an ini-file variable as an object.
 
-        This works as ``add_testenv_attribute`` but expects "name", "type", 
"help",
-        and "postprocess" attributes on the object.
+        This works as the ``add_testenv_attribute`` function but expects
+        "name", "type", "help", and "postprocess" attributes on the object.
         """
         assert hasattr(obj, "name")
         assert hasattr(obj, "type")
@@ -98,9 +103,10 @@
     help = "each line specifies a dependency in pip/setuptools format."
     default = ()
 
-    def postprocess(self, config, reader, section_val):
+    def postprocess(self, testenv_config, value):
         deps = []
-        for depline in section_val:
+        config = testenv_config.config
+        for depline in value:
             m = re.match(r":(\w+):\s*(\S+)", depline)
             if m:
                 iname, name = m.groups()
@@ -145,19 +151,20 @@
     default = True
     help = "treat positional args in commands as paths"
 
-    def postprocess(self, config, reader, section_val):
+    def postprocess(self, testenv_config, value):
+        config = testenv_config.config
         args = config.option.args
         if args:
-            if section_val:
+            if value:
                 args = []
                 for arg in config.option.args:
                     if arg:
                         origpath = config.invocationcwd.join(arg, abs=True)
                         if origpath.check():
-                            arg = reader.getpath("changedir", 
".").bestrelpath(origpath)
+                            arg = 
testenv_config.changedir.bestrelpath(origpath)
                     args.append(arg)
-            reader.addsubstitutions(args)
-        return section_val
+            testenv_config._reader.addsubstitutions(args)
+        return value
 
 
 class InstallcmdOption:
@@ -166,11 +173,11 @@
     default = "pip install {opts} {packages}"
     help = "install command for dependencies and package under test."
 
-    def postprocess(self, config, reader, section_val):
-        if '{packages}' not in section_val:
+    def postprocess(self, testenv_config, value):
+        if '{packages}' not in value:
             raise tox.exception.ConfigError(
                 "'install_command' must contain '{packages}' substitution")
-        return section_val
+        return value
 
 
 def parseconfig(args=None):
@@ -332,10 +339,10 @@
         name="envlogdir", type="path", default="{envdir}/log",
         help="venv log directory")
 
-    def downloadcache(config, reader, section_val):
-        if section_val:
+    def downloadcache(testenv_config, value):
+        if value:
             # env var, if present, takes precedence
-            downloadcache = os.environ.get("PIP_DOWNLOAD_CACHE", section_val)
+            downloadcache = os.environ.get("PIP_DOWNLOAD_CACHE", value)
             return py.path.local(downloadcache)
 
     parser.add_testenv_attribute(
@@ -359,17 +366,18 @@
         help="if set to True all commands will be executed irrespective of 
their "
              "result error status.")
 
-    def recreate(config, reader, section_val):
-        if config.option.recreate:
+    def recreate(testenv_config, value):
+        if testenv_config.config.option.recreate:
             return True
-        return section_val
+        return value
 
     parser.add_testenv_attribute(
         name="recreate", type="bool", default=False, postprocess=recreate,
         help="always recreate this test environment.")
 
-    def setenv(config, reader, section_val):
-        setenv = section_val
+    def setenv(testenv_config, value):
+        setenv = value
+        config = testenv_config.config
         if "PYTHONHASHSEED" not in setenv and config.hashseed is not None:
             setenv['PYTHONHASHSEED'] = config.hashseed
         return setenv
@@ -378,7 +386,7 @@
         name="setenv", type="dict", postprocess=setenv,
         help="list of X=Y lines with environment variable settings")
 
-    def passenv(config, reader, section_val):
+    def passenv(testenv_config, value):
         passenv = set(["PATH"])
 
         # we ensure that tmp directory settings are passed on
@@ -392,7 +400,7 @@
             passenv.add("TMP")
         else:
             passenv.add("TMPDIR")
-        for spec in section_val:
+        for spec in value:
             for name in os.environ:
                 if fnmatchcase(name.upper(), spec.upper()):
                     passenv.add(name)
@@ -413,36 +421,37 @@
         help="regular expression which must match against ``sys.platform``. "
              "otherwise testenv will be skipped.")
 
-    def sitepackages(config, reader, section_val):
-        return config.option.sitepackages or section_val
+    def sitepackages(testenv_config, value):
+        return testenv_config.config.option.sitepackages or value
 
     parser.add_testenv_attribute(
         name="sitepackages", type="bool", default=False, 
postprocess=sitepackages,
         help="Set to ``True`` if you want to create virtual environments that 
also "
              "have access to globally installed packages.")
 
-    def pip_pre(config, reader, section_val):
-        return config.option.pre or section_val
+    def pip_pre(testenv_config, value):
+        return testenv_config.config.option.pre or value
 
     parser.add_testenv_attribute(
         name="pip_pre", type="bool", default=False, postprocess=pip_pre,
         help="If ``True``, adds ``--pre`` to the ``opts`` passed to "
              "the install command. ")
 
-    def develop(config, reader, section_val):
-        return not config.option.installpkg and (section_val or 
config.option.develop)
+    def develop(testenv_config, value):
+        option = testenv_config.config.option
+        return not option.installpkg and (value or option.develop)
 
     parser.add_testenv_attribute(
         name="usedevelop", type="bool", postprocess=develop, default=False,
         help="install package in develop/editable mode")
 
-    def basepython_default(config, reader, section_val):
-        if section_val is None:
-            for f in reader.factors:
+    def basepython_default(testenv_config, value):
+        if value is None:
+            for f in testenv_config.factors:
                 if f in default_factors:
                     return default_factors[f]
             return sys.executable
-        return str(section_val)
+        return str(value)
 
     parser.add_testenv_attribute(
         name="basepython", type="string", default=None, 
postprocess=basepython_default,
@@ -458,6 +467,7 @@
 
 
 class Config(object):
+    """ Global Tox config object. """
     def __init__(self, pluginmanager, option, interpreters):
         #: dictionary containing envname to envconfig mappings
         self.envconfigs = {}
@@ -475,13 +485,23 @@
         return homedir
 
 
-class VenvConfig:
-    def __init__(self, envname, config):
+class TestenvConfig:
+    """ Testenv Configuration object.
+    In addition to some core attributes/properties this config object holds all
+    per-testenv ini attributes as attributes, see "tox --help-ini" for an 
overview.
+    """
+    def __init__(self, envname, config, factors, reader):
+        #: test environment name
         self.envname = envname
+        #: global tox config object
         self.config = config
+        #: set of factors
+        self.factors = factors
+        self._reader = reader
 
     @property
     def envbindir(self):
+        """ path to directory where scripts/binaries reside. """
         if (sys.platform == "win32"
                 and "jython" not in self.basepython
                 and "pypy" not in self.basepython):
@@ -491,6 +511,7 @@
 
     @property
     def envpython(self):
+        """ path to python/jython executable. """
         if "jython" in str(self.basepython):
             name = "jython"
         else:
@@ -499,6 +520,9 @@
 
     # no @property to avoid early calling (see callable(subst[key]) checks)
     def envsitepackagesdir(self):
+        """ return sitepackagesdir of the virtualenv environment.
+        (only available during execution, not parsing)
+        """
         self.getsupportedinterpreter()  # for throwing exceptions
         x = self.config.interpreters.get_sitepackagesdir(
             info=self.python_info,
@@ -507,6 +531,7 @@
 
     @property
     def python_info(self):
+        """ return sitepackagesdir of the virtualenv environment. """
         return self.config.interpreters.get_info(envconfig=self)
 
     def getsupportedinterpreter(self):
@@ -650,13 +675,12 @@
         return factors
 
     def make_envconfig(self, name, section, subs, config):
-        vc = VenvConfig(config=config, envname=name)
         factors = set(name.split('-'))
         reader = SectionReader(section, self._cfg, 
fallbacksections=["testenv"],
                                factors=factors)
+        vc = TestenvConfig(config=config, envname=name, factors=factors, 
reader=reader)
         reader.addsubstitutions(**subs)
         reader.addsubstitutions(envname=name)
-        reader.vc = vc
 
         for env_attr in config._testenv_attr:
             atype = env_attr.type
@@ -671,7 +695,7 @@
                 raise ValueError("unknown type %r" % (atype,))
 
             if env_attr.postprocess:
-                res = env_attr.postprocess(config, reader, res)
+                res = env_attr.postprocess(testenv_config=vc, value=res)
             setattr(vc, env_attr.name, res)
 
             if atype == "path":
@@ -785,9 +809,8 @@
     def getpath(self, name, defaultpath):
         toxinidir = self._subs['toxinidir']
         path = self.getstring(name, defaultpath)
-        if path is None:
-            return path
-        return toxinidir.join(path, abs=True)
+        if path is not None:
+            return toxinidir.join(path, abs=True)
 
     def getlist(self, name, sep="\n"):
         s = self.getstring(name, None)
@@ -952,11 +975,11 @@
 
 class _ArgvlistReader:
     @classmethod
-    def getargvlist(cls, reader, section_val):
+    def getargvlist(cls, reader, value):
         """Parse ``commands`` argvlist multiline string.
 
         :param str name: Key name in a section.
-        :param str section_val: Content stored by key.
+        :param str value: Content stored by key.
 
         :rtype: list[list[str]]
         :raise :class:`tox.exception.ConfigError`:
@@ -964,7 +987,7 @@
         """
         commands = []
         current_command = ""
-        for line in section_val.splitlines():
+        for line in value.splitlines():
             line = line.rstrip()
             i = line.find("#")
             if i != -1:


https://bitbucket.org/hpk42/tox/commits/892c54b52a04/
Changeset:   892c54b52a04
User:        hpk42
Date:        2015-05-12 19:42:12+00:00
Summary:     show all registered per-testenv ini values
Affected #:  2 files

diff -r 6813a10581945910d6197a67b672d07276c6e2e0 -r 
892c54b52a044ac8dc46fc302ea96f4d755dad9d tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1566,14 +1566,14 @@
         result = cmd.run("tox", "--showconfig")
         assert result.ret == 0
         result.stdout.fnmatch_lines([
-            r'*deps=*dep1==2.3, dep2*',
+            r'*deps*dep1==2.3, dep2*',
         ])
         # override dep1 specific version, and force version for dep2
         result = cmd.run("tox", "--showconfig", "--force-dep=dep1",
                          "--force-dep=dep2==5.0")
         assert result.ret == 0
         result.stdout.fnmatch_lines([
-            r'*deps=*dep1, dep2==5.0*',
+            r'*deps*dep1, dep2==5.0*',
         ])
 
 

diff -r 6813a10581945910d6197a67b672d07276c6e2e0 -r 
892c54b52a044ac8dc46fc302ea96f4d755dad9d tox/session.py
--- a/tox/session.py
+++ b/tox/session.py
@@ -594,25 +594,9 @@
         self.report.tw.line()
         for envconfig in self.config.envconfigs.values():
             self.report.line("[testenv:%s]" % envconfig.envname, bold=True)
-            self.report.line("  basepython=%s" % envconfig.basepython)
-            self.report.line("  pythoninfo=%s" % (envconfig.python_info,))
-            self.report.line("  envpython=%s" % envconfig.envpython)
-            self.report.line("  envtmpdir=%s" % envconfig.envtmpdir)
-            self.report.line("  envbindir=%s" % envconfig.envbindir)
-            self.report.line("  envlogdir=%s" % envconfig.envlogdir)
-            self.report.line("  changedir=%s" % envconfig.changedir)
-            self.report.line("  args_are_path=%s" % envconfig.args_are_paths)
-            self.report.line("  install_command=%s" %
-                             envconfig.install_command)
-            self.report.line("  commands=")
-            for command in envconfig.commands:
-                self.report.line("    %s" % command)
-            self.report.line("  deps=%s" % envconfig.deps)
-            self.report.line("  envdir=    %s" % envconfig.envdir)
-            self.report.line("  downloadcache=%s" % envconfig.downloadcache)
-            self.report.line("  usedevelop=%s" % envconfig.usedevelop)
-            self.report.line("  setenv=%s" % envconfig.setenv)
-            self.report.line("  passenv=%s" % envconfig.passenv)
+            for attr in self.config._parser._testenv_attr:
+                self.report.line("  %-15s = %s"
+                                 % (attr.name, getattr(envconfig, attr.name)))
 
     def showenvs(self):
         for env in self.config.envlist:


https://bitbucket.org/hpk42/tox/commits/b7e498efd0ec/
Changeset:   b7e498efd0ec
User:        hpk42
Date:        2015-05-12 21:02:11+00:00
Summary:     also pass PIP_INDEX_URL because it's likely that the user wants to 
use
it with the pip commands that run inside the tox run.
Affected #:  5 files

diff -r 892c54b52a044ac8dc46fc302ea96f4d755dad9d -r 
b7e498efd0ecd543a870431ea8d34f2882d5ace8 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,10 +2,10 @@
 -----------
 
 - (new) introduce environment variable isolation:
-  tox now only passes the PATH variable from the tox
+  tox now only passes the PATH and PIP_INDEX_URL variable from the tox
   invocation environment to the test environment and on Windows 
   also ``SYSTEMROOT``, ``PATHEXT``, ``TEMP`` and ``TMP`` whereas
-  on linux additionally ``TMPDIR`` is passed.  If you need to pass 
+  on unix additionally ``TMPDIR`` is passed.  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

diff -r 892c54b52a044ac8dc46fc302ea96f4d755dad9d -r 
b7e498efd0ecd543a870431ea8d34f2882d5ace8 doc/announce/release-2.0.txt
--- a/doc/announce/release-2.0.txt
+++ b/doc/announce/release-2.0.txt
@@ -55,10 +55,10 @@
 -----------
 
 - (new) introduce environment variable isolation:
-  tox now only passes the PATH variable from the tox
+  tox now only passes the PATH and PIP_INDEX_URL variable from the tox
   invocation environment to the test environment and on Windows
   also ``SYSTEMROOT``, ``PATHEXT``, ``TEMP`` and ``TMP`` whereas
-  on linux additionally ``TMPDIR`` is passed.  If you need to pass
+  on unix additionally ``TMPDIR`` is passed.  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
@@ -109,4 +109,3 @@
   experimental plugin hooks, use tox internals at your own risk.
 
 - DEPRECATE distshare in documentation
-

diff -r 892c54b52a044ac8dc46fc302ea96f4d755dad9d -r 
b7e498efd0ecd543a870431ea8d34f2882d5ace8 doc/config.txt
--- a/doc/config.txt
+++ b/doc/config.txt
@@ -199,8 +199,9 @@
    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.
+   Note that the ``PATH`` and ``PIP_INDEX_URL`` variables are unconditionally
+   passed down and on Windows ``SYSTEMROOT``, ``PATHEXT``, ``TEMP`` and ``TMP``
+   will be passed down as well whereas on unix ``TMPDIR`` will be passed down.
    You can override these variables with the ``setenv`` option.
 
 .. confval:: recreate=True|False(default)

diff -r 892c54b52a044ac8dc46fc302ea96f4d755dad9d -r 
b7e498efd0ecd543a870431ea8d34f2882d5ace8 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -715,6 +715,7 @@
         else:
             assert "TMPDIR" in envconfig.passenv
         assert "PATH" in envconfig.passenv
+        assert "PIP_INDEX_URL" in envconfig.passenv
         assert "A123A" in envconfig.passenv
         assert "A123B" in envconfig.passenv
 

diff -r 892c54b52a044ac8dc46fc302ea96f4d755dad9d -r 
b7e498efd0ecd543a870431ea8d34f2882d5ace8 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -387,7 +387,7 @@
         help="list of X=Y lines with environment variable settings")
 
     def passenv(testenv_config, value):
-        passenv = set(["PATH"])
+        passenv = set(["PATH", "PIP_INDEX_URL"])
 
         # we ensure that tmp directory settings are passed on
         # we could also set it to the per-venv "envtmpdir"

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
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to