Commit 2cebdd48 authored by Georg Brandl's avatar Georg Brandl

Remove unittest methods scheduled for removal in 3.3 -- makes the unittest test suite pass again.

parent fa2c61a2
...@@ -938,77 +938,6 @@ class TestCase(object): ...@@ -938,77 +938,6 @@ class TestCase(object):
standardMsg = self._truncateMessage(standardMsg, diff) standardMsg = self._truncateMessage(standardMsg, diff)
self.fail(self._formatMessage(msg, standardMsg)) self.fail(self._formatMessage(msg, standardMsg))
def assertDictContainsSubset(self, subset, dictionary, msg=None):
"""Checks whether dictionary is a superset of subset."""
warnings.warn('assertDictContainsSubset is deprecated',
DeprecationWarning)
missing = []
mismatched = []
for key, value in subset.items():
if key not in dictionary:
missing.append(key)
elif value != dictionary[key]:
mismatched.append('%s, expected: %s, actual: %s' %
(safe_repr(key), safe_repr(value),
safe_repr(dictionary[key])))
if not (missing or mismatched):
return
standardMsg = ''
if missing:
standardMsg = 'Missing: %s' % ','.join(safe_repr(m) for m in
missing)
if mismatched:
if standardMsg:
standardMsg += '; '
standardMsg += 'Mismatched values: %s' % ','.join(mismatched)
self.fail(self._formatMessage(msg, standardMsg))
def assertSameElements(self, expected_seq, actual_seq, msg=None):
"""An unordered sequence specific comparison.
Raises with an error message listing which elements of expected_seq
are missing from actual_seq and vice versa if any.
Duplicate elements are ignored when comparing *expected_seq* and
*actual_seq*. It is the equivalent of ``assertEqual(set(expected),
set(actual))`` but it works with sequences of unhashable objects as
well.
"""
warnings.warn('assertSameElements is deprecated',
DeprecationWarning)
try:
expected = set(expected_seq)
actual = set(actual_seq)
missing = sorted(expected.difference(actual))
unexpected = sorted(actual.difference(expected))
except TypeError:
# Fall back to slower list-compare if any of the objects are
# not hashable.
expected = list(expected_seq)
actual = list(actual_seq)
try:
expected.sort()
actual.sort()
except TypeError:
missing, unexpected = unorderable_list_difference(expected,
actual)
else:
missing, unexpected = sorted_list_difference(expected, actual)
errors = []
if missing:
errors.append('Expected, but missing:\n %s' %
safe_repr(missing))
if unexpected:
errors.append('Unexpected, but present:\n %s' %
safe_repr(unexpected))
if errors:
standardMsg = '\n'.join(errors)
self.fail(self._formatMessage(msg, standardMsg))
def assertCountEqual(self, first, second, msg=None): def assertCountEqual(self, first, second, msg=None):
"""An unordered sequence comparison asserting that the same elements, """An unordered sequence comparison asserting that the same elements,
regardless of order. If the same element occurs more than once, regardless of order. If the same element occurs more than once,
...@@ -1183,13 +1112,11 @@ class TestCase(object): ...@@ -1183,13 +1112,11 @@ class TestCase(object):
# The fail* methods can be removed in 3.3, the 5 assert* methods will # The fail* methods can be removed in 3.3, the 5 assert* methods will
# have to stay around for a few more versions. See #9424. # have to stay around for a few more versions. See #9424.
failUnlessEqual = assertEquals = _deprecate(assertEqual) assertEquals = _deprecate(assertEqual)
failIfEqual = assertNotEquals = _deprecate(assertNotEqual) assertNotEquals = _deprecate(assertNotEqual)
failUnlessAlmostEqual = assertAlmostEquals = _deprecate(assertAlmostEqual) assertAlmostEquals = _deprecate(assertAlmostEqual)
failIfAlmostEqual = assertNotAlmostEquals = _deprecate(assertNotAlmostEqual) assertNotAlmostEquals = _deprecate(assertNotAlmostEqual)
failUnless = assert_ = _deprecate(assertTrue) assert_ = _deprecate(assertTrue)
failUnlessRaises = _deprecate(assertRaises)
failIf = _deprecate(assertFalse)
assertRaisesRegexp = _deprecate(assertRaisesRegex) assertRaisesRegexp = _deprecate(assertRaisesRegex)
assertRegexpMatches = _deprecate(assertRegex) assertRegexpMatches = _deprecate(assertRegex)
......
...@@ -19,17 +19,12 @@ def warnfun(): ...@@ -19,17 +19,12 @@ def warnfun():
warnings.warn('rw', RuntimeWarning) warnings.warn('rw', RuntimeWarning)
class TestWarnings(unittest.TestCase): class TestWarnings(unittest.TestCase):
# unittest warnings will be printed at most once per type (max one message # unittest warnings will be printed at most once per type
# for the fail* methods, and one for the assert* methods)
def test_assert(self): def test_assert(self):
self.assertEquals(2+2, 4) self.assertEquals(2+2, 4)
self.assertEquals(2*2, 4) self.assertEquals(2*2, 4)
self.assertEquals(2**2, 4) self.assertEquals(2**2, 4)
def test_fail(self):
self.failUnless(1)
self.failUnless(True)
def test_other_unittest(self): def test_other_unittest(self):
self.assertAlmostEqual(2+2, 4) self.assertAlmostEqual(2+2, 4)
self.assertNotAlmostEqual(4+4, 2) self.assertNotAlmostEqual(4+4, 2)
......
...@@ -223,15 +223,6 @@ class TestLongMessage(unittest.TestCase): ...@@ -223,15 +223,6 @@ class TestLongMessage(unittest.TestCase):
"\+ \{'key': 'value'\}$", "\+ \{'key': 'value'\}$",
"\+ \{'key': 'value'\} : oops$"]) "\+ \{'key': 'value'\} : oops$"])
def testAssertDictContainsSubset(self):
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
self.assertMessages('assertDictContainsSubset', ({'key': 'value'}, {}),
["^Missing: 'key'$", "^oops$",
"^Missing: 'key'$",
"^Missing: 'key' : oops$"])
def testAssertMultiLineEqual(self): def testAssertMultiLineEqual(self):
self.assertMessages('assertMultiLineEqual', ("", "foo"), self.assertMessages('assertMultiLineEqual', ("", "foo"),
[r"\+ foo$", "^oops$", [r"\+ foo$", "^oops$",
......
...@@ -488,36 +488,6 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): ...@@ -488,36 +488,6 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
self.assertRaises(self.failureException, self.assertNotIn, 'cow', self.assertRaises(self.failureException, self.assertNotIn, 'cow',
animals) animals)
def testAssertDictContainsSubset(self):
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
self.assertDictContainsSubset({}, {})
self.assertDictContainsSubset({}, {'a': 1})
self.assertDictContainsSubset({'a': 1}, {'a': 1})
self.assertDictContainsSubset({'a': 1}, {'a': 1, 'b': 2})
self.assertDictContainsSubset({'a': 1, 'b': 2}, {'a': 1, 'b': 2})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({1: "one"}, {})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 2}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'c': 1}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
one = ''.join(chr(i) for i in range(255))
# this used to cause a UnicodeDecodeError constructing the failure msg
with self.assertRaises(self.failureException):
self.assertDictContainsSubset({'foo': one}, {'foo': '\uFFFD'})
def testAssertEqual(self): def testAssertEqual(self):
equal_pairs = [ equal_pairs = [
((), ()), ((), ()),
...@@ -1094,20 +1064,11 @@ test case ...@@ -1094,20 +1064,11 @@ test case
have to stay around for a few more versions. See #9424. have to stay around for a few more versions. See #9424.
""" """
old = ( old = (
(self.failIfEqual, (3, 5)),
(self.assertNotEquals, (3, 5)), (self.assertNotEquals, (3, 5)),
(self.failUnlessEqual, (3, 3)),
(self.assertEquals, (3, 3)), (self.assertEquals, (3, 3)),
(self.failUnlessAlmostEqual, (2.0, 2.0)),
(self.assertAlmostEquals, (2.0, 2.0)), (self.assertAlmostEquals, (2.0, 2.0)),
(self.failIfAlmostEqual, (3.0, 5.0)),
(self.assertNotAlmostEquals, (3.0, 5.0)), (self.assertNotAlmostEquals, (3.0, 5.0)),
(self.failUnless, (True,)),
(self.assert_, (True,)), (self.assert_, (True,)),
(self.failUnlessRaises, (TypeError, lambda _: 3.14 + 'spam')),
(self.failIf, (False,)),
(self.assertSameElements, ([1, 1, 2, 3], [1, 2, 3])),
(self.assertDictContainsSubset, (dict(a=1, b=2), dict(a=1, b=2, c=3))),
(self.assertRaisesRegexp, (KeyError, 'foo', lambda: {}['foo'])), (self.assertRaisesRegexp, (KeyError, 'foo', lambda: {}['foo'])),
(self.assertRegexpMatches, ('bar', 'bar')), (self.assertRegexpMatches, ('bar', 'bar')),
) )
...@@ -1115,19 +1076,6 @@ test case ...@@ -1115,19 +1076,6 @@ test case
with self.assertWarns(DeprecationWarning): with self.assertWarns(DeprecationWarning):
meth(*args) meth(*args)
def testDeprecatedFailMethods(self):
"""Test that the deprecated fail* methods get removed in 3.3"""
if sys.version_info[:2] < (3, 3):
return
deprecated_names = [
'failIfEqual', 'failUnlessEqual', 'failUnlessAlmostEqual',
'failIfAlmostEqual', 'failUnless', 'failUnlessRaises', 'failIf',
'assertSameElements', 'assertDictContainsSubset',
]
for deprecated_name in deprecated_names:
with self.assertRaises(AttributeError):
getattr(self, deprecated_name) # remove these in 3.3
def testDeepcopy(self): def testDeepcopy(self):
# Issue: 5660 # Issue: 5660
class TestableTest(unittest.TestCase): class TestableTest(unittest.TestCase):
......
...@@ -257,19 +257,17 @@ class Test_TextTestRunner(unittest.TestCase): ...@@ -257,19 +257,17 @@ class Test_TextTestRunner(unittest.TestCase):
return [b.splitlines() for b in p.communicate()] return [b.splitlines() for b in p.communicate()]
opts = dict(stdout=subprocess.PIPE, stderr=subprocess.PIPE, opts = dict(stdout=subprocess.PIPE, stderr=subprocess.PIPE,
cwd=os.path.dirname(__file__)) cwd=os.path.dirname(__file__))
ae_msg = b'Please use assertEqual instead.'
at_msg = b'Please use assertTrue instead.'
# no args -> all the warnings are printed, unittest warnings only once # no args -> all the warnings are printed, unittest warnings only once
p = subprocess.Popen([sys.executable, '_test_warnings.py'], **opts) p = subprocess.Popen([sys.executable, '_test_warnings.py'], **opts)
out, err = get_parse_out_err(p) out, err = get_parse_out_err(p)
self.assertIn(b'OK', err) self.assertIn(b'OK', err)
# check that the total number of warnings in the output is correct # check that the total number of warnings in the output is correct
self.assertEqual(len(out), 12) self.assertEqual(len(out), 11)
# check that the numbers of the different kind of warnings is correct # check that the numbers of the different kind of warnings is correct
for msg in [b'dw', b'iw', b'uw']: for msg in [b'dw', b'iw', b'uw']:
self.assertEqual(out.count(msg), 3) self.assertEqual(out.count(msg), 3)
for msg in [ae_msg, at_msg, b'rw']: for msg in [b'rw']:
self.assertEqual(out.count(msg), 1) self.assertEqual(out.count(msg), 1)
args_list = ( args_list = (
...@@ -294,11 +292,9 @@ class Test_TextTestRunner(unittest.TestCase): ...@@ -294,11 +292,9 @@ class Test_TextTestRunner(unittest.TestCase):
**opts) **opts)
out, err = get_parse_out_err(p) out, err = get_parse_out_err(p)
self.assertIn(b'OK', err) self.assertIn(b'OK', err)
self.assertEqual(len(out), 14) self.assertEqual(len(out), 13)
for msg in [b'dw', b'iw', b'uw', b'rw']: for msg in [b'dw', b'iw', b'uw', b'rw']:
self.assertEqual(out.count(msg), 3) self.assertEqual(out.count(msg), 3)
for msg in [ae_msg, at_msg]:
self.assertEqual(out.count(msg), 1)
def testStdErrLookedUpAtInstantiationTime(self): def testStdErrLookedUpAtInstantiationTime(self):
# see issue 10786 # see issue 10786
......
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