mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Merge 36120ff4f7 into 939434b4ab
This commit is contained in:
commit
7e6453dba2
5 changed files with 44 additions and 9 deletions
3
RELEASE.md
Normal file
3
RELEASE.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Release type: major
|
||||
|
||||
Change default of `--fatal` command line switch to terminate on error.
|
||||
|
|
@ -442,12 +442,12 @@ def parse_arguments(argv=None):
|
|||
|
||||
parser.add_argument(
|
||||
"--fatal",
|
||||
metavar="errors|warnings",
|
||||
choices=("errors", "warnings"),
|
||||
default="",
|
||||
metavar="errors|warnings|ignore",
|
||||
choices=("errors", "warnings", "ignore"),
|
||||
default="errors",
|
||||
help=(
|
||||
"Exit the program with non-zero status if any "
|
||||
"errors/warnings encountered."
|
||||
"errors/warnings encountered, or ignore any errors."
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -131,13 +131,23 @@ DEFAULT_LOG_HANDLER = RichHandler(console=console)
|
|||
|
||||
def init(
|
||||
level=None,
|
||||
fatal="",
|
||||
fatal="errors",
|
||||
handler=DEFAULT_LOG_HANDLER,
|
||||
name=None,
|
||||
logs_dedup_min_level=None,
|
||||
):
|
||||
"""Initialize the logger.
|
||||
|
||||
:param level: the log level
|
||||
:param fatal: how to set up the FatalLogger. If "warning", then warnings are fatal.
|
||||
If fatal is set to anything other than "" or "ignore",
|
||||
then errors are fatal.
|
||||
:param handler: the logging handler
|
||||
:param name: the name of the logger to use
|
||||
:param logs_dedup_min_level: the LimitFilter.LOGS_DEDUP_MIN_LEVEL to use
|
||||
"""
|
||||
FatalLogger.warnings_fatal = fatal.startswith("warning")
|
||||
FatalLogger.errors_fatal = bool(fatal)
|
||||
FatalLogger.errors_fatal = bool(fatal) and fatal != "ignore"
|
||||
|
||||
LOG_FORMAT = "%(message)s"
|
||||
logging.basicConfig(
|
||||
|
|
@ -155,12 +165,13 @@ def init(
|
|||
LimitFilter.LOGS_DEDUP_MIN_LEVEL = logs_dedup_min_level
|
||||
|
||||
|
||||
def log_warnings():
|
||||
def log_warnings(fatal: str) -> None:
|
||||
"""Redirect warnings module to use logging instead."""
|
||||
import warnings
|
||||
|
||||
logging.captureWarnings(True)
|
||||
warnings.simplefilter("default", DeprecationWarning)
|
||||
init(logging.DEBUG, name="py.warnings")
|
||||
init(logging.DEBUG, name="py.warnings", fatal=fatal)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ import warnings
|
|||
from pelican.log import log_warnings
|
||||
|
||||
# redirect warnings module to use logging instead
|
||||
log_warnings()
|
||||
# "ignore" means "don't raise on logging an error"
|
||||
log_warnings("ignore")
|
||||
|
||||
# setup warnings to log DeprecationWarning's and error on
|
||||
# warnings in pelican's codebase
|
||||
|
|
|
|||
20
pelican/tests/test_init.py
Normal file
20
pelican/tests/test_init.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from pelican import DEFAULT_LOG_HANDLER, main
|
||||
|
||||
|
||||
class TestLog(unittest.TestCase):
|
||||
@patch("pelican.get_instance")
|
||||
@patch("pelican.init_logging")
|
||||
def test_main_fatal_default(self, init_logging_mock, get_instance):
|
||||
get_instance.side_effect = lambda *args, **kwargs: (MagicMock(), MagicMock())
|
||||
main()
|
||||
init_logging_mock.assert_called_once_with(
|
||||
level=None,
|
||||
# default is "errors"
|
||||
fatal="errors",
|
||||
name="pelican",
|
||||
handler=DEFAULT_LOG_HANDLER,
|
||||
logs_dedup_min_level=30,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue