]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #18401: Fix test_pdb on Windows
authorVictor Stinner <victor.stinner@gmail.com>
Sat, 10 Sep 2016 06:22:09 +0000 (23:22 -0700)
committerVictor Stinner <victor.stinner@gmail.com>
Sat, 10 Sep 2016 06:22:09 +0000 (23:22 -0700)
* Use "with Popen" to cleanup properly the process
* Use support.temp_cwd() to properly change the working directory
* Use environ.pop() to cleanup the code

Lib/test/test_pdb.py

index 2076e2f3e0c92bdd35f43b8648801c342ab7b799..74417c15bfeba9cf7bfdf255a0c4d6da08c79f1b 100644 (file)
@@ -4,7 +4,6 @@ import doctest
 import os
 import pdb
 import sys
-import tempfile
 import types
 import unittest
 import subprocess
@@ -1057,19 +1056,15 @@ class PdbTestCase(unittest.TestCase):
 
 
     def test_readrc_kwarg(self):
-        save_home = os.environ.get('HOME', None)
-        save_dir = os.getcwd()
         script = textwrap.dedent("""
             import pdb; pdb.Pdb(readrc=False).set_trace()
 
             print('hello')
         """)
-        try:
-            if save_home is not None:
-                del os.environ['HOME']
 
-            with tempfile.TemporaryDirectory() as dirname:
-                os.chdir(dirname)
+        save_home = os.environ.pop('HOME', None)
+        try:
+            with support.temp_cwd():
                 with open('.pdbrc', 'w') as f:
                     f.write("invalid\n")
 
@@ -1083,16 +1078,14 @@ class PdbTestCase(unittest.TestCase):
                     stdin=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                 )
-                self.addCleanup(proc.stdout.close)
-                self.addCleanup(proc.stderr.close)
-                stdout, stderr = proc.communicate(b'q\n')
-                self.assertNotIn("NameError: name 'invalid' is not defined",
-                              stdout.decode())
+                with proc:
+                    stdout, stderr = proc.communicate(b'q\n')
+                    self.assertNotIn("NameError: name 'invalid' is not defined",
+                                  stdout.decode())
 
         finally:
             if save_home is not None:
                 os.environ['HOME'] = save_home
-            os.chdir(save_dir)
 
     def tearDown(self):
         support.unlink(support.TESTFN)