molecule-core/workspace/tests/snapshots
Hongming Wang e336688278 test: extract shared signature-snapshot helpers + skill_loader gate
Two changes in one PR (tightly coupled — the second wouldn't make
sense without the first):

1. Hoist the inspect-based snapshot helpers out of
   test_adapter_base_signature.py into tests/_signature_snapshot.py
   so future surfaces don't copy-paste introspection logic.

   - build_class_signature_record(cls): walks public methods,
     unwraps static/class/abstract methods, returns a stable
     {class, methods: [...]} dict.
   - build_dataclass_record(cls): walks dataclass fields via
     dataclasses.fields(), returns {name, frozen, fields: [...]}.
   - compare_against_snapshot(actual, path): writes-on-first-run +
     diff-on-drift, with both expected and actual JSON in failure
     message.

   test_adapter_base_signature.py is rewritten to use the helpers;
   the existing snapshot file is byte-identical (no behavior change).

2. New gate: tests/test_skill_loader_signature.py covers the
   public dataclasses exported from skill_loader/loader.py:

   - SkillMetadata: every adapter pattern-matches on .runtime for
     skill-compat filtering. Renaming this field would silently
     break per-adapter skill loading — the loader still returns
     objects, but adapters' `if "*" in skill.metadata.runtime`
     raises AttributeError at workspace boot.
   - LoadedSkill: returned in SetupResult.loaded_skills.

   Includes test_snapshot_has_required_skill_metadata_fields
   defense-in-depth: ensures the runtime / id / name / description
   fields stay even if both source and snapshot are updated together.

Verified: deliberately renaming SkillMetadata.runtime trips the
gate with full snapshot diff in the failure message.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 06:27:20 -07:00
..
a2a_instructions_cli.txt chore(registry): snapshot tests + CLI-block alignment for #2240 2026-04-28 20:42:15 -07:00
a2a_instructions_mcp.txt chore(registry): snapshot tests + CLI-block alignment for #2240 2026-04-28 20:42:15 -07:00
adapter_base_signature.json test(adapter_base): extend signature snapshot to public dataclasses (#2364 item 2 followup) 2026-04-30 05:53:10 -07:00
hma_instructions.txt chore(registry): snapshot tests + CLI-block alignment for #2240 2026-04-28 20:42:15 -07:00
skill_loader_signature.json test: extract shared signature-snapshot helpers + skill_loader gate 2026-04-30 06:27:20 -07:00