[TIP] RFC: tox-2.0 to restrict/isolate env variables in test runs

holger krekel holger at merlinux.eu
Sun Apr 19 00:31:11 PDT 2015


Hi tox users,

for tox-2.0 i'd like to introduce environment variable isolation.  The
idea is that only a minimal default set of environment variables is
transferred to the test environment in contrast to the tox<2.0 where
all environment variables are copied to the test run.  With tox-2.0 one
can thus make sure tests don't depend on random env variables but only
those which are specified with tox.ini.

If you want to transfer any other variables you'd have to use a new "passenv"
setting.  For example to pass through the content of LANG (used for locale settings)
and typical home-directory settings (on win32 and unix):

    [testenv]
    passenv = LANG HOME HOMEDIR HOMEDRIVE

If an env variable does not exist it is ignored, remains unset in the test run.
This allows to uncover hidden envvar dependencies and explicitely control them.
FYI you can today already use the "setenv" option to specify env vars::

    [testenv]
    setenv =
        MYENV = somesetting

But there is no way to prevent/exclude env variables to be copied to the test run
from the environment variable set with which you invoke tox.

For a somewhat smoother transition it might make sense to default to the
old behaviour (transfer all env variables) with tox-2.0.X and assume passenv
transfers all variables via a default "*" setting but issue a warning
and with tox-2.1 then default to an empty passenv setting.

comments welcome,
holger

-- 
about me:    http://holgerkrekel.net/about-me/
contracting: http://merlinux.eu



More information about the testing-in-python mailing list