2025-11-05 15:34:23 +01:00
|
|
|
from unittest.mock import patch, MagicMock
|
2025-11-07 18:50:28 +01:00
|
|
|
from rp.core.logging import setup_logging, get_logger
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-04 08:01:20 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
class TestLogging:
|
2025-11-07 18:50:28 +01:00
|
|
|
@patch("rp.core.logging.os.makedirs")
|
|
|
|
|
@patch("rp.core.logging.os.path.dirname")
|
|
|
|
|
@patch("rp.core.logging.os.path.exists")
|
|
|
|
|
@patch("rp.core.logging.RotatingFileHandler")
|
|
|
|
|
@patch("rp.core.logging.logging.getLogger")
|
2025-11-05 15:34:23 +01:00
|
|
|
def test_setup_logging_basic(
|
|
|
|
|
self, mock_get_logger, mock_handler, mock_exists, mock_dirname, mock_makedirs
|
|
|
|
|
):
|
|
|
|
|
mock_exists.return_value = False
|
|
|
|
|
mock_dirname.return_value = "/tmp/logs"
|
|
|
|
|
mock_logger = MagicMock()
|
|
|
|
|
mock_get_logger.return_value = mock_logger
|
|
|
|
|
mock_logger.handlers = []
|
2025-11-04 08:01:20 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
result = setup_logging(verbose=False)
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
mock_makedirs.assert_called_once_with("/tmp/logs", exist_ok=True)
|
2025-11-07 19:13:41 +01:00
|
|
|
mock_get_logger.assert_called_once_with("rp")
|
2025-11-05 15:34:23 +01:00
|
|
|
mock_logger.setLevel.assert_called_once_with(20) # INFO level
|
|
|
|
|
mock_handler.assert_called_once()
|
|
|
|
|
assert result == mock_logger
|
2025-11-04 08:01:20 +01:00
|
|
|
|
2025-11-07 18:50:28 +01:00
|
|
|
@patch("rp.core.logging.os.makedirs")
|
|
|
|
|
@patch("rp.core.logging.os.path.dirname")
|
|
|
|
|
@patch("rp.core.logging.os.path.exists")
|
|
|
|
|
@patch("rp.core.logging.RotatingFileHandler")
|
|
|
|
|
@patch("rp.core.logging.logging.StreamHandler")
|
|
|
|
|
@patch("rp.core.logging.logging.getLogger")
|
2025-11-05 15:34:23 +01:00
|
|
|
def test_setup_logging_verbose(
|
|
|
|
|
self,
|
|
|
|
|
mock_get_logger,
|
|
|
|
|
mock_stream_handler,
|
|
|
|
|
mock_file_handler,
|
|
|
|
|
mock_exists,
|
|
|
|
|
mock_dirname,
|
|
|
|
|
mock_makedirs,
|
|
|
|
|
):
|
|
|
|
|
mock_exists.return_value = True
|
|
|
|
|
mock_dirname.return_value = "/tmp/logs"
|
|
|
|
|
mock_logger = MagicMock()
|
|
|
|
|
mock_get_logger.return_value = mock_logger
|
|
|
|
|
mock_logger.handlers = MagicMock()
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
result = setup_logging(verbose=True)
|
2025-11-04 08:09:12 +01:00
|
|
|
|
2025-11-05 15:34:23 +01:00
|
|
|
mock_makedirs.assert_not_called()
|
2025-11-07 19:13:41 +01:00
|
|
|
mock_get_logger.assert_called_once_with("rp")
|
2025-11-05 15:34:23 +01:00
|
|
|
mock_logger.setLevel.assert_called_once_with(10) # DEBUG level
|
|
|
|
|
mock_logger.handlers.clear.assert_called_once()
|
|
|
|
|
mock_file_handler.assert_called_once()
|
|
|
|
|
mock_stream_handler.assert_called_once()
|
|
|
|
|
assert result == mock_logger
|
2025-11-04 08:01:20 +01:00
|
|
|
|
2025-11-07 18:50:28 +01:00
|
|
|
@patch("rp.core.logging.logging.getLogger")
|
2025-11-05 15:34:23 +01:00
|
|
|
def test_get_logger_default(self, mock_get_logger):
|
|
|
|
|
mock_logger = MagicMock()
|
|
|
|
|
mock_get_logger.return_value = mock_logger
|
|
|
|
|
|
|
|
|
|
result = get_logger()
|
|
|
|
|
|
2025-11-07 19:13:41 +01:00
|
|
|
mock_get_logger.assert_called_once_with("rp")
|
2025-11-05 15:34:23 +01:00
|
|
|
assert result == mock_logger
|
|
|
|
|
|
2025-11-07 18:50:28 +01:00
|
|
|
@patch("rp.core.logging.logging.getLogger")
|
2025-11-05 15:34:23 +01:00
|
|
|
def test_get_logger_named(self, mock_get_logger):
|
|
|
|
|
mock_logger = MagicMock()
|
|
|
|
|
mock_get_logger.return_value = mock_logger
|
|
|
|
|
|
|
|
|
|
result = get_logger("test")
|
|
|
|
|
|
2025-11-07 18:50:28 +01:00
|
|
|
mock_get_logger.assert_called_once_with("rp.test")
|
2025-11-05 15:34:23 +01:00
|
|
|
assert result == mock_logger
|