changeset: 97461:977e60f597de parent: 97459:2a0c04260bd4 parent: 97460:738de9a9a3ea user: Robert Collins date: Thu Aug 20 11:13:38 2015 +1200 files: Misc/ACKS Misc/NEWS description: Issue #20362: Honour TestCase.longMessage correctly in assertRegex. Patch from Ilia Kurenkov. diff -r 2a0c04260bd4 -r 977e60f597de Lib/unittest/case.py --- a/Lib/unittest/case.py Thu Aug 20 10:48:46 2015 +1200 +++ b/Lib/unittest/case.py Thu Aug 20 11:13:38 2015 +1200 @@ -1279,8 +1279,10 @@ assert expected_regex, "expected_regex must not be empty." expected_regex = re.compile(expected_regex) if not expected_regex.search(text): - msg = msg or "Regex didn't match" - msg = '%s: %r not found in %r' % (msg, expected_regex.pattern, text) + standardMsg = "Regex didn't match: %r not found in %r" % ( + expected_regex.pattern, text) + # _formatMessage ensures the longMessage option is respected + msg = self._formatMessage(msg, standardMsg) raise self.failureException(msg) def assertNotRegex(self, text, unexpected_regex, msg=None): @@ -1289,11 +1291,12 @@ unexpected_regex = re.compile(unexpected_regex) match = unexpected_regex.search(text) if match: - msg = msg or "Regex matched" - msg = '%s: %r matches %r in %r' % (msg, - text[match.start():match.end()], - unexpected_regex.pattern, - text) + standardMsg = 'Regex matched: %r matches %r in %r' % ( + text[match.start() : match.end()], + unexpected_regex.pattern, + text) + # _formatMessage ensures the longMessage option is respected + msg = self._formatMessage(msg, standardMsg) raise self.failureException(msg) @@ -1315,6 +1318,7 @@ failIf = _deprecate(assertFalse) assertRaisesRegexp = _deprecate(assertRaisesRegex) assertRegexpMatches = _deprecate(assertRegex) + assertNotRegexpMatches = _deprecate(assertNotRegex) diff -r 2a0c04260bd4 -r 977e60f597de Lib/unittest/test/test_assertions.py --- a/Lib/unittest/test/test_assertions.py Thu Aug 20 10:48:46 2015 +1200 +++ b/Lib/unittest/test/test_assertions.py Thu Aug 20 11:13:38 2015 +1200 @@ -133,7 +133,6 @@ try: self.assertNotRegex('Ala ma kota', r'k.t', 'Message') except self.failureException as e: - self.assertIn("'kot'", e.args[0]) self.assertIn('Message', e.args[0]) else: self.fail('assertNotRegex should have failed.') @@ -329,6 +328,20 @@ "^unexpectedly identical: None$", "^unexpectedly identical: None : oops$"]) + def testAssertRegex(self): + self.assertMessages('assertRegex', ('foo', 'bar'), + ["^Regex didn't match:", + "^oops$", + "^Regex didn't match:", + "^Regex didn't match: (.*) : oops$"]) + + def testAssertNotRegex(self): + self.assertMessages('assertNotRegex', ('foo', 'foo'), + ["^Regex matched:", + "^oops$", + "^Regex matched:", + "^Regex matched: (.*) : oops$"]) + def assertMessagesCM(self, methodName, args, func, errors): """ diff -r 2a0c04260bd4 -r 977e60f597de Misc/ACKS --- a/Misc/ACKS Thu Aug 20 10:48:46 2015 +1200 +++ b/Misc/ACKS Thu Aug 20 11:13:38 2015 +1200 @@ -786,6 +786,7 @@ Dave Kuhlman Jon Kuhn Toshio Kuratomi +Ilia Kurenkov Vladimir Kushnir Erno Kuusela Ross Lagerwall diff -r 2a0c04260bd4 -r 977e60f597de Misc/NEWS --- a/Misc/NEWS Thu Aug 20 10:48:46 2015 +1200 +++ b/Misc/NEWS Thu Aug 20 11:13:38 2015 +1200 @@ -22,6 +22,9 @@ Library ------- +- Issue #20362: Honour TestCase.longMessage correctly in assertRegex. + Patch from Ilia Kurenkov. + - Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length header in part headers. Patch written by Peter Landry and reviewed by Pierre Quentel.