summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2012-03-02 01:24:13 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2012-03-02 01:24:13 (GMT)
commit2f24d98df08fbed8e7c82a3de1843ef27b779739 (patch)
tree038b097ad8c79e0a8f558437990fedd576f39377
parentbe52d507d2ada0d13ad9e482f00908173d8900f0 (diff)
parentf959618142888fab373c43edd35f20506a9740dc (diff)
downloadcpython-2f24d98df08fbed8e7c82a3de1843ef27b779739.zip
cpython-2f24d98df08fbed8e7c82a3de1843ef27b779739.tar.gz
cpython-2f24d98df08fbed8e7c82a3de1843ef27b779739.tar.bz2
Closes #14158: merged test file resilience fix from 3.2.
-rwxr-xr-xLib/test/regrtest.py23
-rw-r--r--Lib/test/test_base64.py5
-rw-r--r--Lib/test/test_mailbox.py12
3 files changed, 30 insertions, 10 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 871ae61..44d3426 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -749,10 +749,10 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
if bad:
print(count(len(bad), "test"), "failed:")
printlist(bad)
- if environment_changed:
- print("{} altered the execution environment:".format(
- count(len(environment_changed), "test")))
- printlist(environment_changed)
+ if environment_changed:
+ print("{} altered the execution environment:".format(
+ count(len(environment_changed), "test")))
+ printlist(environment_changed)
if skipped and not quiet:
print(count(len(skipped), "test"), "skipped:")
printlist(skipped)
@@ -970,6 +970,7 @@ class saved_test_environment:
'multiprocessing.process._dangling',
'sysconfig._CONFIG_VARS', 'sysconfig._SCHEMES',
'packaging.command._COMMANDS', 'packaging.database_caches',
+ 'support.TESTFN',
)
def get_sys_argv(self):
@@ -1163,6 +1164,20 @@ class saved_test_environment:
sysconfig._SCHEMES._sections.clear()
sysconfig._SCHEMES._sections.update(saved[2])
+ def get_support_TESTFN(self):
+ if os.path.isfile(support.TESTFN):
+ result = 'f'
+ elif os.path.isdir(support.TESTFN):
+ result = 'd'
+ else:
+ result = None
+ return result
+ def restore_support_TESTFN(self, saved_value):
+ if saved_value is None:
+ if os.path.isfile(support.TESTFN):
+ os.unlink(support.TESTFN)
+ elif os.path.isdir(support.TESTFN):
+ shutil.rmtree(support.TESTFN)
def resource_info(self):
for name in self.resources:
diff --git a/Lib/test/test_base64.py b/Lib/test/test_base64.py
index b02f86d..2569476 100644
--- a/Lib/test/test_base64.py
+++ b/Lib/test/test_base64.py
@@ -2,6 +2,7 @@ import unittest
from test import support
import base64
import binascii
+import os
import sys
import subprocess
@@ -274,6 +275,10 @@ class BaseXYTestCase(unittest.TestCase):
class TestMain(unittest.TestCase):
+ def tearDown(self):
+ if os.path.exists(support.TESTFN):
+ os.unlink(support.TESTFN)
+
def get_output(self, *args, **options):
args = (sys.executable, '-m', 'base64') + args
return subprocess.check_output(args, **options)
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 4bb05a4..212ceb9 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -7,6 +7,7 @@ import email
import email.message
import re
import io
+import shutil
import tempfile
from test import support
import unittest
@@ -38,12 +39,7 @@ class TestBase(unittest.TestCase):
def _delete_recursively(self, target):
# Delete a file or delete a directory recursively
if os.path.isdir(target):
- for path, dirs, files in os.walk(target, topdown=False):
- for name in files:
- os.remove(os.path.join(path, name))
- for name in dirs:
- os.rmdir(os.path.join(path, name))
- os.rmdir(target)
+ shutil.rmtree(target)
elif os.path.exists(target):
os.remove(target)
@@ -2028,6 +2024,10 @@ class MaildirTestCase(unittest.TestCase):
def setUp(self):
# create a new maildir mailbox to work with:
self._dir = support.TESTFN
+ if os.path.isdir(self._dir):
+ shutil.rmtree(self._dir)
+ elif os.path.isfile(self._dir):
+ os.unlink(self._dir)
os.mkdir(self._dir)
os.mkdir(os.path.join(self._dir, "cur"))
os.mkdir(os.path.join(self._dir, "tmp"))