Kaydet (Commit) c2294dd6 authored tarafından Michael Foord's avatar Michael Foord

Fix unittest.TestCase.assertDictContainsSubset so it can't die with unicode…

Fix unittest.TestCase.assertDictContainsSubset so it can't die with unicode issues when constructing failure messages. Issue 7956
üst 225a099f
......@@ -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 = [
......
......@@ -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
......
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