From ce877a32f9c2e2721412a9c738dd41b9edf3d5e9 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Wed, 8 Mar 2023 16:30:42 -0800 Subject: [PATCH] [BUGFIX] Fix quiet log level not showing warning logs (#516) --- src/ytdl_sub/cli/main.py | 3 +-- src/ytdl_sub/utils/logger.py | 2 +- tests/unit/utils/test_logger.py | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/ytdl_sub/cli/main.py b/src/ytdl_sub/cli/main.py index e21e54e..8d5413a 100644 --- a/src/ytdl_sub/cli/main.py +++ b/src/ytdl_sub/cli/main.py @@ -1,5 +1,4 @@ import gc -import logging import os import sys from datetime import datetime @@ -329,6 +328,6 @@ def main() -> List[Tuple[Subscription, FileHandlerTransactionLog]]: ) # Hack to always show download summary, even if logs are set to quiet - logger.log(logging.WARNING, "Download Summary:\n%s", _output_summary(transaction_logs)) + logger.warning("Download Summary:\n%s", _output_summary(transaction_logs)) return transaction_logs diff --git a/src/ytdl_sub/utils/logger.py b/src/ytdl_sub/utils/logger.py index eb68404..058c57f 100644 --- a/src/ytdl_sub/utils/logger.py +++ b/src/ytdl_sub/utils/logger.py @@ -155,7 +155,7 @@ class Logger: logger_name += f":{name}" logger = logging.Logger(name=logger_name, level=logging.DEBUG) - if stdout and cls._LOGGER_LEVEL.level >= LoggerLevels.INFO.level: + if stdout: logger.addHandler(cls._get_stdout_handler()) if debug_file: logger.addHandler(cls._get_debug_file_handler()) diff --git a/tests/unit/utils/test_logger.py b/tests/unit/utils/test_logger.py index 0062b27..d888a24 100644 --- a/tests/unit/utils/test_logger.py +++ b/tests/unit/utils/test_logger.py @@ -24,6 +24,25 @@ class TestLogger: with pytest.raises(ValueError): Logger.set_log_level("nope") + @pytest.mark.parametrize( + "log_level", + [ + LoggerLevels.QUIET, + LoggerLevels.INFO, + LoggerLevels.VERBOSE, + LoggerLevels.DEBUG, + ], + ) + def test_logger_warning_stdout(self, capsys, log_level): + Logger._LOGGER_LEVEL = log_level + logger = Logger.get(name="name_test") + + logger.warning("test") + captured = capsys.readouterr() + + # Warning should always be captured + assert captured.out == "[ytdl-sub:name_test] test\n" + @pytest.mark.parametrize( "log_level, outputs_to_stdout", [