test_adapter_factory.py python
70 lines 2.3 KB
Raw
sha256:c07f2f34a0db9f43fe866f157d1935322008545ff8940c06c7c921eb219c55ab NXP-b DONE: independent BV-r2 pass + ISR (SD-17) Human minor ⚠ breaking 2 days ago
1 """Integration tests — config + factory + adapter composition."""
2
3 from __future__ import annotations
4
5 from pathlib import Path
6
7 import pytest
8
9 from adapters import load_adapter
10 from adapters.errors import ConfigError, ReadError
11 from adapters.git_only.adapter import GitOnlyAdapter
12 from adapters.muse_git_mirror.adapter import MuseGitMirrorAdapter
13 from adapters.muse_only.adapter import MuseOnlyAdapter
14 from tests.support import fail, make_runner, ok, write_config
15
16
17 def test_load_adapter_git_only(repo_root: Path) -> None:
18 write_config(repo_root, "config-git-only.yaml")
19 runner = make_runner(
20 {
21 "git rev-parse": ok("main"),
22 "git status": ok(""),
23 }
24 )
25 adapter = load_adapter(repo_root, runner=runner)
26 assert isinstance(adapter, GitOnlyAdapter)
27 status = adapter.status()
28 assert status.branch == "main"
29
30
31 def test_load_adapter_muse_only(repo_root: Path) -> None:
32 write_config(repo_root, "config-muse-only.yaml")
33 root = str(repo_root.resolve())
34 runner = make_runner(
35 {
36 f"muse -C {root} branch": ok("main"),
37 f"muse -C {root} status": ok(""),
38 }
39 )
40 adapter = load_adapter(repo_root, runner=runner)
41 assert isinstance(adapter, MuseOnlyAdapter)
42
43
44 def test_load_adapter_muse_git_mirror(repo_root: Path) -> None:
45 write_config(repo_root, "config-muse-git-mirror.yaml")
46 root = str(repo_root.resolve())
47 runner = make_runner(
48 {
49 f"muse -C {root} rev-parse --abbrev-ref HEAD": ok("main"),
50 f"muse -C {root} status --porcelain": ok(""),
51 "git rev-parse --abbrev-ref HEAD": ok("main"),
52 "git status --porcelain": ok(""),
53 }
54 )
55 adapter = load_adapter(repo_root, runner=runner)
56 assert isinstance(adapter, MuseGitMirrorAdapter)
57
58
59 def test_load_adapter_missing_config(tmp_path: Path) -> None:
60 with pytest.raises(ConfigError):
61 load_adapter(tmp_path)
62
63
64 def test_end_to_end_read_head_chain_fails_closed(repo_root: Path) -> None:
65 write_config(repo_root, "config-git-only.yaml")
66 runner = make_runner({"git rev-parse": fail("network down")})
67 adapter = load_adapter(repo_root, runner=runner)
68 result = adapter.read_head("origin/main")
69 assert isinstance(result, ReadError)
70 assert result.exit_code == 1
File History 1 commit
sha256:c07f2f34a0db9f43fe866f157d1935322008545ff8940c06c7c921eb219c55ab NXP-b DONE: independent BV-r2 pass + ISR (SD-17) Human minor 2 days ago