[Treepkg-commits] r49 - in trunk: test treepkg
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu May 22 14:44:43 CEST 2008
Author: bh
Date: 2008-05-22 14:44:43 +0200 (Thu, 22 May 2008)
New Revision: 49
Modified:
trunk/test/test_run.py
trunk/treepkg/run.py
Log:
New parameter treepkg.run.call: extra_env for additional environment
variables passed to the subprocess. Also add a test case.
Modified: trunk/test/test_run.py
===================================================================
--- trunk/test/test_run.py 2008-05-22 10:40:08 UTC (rev 48)
+++ trunk/test/test_run.py 2008-05-22 12:44:43 UTC (rev 49)
@@ -28,3 +28,23 @@
self.assertEquals(exc.returncode, 1)
else:
self.fail("call did not raise an exception")
+
+ def test_call_extra_env(self):
+ """Test call with the extra_env parameter"""
+ subprocess_cmd = [sys.executable, "-c",
+ "import sys, os;"
+ "value = os.environ.get('TREEPKG_TEST');"
+ "sys.exit(int(value != 'xyzzy'))"
+ ]
+ # sanity check that the extra environment variable we use for
+ # the test is not set yet
+ self.assertRaises(SubprocessError, call, subprocess_cmd)
+
+ # the actual test
+ try:
+ call(subprocess_cmd, extra_env=dict(TREEPKG_TEST="xyzzy"))
+ except SubprocessError, exc:
+ self.fail("the extra_env variables were not set properly")
+ else:
+ # test OK
+ pass
Modified: trunk/treepkg/run.py
===================================================================
--- trunk/treepkg/run.py 2008-05-22 10:40:08 UTC (rev 48)
+++ trunk/treepkg/run.py 2008-05-22 12:44:43 UTC (rev 49)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007 by Intevation GmbH
+# Copyright (C) 2007, 2008 by Intevation GmbH
# Authors:
# Bernhard Herzog <bh at intevation.de>
#
@@ -20,7 +20,7 @@
self.returncode = returncode
-def call(command, suppress_output=False, **kw):
+def call(command, suppress_output=False, extra_env=None, **kw):
"""Run command as a subprocess and wait until it is finished.
The command should be given as a list of strings to avoid problems
@@ -30,7 +30,12 @@
if suppress_output:
kw["stdout"] = open(os.devnull, "w")
kw["stderr"] = open(os.devnull, "w")
- ret = subprocess.call(command, **kw)
+ env = kw.pop("env", None)
+ if extra_env:
+ if env is None:
+ env = os.environ.copy()
+ env.update(extra_env)
+ ret = subprocess.call(command, env=env, **kw)
if ret != 0:
raise SubprocessError(command, ret)
More information about the Treepkg-commits
mailing list