diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py
index 6c18715..c57ac7f 100644
--- a/Lib/test/test_hmac.py
+++ b/Lib/test/test_hmac.py
@@ -211,8 +211,8 @@
             def digest(self):
                 return self._x.digest()
 
-        warnings.simplefilter('error', RuntimeWarning)
-        try:
+        with test_support.catch_warning():
+            warnings.simplefilter('error', RuntimeWarning)
             try:
                 hmac.HMAC('a', 'b', digestmod=MockCrazyHash)
             except RuntimeWarning:
@@ -227,8 +227,6 @@
                 pass
             else:
                 self.fail('Expected warning about small block_size')
-        finally:
-            warnings.resetwarnings()
 
 
 
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index ee2960a..305f98b 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -75,7 +75,7 @@
 
     # 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.
-    def _do_equivilent(self, filename1, filename2):
+    def _do_equivalent(self, filename1, filename2):
         # Note we only check "filename1 against filename2" - we don't bother
         # checking "filename2 against 1", as we assume we are called again with
         # the args reversed.
@@ -98,31 +98,20 @@
         os.rename(filename1 + ".new", filename2)
         self.failUnless(os.path.isfile(filename2))
 
-        # Try using shutil on the filenames.
-        try:
-            filename1==filename2
-        except UnicodeDecodeError:
-            # these filenames can't be compared - shutil.copy tries to do
-            # just that.  This is really a bug in 'shutil' - if one of shutil's
-            # 2 params are Unicode and the other isn't, it should coerce the
-            # string to Unicode with the filesystem encoding before comparison.
-            pass
-        else:
-            # filenames can be compared.
-            shutil.copy(filename1, filename2 + ".new")
-            os.unlink(filename1 + ".new") # remove using equiv name.
-            # And a couple of moves, one using each name.
-            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")
+        shutil.copy(filename1, filename2 + ".new")
+        os.unlink(filename1 + ".new") # remove using equiv name.
+        # And a couple of moves, one using each name.
+        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):
         cwd = os.getcwd()
@@ -173,7 +162,7 @@
         f = file(filename1, "w")
         f.close()
         try:
-            self._do_equivilent(filename1, filename2)
+            self._do_equivalent(filename1, filename2)
         finally:
             os.unlink(filename1)
 
@@ -190,7 +179,7 @@
         self._test_equivalent(TESTFN_UNICODE, TESTFN_ENCODED)
 
     def test_directories(self):
-        # For all 'equivilent' combinations:
+        # For all 'equivalent' combinations:
         #  Make dir with encoded, chdir with unicode, checkdir with encoded
         #  (or unicode/encoded/unicode, etc
         ext = ".dir"
