example
This commit is contained in:
45
tests/test_package.py
Normal file
45
tests/test_package.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""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."]
|
||||
Reference in New Issue
Block a user