[PATCH V2] tests: make run-tests.py invokes tests with needed variables only (issue5069)
liscju
piotr.listkiewicz at gmail.com
Mon Mar 28 11:52:31 UTC 2016
# HG changeset patch
# User liscju <piotr.listkiewicz at gmail.com>
# Date 1459165803 -7200
# Mon Mar 28 13:50:03 2016 +0200
# Node ID 45bfa9d1d1b38f3f3e938b6246337ecb90bb397d
# Parent 345f4fa4cc8912bb722ad3e35d68858487420bc6
tests: make run-tests.py invokes tests with needed variables only (issue5069)
It introduces usedenvvariables list which contains all used environment
variables used in run-tests.py and in tests directory.
diff -r 345f4fa4cc89 -r 45bfa9d1d1b3 tests/run-tests.py
--- a/tests/run-tests.py Fri Mar 25 16:23:23 2016 -0500
+++ b/tests/run-tests.py Mon Mar 28 13:50:03 2016 +0200
@@ -69,6 +69,18 @@ except ImportError:
from xml.dom import minidom
import unittest
+usedenvvariables = set([
+ 'BINDIR', 'CHGHG', 'CHGSOCKNAME', 'COLUMNS',
+ 'COVERAGE_DIR', 'COVERAGE_PROCESS_START',
+ 'DAEMON_PIDS', 'EMAIL', 'HGEDITOR', 'HGENCODING',
+ 'HGENCODINGMODE', 'HGMERGE', 'HGRCPATH',
+ 'HGTEST_RUN_TESTS_PURE', 'HGTEST_SLOW', 'HGTMP',
+ 'HGUSER', 'HOME', 'LANG', 'LANGUAGE', 'LC_ALL',
+ 'MSYSTEM', 'PATH', 'PYTHON', 'PYTHON3',
+ 'PYTHONHASHSEED', 'RUNTESTDIR', 'TERM', 'TESTDIR',
+ 'TESTTMP', 'TMP', 'TZ', 'PYTHONPATH'
+])
+
osenvironb = getattr(os, 'environb', os.environ)
processlock = threading.Lock()
@@ -469,6 +481,9 @@ def killdaemons(pidfile):
return killmod.killdaemons(pidfile, tryhard=False, remove=True,
logfn=vlog)
+def copyusedenviron(environ):
+ return {key: environ[key] for key in usedenvvariables if key in environ}
+
class Test(unittest.TestCase):
"""Encapsulates a single, runnable test.
@@ -801,7 +816,7 @@ class Test(unittest.TestCase):
def defineport(i):
offset = '' if i == 0 else '%s' % i
env["HGPORT%s" % offset] = '%s' % (self._startport + i)
- env = os.environ.copy()
+ env = copyusedenviron(os.environ)
env['TESTTMP'] = self._testtmp
env['HOME'] = self._testtmp
# This number should match portneeded in _getport
@@ -825,16 +840,6 @@ class Test(unittest.TestCase):
env['COLUMNS'] = '80'
env['TERM'] = 'xterm'
- for k in ('HG HGPROF CDPATH GREP_OPTIONS http_proxy no_proxy ' +
- 'NO_PROXY').split():
- if k in env:
- del env[k]
-
- # unset env related to hooks
- for k in env.keys():
- if k.startswith('HG_'):
- del env[k]
-
if self._usechg:
env['CHGSOCKNAME'] = os.path.join(self._chgsockdir, b'server')
More information about the Mercurial-devel
mailing list