/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
tests/test_console.py
118 строк
4 KB
User
ci: настроен Black и flake8 для автоматического форматирования кода
04 июл 2026, 08:14
04 июл 2026, 08:14
4778ed6
Код
Авторство
О чём код?
"""Тесты для CLI-диспетчера.""" import pytest import sys from unittest.mock import patch, Mock from liquidcode.console import main class TestConsoleImport: """Тесты импорта console.""" def test_import_main(self): """Проверка импорта main.""" from liquidcode.console import main assert callable(main) def test_import_commands(self): """Проверка импорта COMMANDS.""" from liquidcode.console import COMMANDS assert isinstance(COMMANDS, dict) assert len(COMMANDS) > 0 def test_import_configurators(self): """Проверка импорта CONFIGURATORS.""" from liquidcode.console import CONFIGURATORS assert isinstance(CONFIGURATORS, dict) assert len(CONFIGURATORS) > 0 class TestConsoleMain: """Тесты функции main.""" def test_main_with_known_command(self): """Тест с известной командой.""" with ( patch("sys.argv", ["lcc", "controller", "TestController"]), patch("argparse.ArgumentParser.parse_args") as mock_parse, patch("liquidcode.console.COMMANDS") as mock_commands, ): mock_parse.return_value = Mock(command="controller") mock_commands.__contains__.return_value = True mock_controller_cmd = Mock() mock_commands.__getitem__.return_value = mock_controller_cmd main() mock_controller_cmd.assert_called_once() def test_main_calls_command(self): """main вызывает соответствующую команду.""" with ( patch("sys.argv", ["lcc", "serve"]), patch("argparse.ArgumentParser.parse_args") as mock_parse, patch("liquidcode.console.COMMANDS") as mock_commands, ): mock_parse.return_value = Mock(command="serve") mock_commands.__contains__.return_value = True mock_serve_cmd = Mock() mock_commands.__getitem__.return_value = mock_serve_cmd main() mock_serve_cmd.assert_called_once_with(mock_parse.return_value) def test_main_handles_invalid_command(self): """main обрабатывает недопустимую команду.""" with ( patch("sys.argv", ["lcc", "invalid"]), patch("argparse.ArgumentParser.parse_args") as mock_parse, patch("liquidcode.console.COMMANDS") as mock_commands, patch("sys.exit") as mock_exit, ): mock_parse.return_value = Mock(command="invalid") mock_commands.__contains__.return_value = False main() mock_exit.assert_called_once_with(1) def test_main_calls_sys_exit_on_keyboard_interrupt(self): """main обрабатывает KeyboardInterrupt.""" with ( patch("sys.argv", ["lcc", "controller"]), patch("argparse.ArgumentParser.parse_args") as mock_parse, patch("liquidcode.console.COMMANDS") as mock_commands, patch("sys.exit") as mock_exit, ): mock_parse.return_value = Mock(command="controller") mock_commands.__contains__.return_value = True mock_commands.__getitem__.return_value = Mock(side_effect=KeyboardInterrupt) main() mock_exit.assert_called_once_with(1) def test_main_function_calls_argparse(self): """main вызывает argparse для парсинга аргументов.""" # Запускаем main с реальной командой (попытка вызвать serve) with ( patch("sys.argv", ["lcc", "serve"]), patch("liquidcode.console.COMMANDS") as mock_commands, ): # Mock только COMMANDS, оставляем argparse работать mock_commands.__contains__.return_value = True mock_serve = Mock() mock_commands.__getitem__.return_value = mock_serve try: main() except SystemExit: pass # serve может вызвать SystemExit, это нормально # Проверяем, что COMMANDS был вызван (значит main дошел до вызова команды) assert mock_commands.__getitem__.call_count >= 1