[PATCH v4] run-tests: try to provide a test.env file

timeless timeless at mozdev.org
Wed Mar 30 02:31:44 EDT 2016


# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1459319293 0
#      Wed Mar 30 06:28:13 2016 +0000
# Node ID a676aeec04c67f873c8940de1b870ebbbb5cc26b
# Parent  ff0d3b6b287f89594bd8d0308fe2810d2a18ea01
run-tests: try to provide a test.env file

This is a step to providing an environment file that people can use
to reproduce a failing test environment.

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -739,6 +739,21 @@
             log('\nKeeping testtmp dir: %s\nKeeping threadtmp dir: %s' %
                 (self._testtmp.decode('utf-8'),
                  self._threadtmp.decode('utf-8')))
+            env = self._getenv()
+            def format(k, v):
+                """Posix environment format"""
+                return '%s="%s"\nexport %s\n' % (k, v.replace('"', r'\"'), k)
+            with open(os.path.join(self._threadtmp, b'test.env'), 'wb') as f:
+                keys = sorted(env.keys())
+                for k in keys:
+                    v = env[k].encode('utf-8').replace(b'"', b'\\"')
+                    f.write(b'%s="%s"\n' % (k.encode('utf-8'), v))
+                exports = " ".join(keys).encode('utf-8')
+                f.write(b"export %s\n" % (exports))
+                keep = "|".join(keys).encode('utf-8')
+                f.write(b"for i in $(env | sed -e 's/=.*//' |\n")
+                f.write(b"egrep -v '%s');\n " % keep)
+                f.write(b"do unset $i ; done\n")
         else:
             shutil.rmtree(self._testtmp, True)
             shutil.rmtree(self._threadtmp, True)
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -489,6 +489,19 @@
   .
   # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
 
+  $ egrep 'HGEDITOR|HGPORT|PYTHONHASHSEED|PYTHONPATH|HGPORT|DAEMON_PIDS|EMAIL|PYTHON$|PYTHON=' \
+  > keep/child1/test.env |grep -v egrep| sort
+  DAEMON_PIDS="$TESTTMP/keep/child1/daemon.pids" (glob)
+  EMAIL="Foo Bar <foo.bar at example.com>"
+  HGEDITOR="* -c \"import sys; sys.exit(0)\"" (glob)
+  HGPORT1="*" (glob)
+  HGPORT2="*" (glob)
+  HGPORT="*" (glob)
+  PYTHON="*" (glob)
+  PYTHONHASHSEED="*" (glob)
+  PYTHONPATH="*:$TESTTMP:*" (glob)
+  export *DAEMON_PIDS*EMAIL*HGEDITOR*HGPORT*HGPORT1*HGPORT2*PYTHON*PYTHONHASHSEED*PYTHONPATH* (glob)
+
 timeouts
 ========
   $ cat > test-timeout.t <<EOF


More information about the Mercurial-devel mailing list