From f1e13cf886a23a3b933a5f39163b32c44bdda5e6 Mon Sep 17 00:00:00 2001 From: Bruno Cauet Date: Tue, 10 Feb 2015 17:13:15 +0100 Subject: [PATCH] Offer verbose and very verbose modes 'verbose' is now an int and not a boolean. '-v' is level 1, '-vv' level 2. In the configuration it can be set with 'verbose: 1' or 'verbose: 2'. Improve #1244: auditing current log levels of plugins remains. --- beets/config_default.yaml | 2 +- beets/plugins.py | 5 ++--- beets/ui/__init__.py | 4 ++-- test/helper.py | 2 +- test/test_logging.py | 38 +++++++++++++++++++++++++++----------- test/test_spotify.py | 2 +- 6 files changed, 34 insertions(+), 19 deletions(-) diff --git a/beets/config_default.yaml b/beets/config_default.yaml index c448585d9..b98ffbfc6 100644 --- a/beets/config_default.yaml +++ b/beets/config_default.yaml @@ -43,7 +43,7 @@ pluginpath: [] threaded: yes timeout: 5.0 per_disc_numbering: no -verbose: no +verbose: 0 terminal_encoding: utf8 original_date: no id3v23: no diff --git a/beets/plugins.py b/beets/plugins.py index 58d9bc0ee..9235883d0 100755 --- a/beets/plugins.py +++ b/beets/plugins.py @@ -112,9 +112,8 @@ class BeetsPlugin(object): def wrapper(*args, **kwargs): assert self._log.level == logging.NOTSET - log_level = base_log_level - if beets.config['verbose'].get(bool): - log_level -= 10 + verbosity = beets.config['verbose'].get(int) + log_level = max(logging.DEBUG, base_log_level - 10 * verbosity) self._log.setLevel(log_level) try: diff --git a/beets/ui/__init__.py b/beets/ui/__init__.py index 02a7a9478..e041db95e 100644 --- a/beets/ui/__init__.py +++ b/beets/ui/__init__.py @@ -858,7 +858,7 @@ def _configure(options): config.set_args(options) # Configure the logger. - if config['verbose'].get(bool): + if config['verbose'].get(int): log.setLevel(logging.DEBUG) else: log.setLevel(logging.INFO) @@ -917,7 +917,7 @@ def _raw_main(args, lib=None): help='library database file to use') parser.add_option('-d', '--directory', dest='directory', help="destination music directory") - parser.add_option('-v', '--verbose', dest='verbose', action='store_true', + parser.add_option('-v', '--verbose', dest='verbose', action='count', help='print debugging information') parser.add_option('-c', '--config', dest='config', help='path to configuration file') diff --git a/test/helper.py b/test/helper.py index e929eecff..8d0dbf8a6 100644 --- a/test/helper.py +++ b/test/helper.py @@ -167,7 +167,7 @@ class TestHelper(object): self.config.read() self.config['plugins'] = [] - self.config['verbose'] = True + self.config['verbose'] = 1 self.config['ui']['color'] = False self.config['threaded'] = False diff --git a/test/test_logging.py b/test/test_logging.py index bc8ade0aa..a4e2cfbe7 100644 --- a/test/test_logging.py +++ b/test/test_logging.py @@ -78,37 +78,45 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper): sys.modules.pop('beetsplug.dummy') def test_command_logging(self): - self.config['verbose'] = False + self.config['verbose'] = 0 with helper.capture_log() as logs: self.run_command('dummy') self.assertIn('dummy: warning cmd', logs) self.assertIn('dummy: info cmd', logs) self.assertNotIn('dummy: debug cmd', logs) - self.config['verbose'] = True - with helper.capture_log() as logs: - self.run_command('dummy') - self.assertIn('dummy: warning cmd', logs) - self.assertIn('dummy: info cmd', logs) - self.assertIn('dummy: debug cmd', logs) + for level in (1, 2): + self.config['verbose'] = level + with helper.capture_log() as logs: + self.run_command('dummy') + self.assertIn('dummy: warning cmd', logs) + self.assertIn('dummy: info cmd', logs) + self.assertIn('dummy: debug cmd', logs) def test_listener_logging(self): - self.config['verbose'] = False + self.config['verbose'] = 0 with helper.capture_log() as logs: plugins.send('dummy_event') self.assertIn('dummy: warning listener', logs) self.assertNotIn('dummy: info listener', logs) self.assertNotIn('dummy: debug listener', logs) - self.config['verbose'] = True + self.config['verbose'] = 1 with helper.capture_log() as logs: plugins.send('dummy_event') self.assertIn('dummy: warning listener', logs) self.assertIn('dummy: info listener', logs) self.assertNotIn('dummy: debug listener', logs) + self.config['verbose'] = 2 + with helper.capture_log() as logs: + plugins.send('dummy_event') + self.assertIn('dummy: warning listener', logs) + self.assertIn('dummy: info listener', logs) + self.assertIn('dummy: debug listener', logs) + def test_import_stage_logging(self): - self.config['verbose'] = False + self.config['verbose'] = 0 with helper.capture_log() as logs: importer = self.create_importer() importer.run() @@ -116,7 +124,7 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper): self.assertNotIn('dummy: info import_stage', logs) self.assertNotIn('dummy: debug import_stage', logs) - self.config['verbose'] = True + self.config['verbose'] = 1 with helper.capture_log() as logs: importer = self.create_importer() importer.run() @@ -124,6 +132,14 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper): self.assertIn('dummy: info import_stage', logs) self.assertNotIn('dummy: debug import_stage', logs) + self.config['verbose'] = 2 + with helper.capture_log() as logs: + importer = self.create_importer() + importer.run() + self.assertIn('dummy: warning import_stage', logs) + self.assertIn('dummy: info import_stage', logs) + self.assertIn('dummy: debug import_stage', logs) + def suite(): return unittest.TestLoader().loadTestsFromName(__name__) diff --git a/test/test_spotify.py b/test/test_spotify.py index 3d4d75bde..3025163bb 100644 --- a/test/test_spotify.py +++ b/test/test_spotify.py @@ -17,7 +17,7 @@ class ArgumentsMock(object): def __init__(self, mode, show_failures): self.mode = mode self.show_failures = show_failures - self.verbose = True + self.verbose = 1 def _params(url):