gabriel / muse public
test_harmony_envelope.py python
85 lines 2.9 KB
Raw
sha256:c0eba5ad689cec79f4a3fcdc4f5da78556cb4b8cb7b330f944634356c10379ed chore: pivot to nightly channel — bump version to 0.2.0.dev… Sonnet 5 patch 13 days 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 10 commits
sha256:c287f599c5429903a139eadf3c5db5d930520e57cb0c3c575d9570e953c3b2d6 chore: bump version to 0.2.0.dev2 — nightly.2 Sonnet 4.6 patch 12 days ago
sha256:8de4334a98c945aace420969d389ad678aa926d4ab4e886b2ac4c4241cb3bf2b revert: keep pyproject.toml in canonical PEP 440 form Sonnet 4.6 patch 15 days ago
sha256:50bb615c573aa4b928fca75b60f82ba2a659910066507cec6a95c412ae22ccb9 docs: add issue docs for push have-negotiation bug (#55) an… Sonnet 4.6 18 days ago
sha256:d90d175cded68aae1d4ffcf4858917854195d0cd8ce1fe73cee4dbc02541cb74 chore: trigger push to surface null-OID paths Sonnet 4.6 24 days ago
sha256:e452ad9a6ace6ccc6d875a35e06caf9da5576a970c1c36133b69a891ce5fefa8 chore: prebuild timing test Sonnet 4.6 34 days ago
sha256:0008ab6695e3e064b3e236b24fd19e538fef6a588eb0d211622f4466d919c0b1 merge: pull staging/dev — advance to 0.2.0rc12 Sonnet 4.6 patch 36 days ago
sha256:9c33d61749fff814c5226d5386aa2af7064c2c02788594a25fdd709358132eea fix: _PROPOSAL_PREFIX_RESOLVE_LIMIT 200 → 100 to match hub … Sonnet 4.6 47 days ago
sha256:36c3cb3e76619d4c30a6d9bf81b5ec4ff148e30dcfed913e3114ca7b43b81c7e fix: rename objects→blobs in push client and all stale test… Sonnet 4.6 patch 50 days ago
sha256:c06a9b9b9fee26c68ea725b44d54b2c0a171301ce9de746d5b656617b4463a9a fix: repair four test failures from post-migration audit Sonnet 4.6 patch 56 days ago
sha256:1900655993c83c4107067375548a7be823e471d2515830842f1a12cba4bd3cdf fix: unified object store migration — idempotent writes, JS… Sonnet 4.6 minor 56 days ago