from unittest.mock import patch, MagicMock
from rp.core.logging import setup_logging, get_logger
class TestLogging:
@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")
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 = []
result = setup_logging(verbose=False)
mock_makedirs.assert_called_once_with("/tmp/logs", exist_ok=True)
mock_get_logger.assert_called_once_with("pr")
mock_logger.setLevel.assert_called_once_with(20) # INFO level
mock_handler.assert_called_once()
assert result == mock_logger
@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")
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()
result = setup_logging(verbose=True)
mock_makedirs.assert_not_called()
mock_get_logger.assert_called_once_with("pr")
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
@patch("rp.core.logging.logging.getLogger")
def test_get_logger_default(self, mock_get_logger):
mock_logger = MagicMock()
mock_get_logger.return_value = mock_logger
result = get_logger()
mock_get_logger.assert_called_once_with("pr")
assert result == mock_logger
@patch("rp.core.logging.logging.getLogger")
def test_get_logger_named(self, mock_get_logger):
mock_logger = MagicMock()
mock_get_logger.return_value = mock_logger
result = get_logger("test")
mock_get_logger.assert_called_once_with("rp.test")
assert result == mock_logger