feat: new settings, CLI skeleton and interface skeletons
Adds the pydantic-settings Settings with validated GITEA_URL, OAuth scopes and toolsets, the argparse CLI skeleton, catalog.model, identity and GiteaAPIError. Test fixtures now isolate env, cwd and state paths in tmp.
This commit is contained in:
1 parent
4ac9626eb5
commit
b82e2866cb
24 files changed
+1512
-605
No files matched your search
@@ -0,0 +1,37 @@
|
||||
"""Tests for the command line skeleton."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from aegis_gitea_mcp import __version__
|
||||
from aegis_gitea_mcp.cli import build_parser, main
|
||||
|
||||
|
||||
def test_version_prints_package_version(capsys: pytest.CaptureFixture[str]) -> None:
|
||||
assert main(["version"]) == 0
|
||||
assert capsys.readouterr().out.strip() == __version__
|
||||
|
||||
|
||||
@pytest.mark.parametrize("argv", [[], ["serve"], ["serve", "--transport", "http"], ["setup"]])
|
||||
def test_unbuilt_commands_exit_2(argv: list[str], capsys: pytest.CaptureFixture[str]) -> None:
|
||||
assert main(argv) == 2
|
||||
captured = capsys.readouterr()
|
||||
assert "not implemented yet" in captured.err
|
||||
assert captured.out == ""
|
||||
|
||||
|
||||
def test_serve_transport_choices() -> None:
|
||||
parser = build_parser()
|
||||
assert parser.parse_args(["serve", "--transport", "stdio"]).transport == "stdio"
|
||||
with pytest.raises(SystemExit):
|
||||
parser.parse_args(["serve", "--transport", "sse"])
|
||||
|
||||
|
||||
def test_package_version_matches_pyproject() -> None:
|
||||
tomllib = pytest.importorskip("tomllib") # Python 3.11+
|
||||
|
||||
data = tomllib.loads((Path(__file__).parent.parent / "pyproject.toml").read_text())
|
||||
assert data["project"]["version"] == __version__
|
||||
Reference in new issue
Block a user