Index: Lib/lib2to3/tests/test_fixers.py =================================================================== --- Lib/lib2to3/tests/test_fixers.py (revision 83104) +++ Lib/lib2to3/tests/test_fixers.py (working copy) @@ -4398,3 +4398,53 @@ def test_unchanged(self): s = """f(sys.exitfunc)""" self.unchanged(s) + + + +class Test_asserts(FixerTestCase): + + fixer = "asserts" + + def test_deprecated_names(self): + for b, a in ( + ('self.assert_(True)', 'self.assertTrue(True)'), + ('self.assertEquals(2, 2)', 'self.assertEqual(2, 2)'), + ('self.assertNotEquals(2, 3)', 'self.assertNotEqual(2, 3)'), + ('self.assertAlmostEquals(2, 3)', 'self.assertAlmostEqual(2, 3)'), + ('self.assertNotAlmostEquals(2, 8)', 'self.assertNotAlmostEqual(2, 8)'), + ('self.failUnlessEqual(2, 2)', 'self.assertEqual(2, 2)'), + ('self.failIfEqual(2, 3)', 'self.assertNotEqual(2, 3)'), + ('self.failUnlessAlmostEqual(2, 3)', 'self.assertAlmostEqual(2, 3)'), + ('self.failIfAlmostEqual(2, 8)', 'self.assertNotAlmostEqual(2, 8)'), + ('self.failUnless(True)', 'self.assertTrue(True)'), + ('self.failUnlessRaises(foo)', 'self.assertRaises(foo)'), + ('self.failIf(False)', 'self.assertFalse(False)'),): + self.check(b, a) + + def test_variants(self): + b = 'eq = self.assertEquals' + a = 'eq = self.assertEqual' + self.check(b, a) + b = 'self.assertEquals(2, 3, msg="fail")' + a = 'self.assertEqual(2, 3, msg="fail")' + self.check(b, a) + b = 'self.assertEquals(2, 3, msg="fail") # foo' + a = 'self.assertEqual(2, 3, msg="fail") # foo' + self.check(b, a) + b = 'self.assertEquals (2, 3)' + a = 'self.assertEqual (2, 3)' + self.check(b, a) + b = ' self.assertEquals (2, 3)' + a = ' self.assertEqual (2, 3)' + self.check(b, a) + b = 'with self.failUnlessRaises(Explosion): explode()' + a = 'with self.assertRaises(Explosion): explode()' + self.check(b, a) + b = 'with self.failUnlessRaises(Explosion) as cm: explode()' + a = 'with self.assertRaises(Explosion) as cm: explode()' + self.check(b, a) + + def test_unchanged(self): + self.unchanged('self.assertEqualsOnSaturday') + self.unchanged('self.assertEqualsOnSaturday(3, 5)') + Index: Lib/lib2to3/fixes/fix_asserts.py =================================================================== --- Lib/lib2to3/fixes/fix_asserts.py (revision 0) +++ Lib/lib2to3/fixes/fix_asserts.py (revision 0) @@ -0,0 +1,31 @@ +"""Fixer that replaces deprecated unittest methods names.""" +# Author: Ezio Melotti + +# Local imports +from .. import fixer_base +from ..fixer_util import Name + +NAMES = dict( + assert_=u'assertTrue', + assertEquals=u'assertEqual', + assertNotEquals=u'assertNotEqual', + assertAlmostEquals=u'assertAlmostEqual', + assertNotAlmostEquals=u'assertNotAlmostEqual', + failUnlessEqual=u'assertEqual', + failIfEqual=u'assertNotEqual', + failUnlessAlmostEqual=u'assertAlmostEqual', + failIfAlmostEqual=u'assertNotAlmostEqual', + failUnless=u'assertTrue', + failUnlessRaises=u'assertRaises', + failIf=u'assertFalse', +) + +class FixAsserts(fixer_base.BaseFix): + + PATTERN = """ + power< any+ trailer< '.' meth=(%s)> any* > + """ % '|'.join(map(repr, NAMES)) + + def transform(self, node, results): + name = results["meth"][0] + name.replace(Name(NAMES[str(name)], prefix=name.prefix))