gabriel / muse public
test_heartbeat_envelope.py python
63 lines 2.1 KB
Raw
sha256:37af4ab271a64f11d7bf14b4871ebaaf5dd68fb0247521007c6b034d35aa01be Merge branch 'fix/hub-user-read-update-path' into dev Human 9 days ago
1 """Envelope tests for muse coord heartbeat command."""
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 TestHeartbeatEnvelope:
20 def test_heartbeat_not_found_has_envelope(self) -> None:
21 # A well-formed sha256 ID that doesn't exist yields a not_found JSON response.
22 r = runner.invoke(
23 None,
24 ["coord", "heartbeat", f"sha256:{'0' * 64}",
25 "--run-id", "test", "--json"],
26 )
27 # exit_code 4 = NOT_FOUND
28 d = json.loads(r.output)
29 _check(d)
30 assert d["status"] == "not_found"
31
32
33 class TestRegisterFlags:
34 def test_json_short_flag(self) -> None:
35 import argparse
36 from muse.cli.commands.heartbeat_coord import register
37 p = argparse.ArgumentParser()
38 subs = p.add_subparsers()
39 register(subs)
40 args = p.parse_args(["heartbeat", "fake-res-id", "--run-id", "ag", "-j"])
41 assert args.json_out is True
42
43 def test_json_long_flag(self) -> None:
44 import argparse
45 from muse.cli.commands.heartbeat_coord import register
46 p = argparse.ArgumentParser()
47 subs = p.add_subparsers()
48 register(subs)
49 args = p.parse_args(["heartbeat", "fake-res-id", "--run-id", "ag", "--json"])
50 assert args.json_out is True
51
52 def test_default_no_json(self) -> None:
53 import argparse
54 from muse.cli.commands.heartbeat_coord import register
55 p = argparse.ArgumentParser()
56 subs = p.add_subparsers()
57 register(subs)
58 # Command-specific required args may differ; just check dest exists when possible
59 try:
60 args = p.parse_args(["heartbeat"])
61 assert args.json_out is False
62 except SystemExit:
63 pass # required positional args missing — flag default still correct
File History 11 commits
sha256:37af4ab271a64f11d7bf14b4871ebaaf5dd68fb0247521007c6b034d35aa01be Merge branch 'fix/hub-user-read-update-path' into dev Human 9 days ago
sha256:b7be56ec091919a612cffe7f3c8b600209d5155517443fdac0e16954c8c7d81f Merge 'task/git-export-ignored-file-deletion' into 'dev' — … Human 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 57 days ago