103 lines
2.6 KiB
Python
103 lines
2.6 KiB
Python
import logging
|
|
import logging.config
|
|
|
|
|
|
def test_logger_empty_init(mocker):
|
|
log_config_spy = mocker.spy(logging.config, "dictConfig")
|
|
from guardrails.logger import logger
|
|
|
|
assert logger.level == logging.NOTSET
|
|
# It's not possible to retrieve the logging configuration
|
|
# in an easily machine readable format
|
|
# Instead spy on logging.config.dictConfig
|
|
assert log_config_spy.call_count == 0
|
|
|
|
|
|
def test_logger_is_singleton():
|
|
from guardrails.logger import get_logger, logger
|
|
|
|
logger_1 = get_logger()
|
|
logger_2 = get_logger()
|
|
assert logger == logger_1
|
|
assert logger_1 == logger_2
|
|
|
|
|
|
def test_set_level(mocker):
|
|
from guardrails.logger import logger, logger_config, set_level
|
|
|
|
set_level(logging.NOTSET)
|
|
|
|
setLevel_spy = mocker.spy(logger, "setLevel")
|
|
|
|
set_level(logging.WARNING)
|
|
|
|
assert logger.level == logging.WARNING
|
|
assert logger_config.level == logging.WARNING
|
|
assert setLevel_spy.call_count == 1
|
|
|
|
set_level(logging.NOTSET)
|
|
|
|
|
|
def test_set_config(mocker):
|
|
log_config_spy = mocker.patch("logging.config.dictConfig")
|
|
from guardrails.logger import set_config
|
|
|
|
new_config = {"version": 1}
|
|
set_config(new_config)
|
|
|
|
assert log_config_spy.call_count == 1
|
|
|
|
|
|
def test_set_scope():
|
|
from guardrails.logger import (
|
|
base_scope,
|
|
get_scope_handler,
|
|
logger_config,
|
|
set_scope,
|
|
)
|
|
|
|
set_scope(base_scope)
|
|
|
|
scope_handler = get_scope_handler()
|
|
assert logger_config.scope == base_scope
|
|
assert scope_handler.scope == base_scope
|
|
|
|
set_scope("custom")
|
|
|
|
assert logger_config.scope == "custom"
|
|
assert scope_handler.scope == "custom"
|
|
|
|
|
|
"""
|
|
Since tests run in parallel, we need a distinct logger and handler instance
|
|
for this test in order for the assertions to work.
|
|
"""
|
|
|
|
|
|
def test_scope_handler():
|
|
from guardrails.logger import ScopeHandler, base_scope
|
|
|
|
test_logger = logging.getLogger("test_scope_handler")
|
|
test_logger.setLevel(logging.INFO)
|
|
new_handler = ScopeHandler()
|
|
test_logger.addHandler(new_handler)
|
|
|
|
test_logger.info("test log 1")
|
|
|
|
new_handler.set_scope("test-2")
|
|
|
|
test_logger.warning("test log 2")
|
|
|
|
base_logs = new_handler.get_logs(base_scope)
|
|
assert len(base_logs) == 1
|
|
assert base_logs[0].getMessage() == "test log 1"
|
|
|
|
test_2_logs = new_handler.get_logs("test-2")
|
|
assert len(test_2_logs) == 1
|
|
assert test_2_logs[0].getMessage() == "test log 2"
|
|
|
|
all_logs = new_handler.get_logs("all")
|
|
assert len(all_logs) == 2
|
|
assert all_logs[0].getMessage() == "test log 1"
|
|
assert all_logs[1].getMessage() == "test log 2"
|