summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorR. David Murray <rdmurray@bitdance.com>2009-10-05 17:03:09 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2009-10-05 17:03:09 (GMT)
commitabe3d3ec85893dcb6c0e5851fc607ced61b3336e (patch)
tree08c3c653ff8dbd01430dd0e2889c582bb5bd6c03
parent245d915e3ecba012b3d42d750460997e3e0a95d4 (diff)
downloadcpython-abe3d3ec85893dcb6c0e5851fc607ced61b3336e.zip
cpython-abe3d3ec85893dcb6c0e5851fc607ced61b3336e.tar.gz
cpython-abe3d3ec85893dcb6c0e5851fc607ced61b3336e.tar.bz2
Issue #7058: Added save/restore for argv and os.environ to runtest_inner
in regrtest, with warnings if the called test modifies them.
-rwxr-xr-xLib/test/regrtest.py15
-rw-r--r--Misc/NEWS3
2 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 3569bf2..e8c36f4 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -641,6 +641,10 @@ def runtest_inner(test, verbose, quiet,
refleak = False # True if the test leaked references.
try:
save_stdout = sys.stdout
+ # Save various things that tests may mess up so we can restore
+ # them afterward.
+ save_environ = dict(os.environ)
+ save_argv = sys.argv[:]
try:
if capture_stdout:
sys.stdout = capture_stdout
@@ -663,6 +667,17 @@ def runtest_inner(test, verbose, quiet,
test_time = time.time() - start_time
finally:
sys.stdout = save_stdout
+ # Restore what we saved if needed, but also complain if the test
+ # changed it so that the test may eventually get fixed.
+ if not os.environ == save_environ:
+ if not quiet:
+ print "Warning: os.environ was modified by", test
+ os.environ.clear()
+ os.environ.update(save_environ)
+ if not sys.argv == save_argv:
+ if not quiet:
+ print "Warning: argv was modified by", test
+ sys.argv[:] = save_argv
except test_support.ResourceDenied, msg:
if not quiet:
print test, "skipped --", msg
diff --git a/Misc/NEWS b/Misc/NEWS
index 2e052fa..2b55de2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1436,6 +1436,9 @@ Extension Modules
Tests
-----
+- Issue #7058: Added save/restore for argv and os.environ to runtest_inner
+ in regrtest, with warnings if the called test modifies them.
+
- Issue #7042: Fix test_signal (test_itimer_virtual) failure on OS X 10.6.
- Issue #6806: test_platform failed under OS X 10.6.0 because ``sw_ver`` leaves