mirror of https://github.com/python/cpython
Make packaging.tests.support.LoggingCatcher.get_logs flush the log handler.
This removes the need to call flush manually in each test, except when testing code that creates warning without checking them.
This commit is contained in:
parent
5da37be7f2
commit
78af7d8392
|
@ -90,17 +90,23 @@ class LoggingCatcher:
|
|||
def get_logs(self, *levels):
|
||||
"""Return all log messages with level in *levels*.
|
||||
|
||||
Without explicit levels given, returns all messages.
|
||||
*levels* defaults to all levels. For log calls with arguments (i.e.
|
||||
logger.info('bla bla %s', arg)), the messages
|
||||
Returns a list.
|
||||
Without explicit levels given, returns all messages. *levels* defaults
|
||||
to all levels. For log calls with arguments (i.e.
|
||||
logger.info('bla bla %r', arg)), the messages will be formatted before
|
||||
being returned (e.g. "bla bla 'thing'").
|
||||
|
||||
Returns a list. Automatically flushes the loghandler after being
|
||||
called.
|
||||
|
||||
Example: self.get_logs(logging.WARN, logging.DEBUG).
|
||||
"""
|
||||
if not levels:
|
||||
return [log.getMessage() for log in self.loghandler.buffer]
|
||||
return [log.getMessage() for log in self.loghandler.buffer
|
||||
if log.levelno in levels]
|
||||
messages = [log.getMessage() for log in self.loghandler.buffer]
|
||||
else:
|
||||
messages = [log.getMessage() for log in self.loghandler.buffer
|
||||
if log.levelno in levels]
|
||||
self.loghandler.flush()
|
||||
return messages
|
||||
|
||||
|
||||
class TempdirManager:
|
||||
|
|
|
@ -36,7 +36,6 @@ class CheckTestCase(support.LoggingCatcher,
|
|||
# now let's add the required fields
|
||||
# and run it again, to make sure we don't get
|
||||
# any warning anymore
|
||||
self.loghandler.flush()
|
||||
metadata = {'home_page': 'xxx', 'author': 'xxx',
|
||||
'author_email': 'xxx',
|
||||
'name': 'xxx', 'version': '4.2',
|
||||
|
@ -50,8 +49,10 @@ class CheckTestCase(support.LoggingCatcher,
|
|||
self.assertRaises(PackagingSetupError, self._run,
|
||||
{'name': 'xxx', 'version': 'xxx'}, **{'strict': 1})
|
||||
|
||||
# and of course, no error when all metadata fields are present
|
||||
# clear warnings from the previous calls
|
||||
self.loghandler.flush()
|
||||
|
||||
# and of course, no error when all metadata fields are present
|
||||
cmd = self._run(metadata, strict=True)
|
||||
self.assertEqual([], self.get_logs(logging.WARNING))
|
||||
|
||||
|
@ -70,7 +71,6 @@ class CheckTestCase(support.LoggingCatcher,
|
|||
'name': 'xxx', 'version': '4.2',
|
||||
'requires_python': '2.4',
|
||||
}
|
||||
self.loghandler.flush()
|
||||
cmd = self._run(metadata)
|
||||
self.assertEqual([], self.get_logs(logging.WARNING))
|
||||
|
||||
|
@ -85,9 +85,11 @@ class CheckTestCase(support.LoggingCatcher,
|
|||
self.assertRaises(PackagingSetupError, self._run, metadata,
|
||||
**{'strict': 1})
|
||||
|
||||
# clear warnings from the previous calls
|
||||
self.loghandler.flush()
|
||||
|
||||
# now with correct version format again
|
||||
metadata['version'] = '4.2'
|
||||
self.loghandler.flush()
|
||||
cmd = self._run(metadata, strict=True)
|
||||
self.assertEqual([], self.get_logs(logging.WARNING))
|
||||
|
||||
|
@ -100,7 +102,6 @@ class CheckTestCase(support.LoggingCatcher,
|
|||
cmd.check_restructuredtext()
|
||||
self.assertEqual(len(self.get_logs(logging.WARNING)), 1)
|
||||
|
||||
self.loghandler.flush()
|
||||
pkg_info, dist = self.create_dist(description='title\n=====\n\ntest')
|
||||
cmd = check(dist)
|
||||
cmd.check_restructuredtext()
|
||||
|
|
|
@ -50,9 +50,6 @@ class ManifestTestCase(support.TempdirManager,
|
|||
for warning in warnings:
|
||||
self.assertIn('no files found matching', warning)
|
||||
|
||||
# reset logs for the next assert
|
||||
self.loghandler.flush()
|
||||
|
||||
# manifest also accepts file-like objects
|
||||
with open(MANIFEST) as f:
|
||||
manifest.read_template(f)
|
||||
|
|
Loading…
Reference in New Issue