Skip to content

Commit

Permalink
Fix logging error message (GH-22410)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
larsoner committed Sep 25, 2020
1 parent 02d126a commit 9fdb76c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 14 deletions.
3 changes: 2 additions & 1 deletion Lib/logging/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,8 @@ def _checkLevel(level):
raise ValueError("Unknown level: %r" % level)
rv = _nameToLevel[level]
else:
raise TypeError("Level not an integer or a valid string: %r" % level)
raise TypeError("Level not an integer or a valid string: %r"
% (level,))
return rv

#---------------------------------------------------------------------------
Expand Down
33 changes: 20 additions & 13 deletions Lib/test/test_logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -3720,7 +3720,15 @@ def tzname(self, dt):

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',
Expand All @@ -3744,12 +3752,6 @@ def get_record(self, name=None):
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()
Expand Down Expand Up @@ -3868,7 +3870,7 @@ def test_format_validate(self):
# 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
Expand All @@ -3891,7 +3893,7 @@ def test_format_validate(self):
# 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='{')
Expand All @@ -3901,12 +3903,12 @@ def test_format_validate(self):
# 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='{')
Expand Down Expand Up @@ -4867,7 +4869,7 @@ def process(self, msg, kwargs):
self.assertIs(self.logger.manager, orig_manager)


class LoggerTest(BaseTest):
class LoggerTest(BaseTest, AssertErrorMessage):

def setUp(self):
super(LoggerTest, self).setUp()
Expand All @@ -4879,7 +4881,12 @@ def setUp(self):
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'
Expand Down

0 comments on commit 9fdb76c

Please sign in to comment.