Kaydet (Commit) 48581c5f authored tarafından Brett Cannon's avatar Brett Cannon

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

running test file.

Closes issue2407. Thanks Jerry Seutter.
üst a0ce6b6b
...@@ -5,7 +5,9 @@ ...@@ -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: ...@@ -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:
......
...@@ -211,8 +211,8 @@ class TestVectorsTestCase(unittest.TestCase): ...@@ -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): ...@@ -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()
......
...@@ -75,7 +75,7 @@ class TestUnicodeFiles(unittest.TestCase): ...@@ -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): ...@@ -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): ...@@ -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): ...@@ -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"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment