]> granicus.if.org Git - python/commitdiff
Fix unittest.TestCase.assertDictContainsSubset so it can't die with unicode issues...
authorMichael Foord <fuzzyman@voidspace.org.uk>
Thu, 18 Feb 2010 21:37:07 +0000 (21:37 +0000)
committerMichael Foord <fuzzyman@voidspace.org.uk>
Thu, 18 Feb 2010 21:37:07 +0000 (21:37 +0000)
Lib/test/test_unittest.py
Lib/unittest/case.py

index 7b6922c620923f8eb0d81c712d93da9cc54d22c9..d3bab2af86f732e700da5ae9a23d70ffbd1a3905 100644 (file)
@@ -2573,13 +2573,10 @@ class Test_TestCase(TestCase, TestEquality, TestHashing):
         with self.assertRaises(self.failureException):
             self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
 
-    @unittest.expectedFailure
-    def test_crazy(self):
         one = ''.join(chr(i) for i in range(255))
-        two = u'\uFFFD'
-        first = {'foo': one}
-        second = {'foo': two}
-        self.assertDictContainsSubset(first, second)
+        # this used to cause a UnicodeDecodeError constructing the failure msg
+        with self.assertRaises(self.failureException):
+            self.assertDictContainsSubset({'foo': one}, {'foo': u'\uFFFD'})
 
     def testAssertEqual(self):
         equal_pairs = [
index 1ee935ace303b3e49fa06d4044bf3e2f3da06ce1..8de36d7512b53de0484c7bc199aa1770b159b0a5 100644 (file)
@@ -163,7 +163,7 @@ class TestCase(object):
         try:
             testMethod = getattr(self, methodName)
         except AttributeError:
-            raise ValueError("no such test method in %s: %s" % \
+            raise ValueError("no such test method in %s: %s" %
                   (self.__class__, methodName))
         self._testMethodDoc = testMethod.__doc__
         self._cleanups = []
@@ -697,7 +697,7 @@ class TestCase(object):
         """Just like self.assertTrue(a is b), but with a nicer default message."""
         if expr1 is not expr2:
             standardMsg = '%s is not %s' % (safe_repr(expr1),
-                                            safe_repr(expr2))
+                                             safe_repr(expr2))
             self.fail(self._formatMessage(msg, standardMsg))
 
     def assertIsNot(self, expr1, expr2, msg=None):
@@ -725,7 +725,8 @@ class TestCase(object):
                 missing.append(key)
             elif value != actual[key]:
                 mismatched.append('%s, expected: %s, actual: %s' %
-                                  (key, value, actual[key]))
+                                  (safe_repr(key), safe_repr(value),
+                                   safe_repr(actual[key])))
 
         if not (missing or mismatched):
             return