Skip to content

Commit 9fdb76c

Browse files
authored
Fix logging error message (GH-22410)
Same changes as #22276 squashed to a single commit. Just hoping to get Travis to cooperate by opening a new PR... Automerge-Triggered-By: @vsajip
1 parent 02d126a commit 9fdb76c

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

Lib/logging/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ def _checkLevel(level):
194194
raise ValueError("Unknown level: %r" % level)
195195
rv = _nameToLevel[level]
196196
else:
197-
raise TypeError("Level not an integer or a valid string: %r" % level)
197+
raise TypeError("Level not an integer or a valid string: %r"
198+
% (level,))
198199
return rv
199200

200201
#---------------------------------------------------------------------------

Lib/test/test_logging.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3720,7 +3720,15 @@ def tzname(self, dt):
37203720

37213721
utc = UTC()
37223722

3723-
class FormatterTest(unittest.TestCase):
3723+
class AssertErrorMessage:
3724+
3725+
def assert_error_message(self, exception, message, *args, **kwargs):
3726+
try:
3727+
self.assertRaises((), *args, **kwargs)
3728+
except exception as e:
3729+
self.assertEqual(message, str(e))
3730+
3731+
class FormatterTest(unittest.TestCase, AssertErrorMessage):
37243732
def setUp(self):
37253733
self.common = {
37263734
'name': 'formatter.test',
@@ -3744,12 +3752,6 @@ def get_record(self, name=None):
37443752
result.update(self.variants[name])
37453753
return logging.makeLogRecord(result)
37463754

3747-
def assert_error_message(self, exception, message, *args, **kwargs):
3748-
try:
3749-
self.assertRaises(exception, *args, **kwargs)
3750-
except exception as e:
3751-
self.assertEqual(message, e.message)
3752-
37533755
def test_percent(self):
37543756
# Test %-formatting
37553757
r = self.get_record()
@@ -3868,7 +3870,7 @@ def test_format_validate(self):
38683870
# Testing failure for '-' in field name
38693871
self.assert_error_message(
38703872
ValueError,
3871-
"invalid field name/expression: 'name-thing'",
3873+
"invalid format: invalid field name/expression: 'name-thing'",
38723874
logging.Formatter, "{name-thing}", style="{"
38733875
)
38743876
# Testing failure for style mismatch
@@ -3891,7 +3893,7 @@ def test_format_validate(self):
38913893
# Testing failure for invalid spec
38923894
self.assert_error_message(
38933895
ValueError,
3894-
"bad specifier: '.2ff'",
3896+
"invalid format: bad specifier: '.2ff'",
38953897
logging.Formatter, '{process:.2ff}', style='{'
38963898
)
38973899
self.assertRaises(ValueError, logging.Formatter, '{process:.2Z}', style='{')
@@ -3901,12 +3903,12 @@ def test_format_validate(self):
39013903
# Testing failure for mismatch braces
39023904
self.assert_error_message(
39033905
ValueError,
3904-
"invalid format: unmatched '{' in format spec",
3906+
"invalid format: expected '}' before end of string",
39053907
logging.Formatter, '{process', style='{'
39063908
)
39073909
self.assert_error_message(
39083910
ValueError,
3909-
"invalid format: unmatched '{' in format spec",
3911+
"invalid format: Single '}' encountered in format string",
39103912
logging.Formatter, 'process}', style='{'
39113913
)
39123914
self.assertRaises(ValueError, logging.Formatter, '{{foo!r:4.2}', style='{')
@@ -4867,7 +4869,7 @@ def process(self, msg, kwargs):
48674869
self.assertIs(self.logger.manager, orig_manager)
48684870

48694871

4870-
class LoggerTest(BaseTest):
4872+
class LoggerTest(BaseTest, AssertErrorMessage):
48714873

48724874
def setUp(self):
48734875
super(LoggerTest, self).setUp()
@@ -4879,7 +4881,12 @@ def setUp(self):
48794881
self.addCleanup(logging.shutdown)
48804882

48814883
def test_set_invalid_level(self):
4882-
self.assertRaises(TypeError, self.logger.setLevel, object())
4884+
self.assert_error_message(
4885+
TypeError, 'Level not an integer or a valid string: None',
4886+
self.logger.setLevel, None)
4887+
self.assert_error_message(
4888+
TypeError, 'Level not an integer or a valid string: (0, 0)',
4889+
self.logger.setLevel, (0, 0))
48834890

48844891
def test_exception(self):
48854892
msg = 'testing exception: %r'

0 commit comments

Comments
 (0)