| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- from unittest.mock import patch, call
- import pytest
- from src.main import run
- def test_repl_dispatches_known_command(capsys):
- inputs = iter(["help", KeyboardInterrupt()])
- def fake_input(prompt):
- val = next(inputs)
- if isinstance(val, KeyboardInterrupt):
- raise val
- return val
- with patch("src.main.input", fake_input):
- run()
- captured = capsys.readouterr()
- assert "welcome to the best testapp ever" in captured.out
- assert "Available commands" in captured.out
- def test_repl_unknown_command_prints_error(capsys):
- inputs = iter(["unknowncmd", KeyboardInterrupt()])
- def fake_input(prompt):
- val = next(inputs)
- if isinstance(val, KeyboardInterrupt):
- raise val
- return val
- with patch("src.main.input", fake_input):
- run()
- captured = capsys.readouterr()
- assert "Unknown command: unknowncmd" in captured.out
- assert "Type 'help' for available commands" in captured.out
- def test_repl_empty_input_is_ignored(capsys):
- inputs = iter(["", KeyboardInterrupt()])
- def fake_input(prompt):
- val = next(inputs)
- if isinstance(val, KeyboardInterrupt):
- raise val
- return val
- with patch("src.main.input", fake_input):
- run()
- captured = capsys.readouterr()
- # Only the welcome message — no "Unknown command" line
- lines = [l for l in captured.out.strip().splitlines() if l]
- assert lines == ["welcome to the best testapp ever"]
- def test_repl_input_is_case_insensitive(capsys):
- inputs = iter(["HELP", KeyboardInterrupt()])
- def fake_input(prompt):
- val = next(inputs)
- if isinstance(val, KeyboardInterrupt):
- raise val
- return val
- with patch("src.main.input", fake_input):
- run()
- captured = capsys.readouterr()
- assert "Available commands" in captured.out
|