gabriel / muse public
test_harmony_envelope.py python
85 lines 2.9 KB
Raw
sha256:18b983389ee1b55900fcd799bfbb496552d2e3ecded9d18cefbfef188947a12e chore: remove blob-debug test marker file Sonnet 4.6 19 hours ago
1 """Envelope tests for muse harmony subcommands."""
2 from __future__ import annotations
3 from collections.abc import Mapping
4 import json
5 import pytest
6 from tests.cli_test_helper import CliRunner
7
8 runner = CliRunner()
9
10 _FIELDS = ("muse_version", "schema", "timestamp", "warnings")
11
12
13 def _check(d: Mapping[str, object]) -> None:
14 for f in _FIELDS:
15 assert f in d, f"missing {f}"
16 assert "schema_version" not in d
17
18
19 class TestHarmonyEnvelope:
20 def test_harmony_list_has_envelope(self) -> None:
21 r = runner.invoke(None, ["harmony", "list", "--json"])
22 assert r.exit_code == 0, r.output
23 _check(json.loads(r.output))
24
25 def test_harmony_policy_list_has_envelope(self) -> None:
26 r = runner.invoke(None, ["harmony", "policy-list", "--json"])
27 assert r.exit_code == 0, r.output
28 _check(json.loads(r.output))
29
30 def test_harmony_audit_has_envelope(self) -> None:
31 r = runner.invoke(None, ["harmony", "audit", "--json"])
32 assert r.exit_code == 0, r.output
33 _check(json.loads(r.output))
34
35 def test_harmony_escalations_has_envelope(self) -> None:
36 r = runner.invoke(None, ["harmony", "escalations", "--json"])
37 assert r.exit_code == 0, r.output
38 _check(json.loads(r.output))
39
40 def test_harmony_gc_has_envelope(self) -> None:
41 r = runner.invoke(None, ["harmony", "gc", "--json"])
42 assert r.exit_code == 0, r.output
43 _check(json.loads(r.output))
44
45
46 # ---------------------------------------------------------------------------
47 # TestRegisterFlags — argparse-level verification
48 # ---------------------------------------------------------------------------
49
50
51 class TestRegisterFlags:
52 """Verify that harmony subcommands wire --json / -j correctly."""
53
54 def _make_parser(self) -> "argparse.ArgumentParser":
55 import argparse
56 from muse.cli.commands.harmony import register
57 ap = argparse.ArgumentParser()
58 subs = ap.add_subparsers()
59 register(subs)
60 return ap
61
62 def test_list_json_flag_long(self) -> None:
63 ns = self._make_parser().parse_args(["harmony", "list", "--json"])
64 assert ns.json_out is True
65
66 def test_list_j_alias(self) -> None:
67 ns = self._make_parser().parse_args(["harmony", "list", "-j"])
68 assert ns.json_out is True
69
70 def test_list_default_is_text(self) -> None:
71 ns = self._make_parser().parse_args(["harmony", "list"])
72 assert ns.json_out is False
73
74 def test_gc_j_alias(self) -> None:
75 ns = self._make_parser().parse_args(["harmony", "gc", "-j"])
76 assert ns.json_out is True
77
78 def test_audit_j_alias(self) -> None:
79 ns = self._make_parser().parse_args(["harmony", "audit", "-j"])
80 assert ns.json_out is True
81
82 def test_dest_is_json_out(self) -> None:
83 ns = self._make_parser().parse_args(["harmony", "list", "-j"])
84 assert hasattr(ns, "json_out")
85 assert not hasattr(ns, "fmt")
File History 7 commits
sha256:18b983389ee1b55900fcd799bfbb496552d2e3ecded9d18cefbfef188947a12e chore: remove blob-debug test marker file Sonnet 4.6 19 hours ago
sha256:e452ad9a6ace6ccc6d875a35e06caf9da5576a970c1c36133b69a891ce5fefa8 chore: prebuild timing test Sonnet 4.6 8 days ago
sha256:0008ab6695e3e064b3e236b24fd19e538fef6a588eb0d211622f4466d919c0b1 merge: pull staging/dev — advance to 0.2.0rc12 Sonnet 4.6 patch 9 days ago
sha256:9c33d61749fff814c5226d5386aa2af7064c2c02788594a25fdd709358132eea fix: _PROPOSAL_PREFIX_RESOLVE_LIMIT 200 → 100 to match hub … Sonnet 4.6 21 days ago
sha256:36c3cb3e76619d4c30a6d9bf81b5ec4ff148e30dcfed913e3114ca7b43b81c7e fix: rename objects→blobs in push client and all stale test… Sonnet 4.6 patch 24 days ago
sha256:c06a9b9b9fee26c68ea725b44d54b2c0a171301ce9de746d5b656617b4463a9a fix: repair four test failures from post-migration audit Sonnet 4.6 patch 30 days ago
sha256:1900655993c83c4107067375548a7be823e471d2515830842f1a12cba4bd3cdf fix: unified object store migration — idempotent writes, JS… Sonnet 4.6 minor 30 days ago