Make sure that the warnings filter is not reset or changed beyond the current

running test file.

Closes issue2407. Thanks Jerry Seutter.
This commit is contained in:
Brett Cannon 2008-03-19 23:01:17 +00:00
parent a0ce6b6b71
commit 48581c5f08
3 changed files with 24 additions and 36 deletions

View file

@ -5,7 +5,9 @@
import shutil import shutil
import tempfile import tempfile
from test.test_support import catch_warning
import warnings import warnings
try: try:
# For Pythons w/distutils and add-on pybsddb # For Pythons w/distutils and add-on pybsddb
from bsddb3 import db from bsddb3 import db
@ -33,12 +35,11 @@ class Context:
del self.the_txn del self.the_txn
warnings.filterwarnings('ignore', 'DBTxn aborted in destructor') with catch_warning():
try: warnings.filterwarnings('ignore', 'DBTxn aborted in destructor')
context = Context() context = Context()
del context del context
finally:
warnings.resetwarnings()
# try not to leave a turd # try not to leave a turd
try: try:

View file

@ -211,8 +211,8 @@ class TestVectorsTestCase(unittest.TestCase):
def digest(self): def digest(self):
return self._x.digest() return self._x.digest()
warnings.simplefilter('error', RuntimeWarning) with test_support.catch_warning():
try: warnings.simplefilter('error', RuntimeWarning)
try: try:
hmac.HMAC('a', 'b', digestmod=MockCrazyHash) hmac.HMAC('a', 'b', digestmod=MockCrazyHash)
except RuntimeWarning: except RuntimeWarning:
@ -227,8 +227,6 @@ class TestVectorsTestCase(unittest.TestCase):
pass pass
else: else:
self.fail('Expected warning about small block_size') self.fail('Expected warning about small block_size')
finally:
warnings.resetwarnings()

View file

@ -75,7 +75,7 @@ class TestUnicodeFiles(unittest.TestCase):
# Do as many "equivalancy' tests as we can - ie, check that although we # Do as many "equivalancy' tests as we can - ie, check that although we
# have different types for the filename, they refer to the same file. # have different types for the filename, they refer to the same file.
def _do_equivilent(self, filename1, filename2): def _do_equivalent(self, filename1, filename2):
# Note we only check "filename1 against filename2" - we don't bother # Note we only check "filename1 against filename2" - we don't bother
# checking "filename2 against 1", as we assume we are called again with # checking "filename2 against 1", as we assume we are called again with
# the args reversed. # the args reversed.
@ -98,31 +98,20 @@ class TestUnicodeFiles(unittest.TestCase):
os.rename(filename1 + ".new", filename2) os.rename(filename1 + ".new", filename2)
self.failUnless(os.path.isfile(filename2)) self.failUnless(os.path.isfile(filename2))
# Try using shutil on the filenames. shutil.copy(filename1, filename2 + ".new")
try: os.unlink(filename1 + ".new") # remove using equiv name.
filename1==filename2 # And a couple of moves, one using each name.
except UnicodeDecodeError: shutil.move(filename1, filename2 + ".new")
# these filenames can't be compared - shutil.copy tries to do self.failUnless(not os.path.exists(filename2))
# just that. This is really a bug in 'shutil' - if one of shutil's shutil.move(filename1 + ".new", filename2)
# 2 params are Unicode and the other isn't, it should coerce the self.failUnless(os.path.exists(filename1))
# string to Unicode with the filesystem encoding before comparison. # Note - due to the implementation of shutil.move,
pass # it tries a rename first. This only fails on Windows when on
else: # different file systems - and this test can't ensure that.
# filenames can be compared. # So we test the shutil.copy2 function, which is the thing most
shutil.copy(filename1, filename2 + ".new") # likely to fail.
os.unlink(filename1 + ".new") # remove using equiv name. shutil.copy2(filename1, filename2 + ".new")
# And a couple of moves, one using each name. os.unlink(filename1 + ".new")
shutil.move(filename1, filename2 + ".new")
self.failUnless(not os.path.exists(filename2))
shutil.move(filename1 + ".new", filename2)
self.failUnless(os.path.exists(filename1))
# Note - due to the implementation of shutil.move,
# it tries a rename first. This only fails on Windows when on
# different file systems - and this test can't ensure that.
# So we test the shutil.copy2 function, which is the thing most
# likely to fail.
shutil.copy2(filename1, filename2 + ".new")
os.unlink(filename1 + ".new")
def _do_directory(self, make_name, chdir_name, encoded): def _do_directory(self, make_name, chdir_name, encoded):
cwd = os.getcwd() cwd = os.getcwd()
@ -173,7 +162,7 @@ class TestUnicodeFiles(unittest.TestCase):
f = file(filename1, "w") f = file(filename1, "w")
f.close() f.close()
try: try:
self._do_equivilent(filename1, filename2) self._do_equivalent(filename1, filename2)
finally: finally:
os.unlink(filename1) os.unlink(filename1)
@ -190,7 +179,7 @@ class TestUnicodeFiles(unittest.TestCase):
self._test_equivalent(TESTFN_UNICODE, TESTFN_ENCODED) self._test_equivalent(TESTFN_UNICODE, TESTFN_ENCODED)
def test_directories(self): def test_directories(self):
# For all 'equivilent' combinations: # For all 'equivalent' combinations:
# Make dir with encoded, chdir with unicode, checkdir with encoded # Make dir with encoded, chdir with unicode, checkdir with encoded
# (or unicode/encoded/unicode, etc # (or unicode/encoded/unicode, etc
ext = ".dir" ext = ".dir"