From a04c7a0f169caf09b181df05836e4cf175f37dbe Mon Sep 17 00:00:00 2001 From: Michael Foord Date: Fri, 2 Apr 2010 22:55:59 +0000 Subject: Issue #8038: Addition of unittest.TestCase.assertNotRegexpMatches --- Lib/unittest/case.py | 12 ++++++++++++ Lib/unittest/test/test_assertions.py | 10 ++++++++++ Misc/NEWS | 5 +++++ 3 files changed, 27 insertions(+) diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 9891803..cbbe2b5 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -952,6 +952,18 @@ class TestCase(object): msg = '%s: %r not found in %r' % (msg, expected_regexp.pattern, text) raise self.failureException(msg) + def assertNotRegexpMatches(self, text, unexpected_regexp, msg=None): + if isinstance(unexpected_regexp, basestring): + unexpected_regexp = re.compile(unexpected_regexp) + match = unexpected_regexp.search(text) + if match: + msg = msg or "Regexp matched" + msg = '%s: %r matches %r in %r' % (msg, + text[match.start():match.end()], + unexpected_regexp.pattern, + text) + raise self.failureException(msg) + class FunctionTestCase(TestCase): """A test case that wraps a test function. diff --git a/Lib/unittest/test/test_assertions.py b/Lib/unittest/test/test_assertions.py index 5d77ce8..1880059 100644 --- a/Lib/unittest/test/test_assertions.py +++ b/Lib/unittest/test/test_assertions.py @@ -91,6 +91,16 @@ class Test_Assertions(unittest.TestCase): else: self.fail("assertRaises() didn't let exception pass through") + def testAssertNotRegexpMatches(self): + self.assertNotRegexpMatches('Ala ma kota', r'r+') + try: + self.assertNotRegexpMatches('Ala ma kota', r'k.t', 'Message') + except self.failureException, e: + self.assertIn("'kot'", e.args[0]) + self.assertIn('Message', e.args[0]) + else: + self.fail('assertNotRegexpMatches should have failed.') + class TestLongMessage(unittest.TestCase): """Test that the individual asserts honour longMessage. diff --git a/Misc/NEWS b/Misc/NEWS index 1c03baf..4003b99 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -148,6 +148,11 @@ Library - Issue #8235: _socket: Add the constant ``SO_SETFIB``. SO_SETFIB is a socket option available on FreeBSD 7.1 and newer. +- Issue #8038: unittest.TestCase.assertNotRegexpMatches + +- Addition of -b command line option to unittest for buffering stdout / stderr + during test runs. + Extension Modules ----------------- -- cgit v0.12