test_muse_only.py file-level

at main · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """Unit tests for muse-only adapter fail-closed branches."""
2
3 from __future__ import annotations
4
5 from adapters.errors import ReadError, WriteError
6 from tests.support import adapter_for, fail, make_runner, ok
7
8 GIT_FORBIDDEN = "git forbidden in this regime"
9
10
11 def test_status_success(muse_only_config, repo_root) -> None:
12 root = str(repo_root)
13 runner = make_runner(
14 {
15 f"muse -C {root} branch": ok("feat/hub"),
16 f"muse -C {root} status --json": ok('{"dirty": false, "branch": "feat/hub"}'),
17 }
18 )
19 adapter = adapter_for(muse_only_config, repo_root, runner)
20 result = adapter.status()
21 assert result.regime == "muse-only"
22 assert result.branch == "feat/hub"
23 assert "git-forbidden" in result.notes[1]
24
25
26 def test_status_fails_closed_on_muse_error(muse_only_config, repo_root) -> None:
27 root = str(repo_root)
28 runner = make_runner({f"muse -C {root} branch": fail("muse unavailable")})
29 adapter = adapter_for(muse_only_config, repo_root, runner)
30 result = adapter.status()
31 assert isinstance(result, ReadError)
32 assert "muse -C" in result.command
33
34
35 def test_read_head_rejects_git_ref(muse_only_config, repo_root) -> None:
36 adapter = adapter_for(muse_only_config, repo_root, make_runner({}))
37 result = adapter.read_head("origin/main")
38 assert isinstance(result, ReadError)
39 assert result.message == GIT_FORBIDDEN
40
41
42 def test_read_canonical_anchor(muse_only_config, repo_root) -> None:
43 root = str(repo_root)
44 runner = make_runner(
45 {f"muse -C {root} rev-parse main": ok('sha256:abc')}
46 )
47 adapter = adapter_for(muse_only_config, repo_root, runner)
48 result = adapter.read_canonical_anchor()
49 assert result.anchor_sha == "sha256:abc"
50 assert result.source == "muse:main"
51
52
53 def test_realign_noop(muse_only_config, repo_root) -> None:
54 adapter = adapter_for(muse_only_config, repo_root, make_runner({}))
55 result = adapter.realign(dry_run=False, max_commits=50)
56 assert result.reason == "single-history"
57
58
59 def test_mirror_reports_git_forbidden(muse_only_config, repo_root) -> None:
60 adapter = adapter_for(muse_only_config, repo_root, make_runner({}))
61 result = adapter.mirror(dry_run=True)
62 assert result.reason == GIT_FORBIDDEN
63 assert result.pushed is False
64
65
66 def test_commit_feature_refuses_main(muse_only_config, repo_root) -> None:
67 adapter = adapter_for(muse_only_config, repo_root, make_runner({}))
68 result = adapter.commit_feature(branch="main", message="x", paths=[])
69 assert isinstance(result, WriteError)