"""Tests for flow.commands.package.""" from types import SimpleNamespace from flow.commands import package def test_load_installed_returns_empty_on_malformed_json(tmp_path, monkeypatch): state_file = tmp_path / "installed.json" state_file.write_text("{broken", encoding="utf-8") monkeypatch.setattr(package, "INSTALLED_STATE", state_file) assert package._load_installed() == {} def test_load_installed_returns_empty_on_non_mapping_json(tmp_path, monkeypatch): state_file = tmp_path / "installed.json" state_file.write_text('["neovim"]', encoding="utf-8") monkeypatch.setattr(package, "INSTALLED_STATE", state_file) assert package._load_installed() == {} class _ConsoleCapture: def __init__(self): self.info_messages = [] def info(self, message): self.info_messages.append(message) def table(self, _headers, _rows): raise AssertionError("table() should not be called when installed state is malformed") def test_run_list_handles_malformed_installed_state(tmp_path, monkeypatch): state_file = tmp_path / "installed.json" state_file.write_text("{oops", encoding="utf-8") monkeypatch.setattr(package, "INSTALLED_STATE", state_file) monkeypatch.setattr(package, "_get_definitions", lambda _ctx: {}) ctx = SimpleNamespace(console=_ConsoleCapture()) package.run_list(ctx, SimpleNamespace(all=False)) assert ctx.console.info_messages == ["No packages installed."]