]> granicus.if.org Git - python/commitdiff
Merged revisions 75279 via svnmerge from
authorR. David Murray <rdmurray@bitdance.com>
Wed, 7 Oct 2009 23:54:53 +0000 (23:54 +0000)
committerR. David Murray <rdmurray@bitdance.com>
Wed, 7 Oct 2009 23:54:53 +0000 (23:54 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r75279 | r.david.murray | 2009-10-07 19:38:55 -0400 (Wed, 07 Oct 2009) | 10 lines

  Merged revisions 75255 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r75255 | r.david.murray | 2009-10-05 13:03:09 -0400 (Mon, 05 Oct 2009) | 3 lines

    Issue #7058: Added save/restore for argv and os.environ to runtest_inner
    in regrtest, with warnings if the called test modifies them.
  ........
................

Lib/test/regrtest.py
Misc/NEWS

index e98a99aa85ba649382bbe7301a29485425682b22..0c01cd2beacf7a061eca136c670e163fc5f655af 100755 (executable)
@@ -598,6 +598,10 @@ def runtest_inner(test, generate, verbose, quiet, test_times,
     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 cfp:
                 sys.stdout = cfp
@@ -622,6 +626,17 @@ def runtest_inner(test, generate, verbose, quiet, test_times,
             test_times.append((test_time, test))
         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 support.ResourceDenied as msg:
         if not quiet:
             print(test, "skipped --", msg)
index 4b6ff0b514d1c7e1431999e9f1846d23f1016f24..96ad164caf6524241fbc99df2521effe5f368f0a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -79,6 +79,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.
 
 Build