Commit 78af7d83 authored by Éric Araujo's avatar Éric Araujo

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.
parent 5da37be7
...@@ -90,17 +90,23 @@ class LoggingCatcher: ...@@ -90,17 +90,23 @@ class LoggingCatcher:
def get_logs(self, *levels): def get_logs(self, *levels):
"""Return all log messages with level in *levels*. """Return all log messages with level in *levels*.
Without explicit levels given, returns all messages. Without explicit levels given, returns all messages. *levels* defaults
*levels* defaults to all levels. For log calls with arguments (i.e. to all levels. For log calls with arguments (i.e.
logger.info('bla bla %s', arg)), the messages logger.info('bla bla %r', arg)), the messages will be formatted before
Returns a list. 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). Example: self.get_logs(logging.WARN, logging.DEBUG).
""" """
if not levels: if not levels:
return [log.getMessage() for log in self.loghandler.buffer] messages = [log.getMessage() for log in self.loghandler.buffer]
return [log.getMessage() for log in self.loghandler.buffer else:
if log.levelno in levels] messages = [log.getMessage() for log in self.loghandler.buffer
if log.levelno in levels]
self.loghandler.flush()
return messages
class TempdirManager: class TempdirManager:
......
...@@ -36,7 +36,6 @@ class CheckTestCase(support.LoggingCatcher, ...@@ -36,7 +36,6 @@ class CheckTestCase(support.LoggingCatcher,
# now let's add the required fields # now let's add the required fields
# and run it again, to make sure we don't get # and run it again, to make sure we don't get
# any warning anymore # any warning anymore
self.loghandler.flush()
metadata = {'home_page': 'xxx', 'author': 'xxx', metadata = {'home_page': 'xxx', 'author': 'xxx',
'author_email': 'xxx', 'author_email': 'xxx',
'name': 'xxx', 'version': '4.2', 'name': 'xxx', 'version': '4.2',
...@@ -50,8 +49,10 @@ class CheckTestCase(support.LoggingCatcher, ...@@ -50,8 +49,10 @@ class CheckTestCase(support.LoggingCatcher,
self.assertRaises(PackagingSetupError, self._run, self.assertRaises(PackagingSetupError, self._run,
{'name': 'xxx', 'version': 'xxx'}, **{'strict': 1}) {'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() self.loghandler.flush()
# and of course, no error when all metadata fields are present
cmd = self._run(metadata, strict=True) cmd = self._run(metadata, strict=True)
self.assertEqual([], self.get_logs(logging.WARNING)) self.assertEqual([], self.get_logs(logging.WARNING))
...@@ -70,7 +71,6 @@ class CheckTestCase(support.LoggingCatcher, ...@@ -70,7 +71,6 @@ class CheckTestCase(support.LoggingCatcher,
'name': 'xxx', 'version': '4.2', 'name': 'xxx', 'version': '4.2',
'requires_python': '2.4', 'requires_python': '2.4',
} }
self.loghandler.flush()
cmd = self._run(metadata) cmd = self._run(metadata)
self.assertEqual([], self.get_logs(logging.WARNING)) self.assertEqual([], self.get_logs(logging.WARNING))
...@@ -85,9 +85,11 @@ class CheckTestCase(support.LoggingCatcher, ...@@ -85,9 +85,11 @@ class CheckTestCase(support.LoggingCatcher,
self.assertRaises(PackagingSetupError, self._run, metadata, self.assertRaises(PackagingSetupError, self._run, metadata,
**{'strict': 1}) **{'strict': 1})
# clear warnings from the previous calls
self.loghandler.flush()
# now with correct version format again # now with correct version format again
metadata['version'] = '4.2' metadata['version'] = '4.2'
self.loghandler.flush()
cmd = self._run(metadata, strict=True) cmd = self._run(metadata, strict=True)
self.assertEqual([], self.get_logs(logging.WARNING)) self.assertEqual([], self.get_logs(logging.WARNING))
...@@ -100,7 +102,6 @@ class CheckTestCase(support.LoggingCatcher, ...@@ -100,7 +102,6 @@ class CheckTestCase(support.LoggingCatcher,
cmd.check_restructuredtext() cmd.check_restructuredtext()
self.assertEqual(len(self.get_logs(logging.WARNING)), 1) self.assertEqual(len(self.get_logs(logging.WARNING)), 1)
self.loghandler.flush()
pkg_info, dist = self.create_dist(description='title\n=====\n\ntest') pkg_info, dist = self.create_dist(description='title\n=====\n\ntest')
cmd = check(dist) cmd = check(dist)
cmd.check_restructuredtext() cmd.check_restructuredtext()
......
...@@ -50,9 +50,6 @@ class ManifestTestCase(support.TempdirManager, ...@@ -50,9 +50,6 @@ class ManifestTestCase(support.TempdirManager,
for warning in warnings: for warning in warnings:
self.assertIn('no files found matching', warning) self.assertIn('no files found matching', warning)
# reset logs for the next assert
self.loghandler.flush()
# manifest also accepts file-like objects # manifest also accepts file-like objects
with open(MANIFEST) as f: with open(MANIFEST) as f:
manifest.read_template(f) manifest.read_template(f)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment