diff options
author | Steve Dower <steve.dower@python.org> | 2020-10-19 15:50:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-19 15:50:36 +0100 |
commit | c82f10450c547eb94a04ee17b7c816ff31948297 (patch) | |
tree | ad305c05c5745e1a5e7c136545bec7eefa741e32 /Lib/test/test_logging.py | |
parent | eee6bb50c69d94280f43b47390ea9d1b5f42930c (diff) | |
parent | b580ed1d9d55461d8dde027411b90be26cae131e (diff) | |
download | cpython-git-bpo-39107.tar.gz |
Merge branch 'master' into bpo-39107bpo-39107
Diffstat (limited to 'Lib/test/test_logging.py')
-rw-r--r-- | Lib/test/test_logging.py | 54 |
1 files changed, 33 insertions, 21 deletions
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index d23fbfb4fe..7c98e19b74 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -1164,22 +1164,27 @@ class MemoryHandlerTest(BaseTest): class MockRaceConditionHandler: def __init__(self, mem_hdlr): self.mem_hdlr = mem_hdlr + self.threads = [] def removeTarget(self): self.mem_hdlr.setTarget(None) def handle(self, msg): - t = threading.Thread(target=self.removeTarget) - t.daemon = True - t.start() + thread = threading.Thread(target=self.removeTarget) + self.threads.append(thread) + thread.start() target = MockRaceConditionHandler(self.mem_hdlr) - self.mem_hdlr.setTarget(target) + try: + self.mem_hdlr.setTarget(target) - for _ in range(10): - time.sleep(0.005) - self.mem_logger.info("not flushed") - self.mem_logger.warning("flushed") + for _ in range(10): + time.sleep(0.005) + self.mem_logger.info("not flushed") + self.mem_logger.warning("flushed") + finally: + for thread in target.threads: + threading_helper.join_thread(thread) class ExceptionFormatter(logging.Formatter): @@ -3720,7 +3725,15 @@ class UTC(datetime.tzinfo): utc = UTC() -class FormatterTest(unittest.TestCase): +class AssertErrorMessage: + + def assert_error_message(self, exception, message, *args, **kwargs): + try: + self.assertRaises((), *args, **kwargs) + except exception as e: + self.assertEqual(message, str(e)) + +class FormatterTest(unittest.TestCase, AssertErrorMessage): def setUp(self): self.common = { 'name': 'formatter.test', @@ -3744,12 +3757,6 @@ class FormatterTest(unittest.TestCase): result.update(self.variants[name]) return logging.makeLogRecord(result) - def assert_error_message(self, exception, message, *args, **kwargs): - try: - self.assertRaises(exception, *args, **kwargs) - except exception as e: - self.assertEqual(message, e.message) - def test_percent(self): # Test %-formatting r = self.get_record() @@ -3868,7 +3875,7 @@ class FormatterTest(unittest.TestCase): # Testing failure for '-' in field name self.assert_error_message( ValueError, - "invalid field name/expression: 'name-thing'", + "invalid format: invalid field name/expression: 'name-thing'", logging.Formatter, "{name-thing}", style="{" ) # Testing failure for style mismatch @@ -3891,7 +3898,7 @@ class FormatterTest(unittest.TestCase): # Testing failure for invalid spec self.assert_error_message( ValueError, - "bad specifier: '.2ff'", + "invalid format: bad specifier: '.2ff'", logging.Formatter, '{process:.2ff}', style='{' ) self.assertRaises(ValueError, logging.Formatter, '{process:.2Z}', style='{') @@ -3901,12 +3908,12 @@ class FormatterTest(unittest.TestCase): # Testing failure for mismatch braces self.assert_error_message( ValueError, - "invalid format: unmatched '{' in format spec", + "invalid format: expected '}' before end of string", logging.Formatter, '{process', style='{' ) self.assert_error_message( ValueError, - "invalid format: unmatched '{' in format spec", + "invalid format: Single '}' encountered in format string", logging.Formatter, 'process}', style='{' ) self.assertRaises(ValueError, logging.Formatter, '{{foo!r:4.2}', style='{') @@ -4867,7 +4874,7 @@ class LoggerAdapterTest(unittest.TestCase): self.assertIs(self.logger.manager, orig_manager) -class LoggerTest(BaseTest): +class LoggerTest(BaseTest, AssertErrorMessage): def setUp(self): super(LoggerTest, self).setUp() @@ -4879,7 +4886,12 @@ class LoggerTest(BaseTest): self.addCleanup(logging.shutdown) def test_set_invalid_level(self): - self.assertRaises(TypeError, self.logger.setLevel, object()) + self.assert_error_message( + TypeError, 'Level not an integer or a valid string: None', + self.logger.setLevel, None) + self.assert_error_message( + TypeError, 'Level not an integer or a valid string: (0, 0)', + self.logger.setLevel, (0, 0)) def test_exception(self): msg = 'testing exception: %r' |