[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