mirror of
https://github.com/github/spec-kit.git
synced 2026-08-15 14:02:04 +02:00
fix(events): skip non-UTF-8 extension manifests (#3900)
Assisted-by: GitHub Copilot (model: GPT-5.6 Sol, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -895,7 +895,7 @@ def collect_extension_events(project_root: Path) -> ResolvedEvents:
|
||||
continue
|
||||
try:
|
||||
data = yaml.safe_load(ext_yml.read_text(encoding="utf-8")) or {}
|
||||
except yaml.YAMLError:
|
||||
except (UnicodeDecodeError, yaml.YAMLError):
|
||||
continue
|
||||
if not isinstance(data, dict):
|
||||
continue
|
||||
|
||||
@@ -164,6 +164,13 @@ class TestCollectExtensionEvents:
|
||||
(ext_dir / "extension.yml").write_text("invalid: - - -", encoding="utf-8")
|
||||
assert collect_extension_events(tmp_path) == {}
|
||||
|
||||
def test_non_utf8_manifest_skipped(self, tmp_path):
|
||||
ext_dir = tmp_path / ".specify" / "extensions" / "my-ext"
|
||||
ext_dir.mkdir(parents=True)
|
||||
(ext_dir / "extension.yml").write_bytes(b"\xff\xfe")
|
||||
|
||||
assert collect_extension_events(tmp_path) == {}
|
||||
|
||||
def test_event_command_ref_canonicalized_via_manifest(self, tmp_path):
|
||||
"""R1: events are read from a validated ExtensionManifest, so an
|
||||
obsolete command ref (e.g. my-ext.boot) is canonicalized
|
||||
|
||||
Reference in New Issue
Block a user