from unittest.mock import MagicMock, patch from rp.core.logging import get_logger, setup_logging 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("rp") 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("rp") 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("rp") 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