test: cover main hotfix regressions
This commit is contained in:
parent
a613c921c8
commit
f62ce2696b
|
|
@ -7,6 +7,7 @@ the two filenames to `.gitignore` when `<dir>` is a git repository.
|
|||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from unittest.mock import mock_open, patch
|
||||
|
||||
from mempalace.cli import _ensure_mempalace_files_gitignored
|
||||
|
||||
|
|
@ -60,3 +61,20 @@ def test_handles_gitignore_without_trailing_newline(tmp_path):
|
|||
assert "dist\n" in contents
|
||||
assert "mempalace.yaml" in contents
|
||||
assert "entities.json" in contents
|
||||
|
||||
|
||||
def test_gitignore_io_pins_utf8_and_defensive_decode(tmp_path):
|
||||
"""Regression for #1648: never fall back to the Windows locale codec."""
|
||||
_git_init(tmp_path)
|
||||
gitignore = tmp_path / ".gitignore"
|
||||
gitignore.write_text("# café\n", encoding="utf-8")
|
||||
append_handle = mock_open()
|
||||
|
||||
with (
|
||||
patch.object(Path, "read_text", return_value="# café\n") as read_text,
|
||||
patch("builtins.open", append_handle),
|
||||
):
|
||||
assert _ensure_mempalace_files_gitignored(tmp_path) is True
|
||||
|
||||
read_text.assert_called_once_with(encoding="utf-8", errors="replace")
|
||||
append_handle.assert_called_once_with(gitignore, "a", encoding="utf-8")
|
||||
|
|
|
|||
|
|
@ -201,6 +201,27 @@ def test_layer1_importance_from_various_keys():
|
|||
assert "ESSENTIAL STORY" in result
|
||||
|
||||
|
||||
def test_layer1_breaks_importance_ties_by_filed_at_recency():
|
||||
"""Equal-importance drawers surface newest-first instead of insertion order."""
|
||||
docs = ["oldest memory", "newest memory", "middle memory"]
|
||||
metas = [
|
||||
{"room": "moments", "importance": 3, "filed_at": "2026-01-01T00:00:00Z"},
|
||||
{"room": "moments", "importance": 3, "filed_at": "2026-03-01T00:00:00Z"},
|
||||
{"room": "moments", "importance": 3, "filed_at": "2026-02-01T00:00:00Z"},
|
||||
]
|
||||
mock_col = _mock_chromadb_for_layer(docs, metas)
|
||||
|
||||
with (
|
||||
patch("mempalace.layers.MempalaceConfig") as mock_cfg,
|
||||
patch("mempalace.layers._get_collection", return_value=mock_col),
|
||||
):
|
||||
mock_cfg.return_value.palace_path = "/fake"
|
||||
result = Layer1(palace_path="/fake").generate()
|
||||
|
||||
assert result.index("newest memory") < result.index("middle memory")
|
||||
assert result.index("middle memory") < result.index("oldest memory")
|
||||
|
||||
|
||||
def test_layer1_batch_exception_breaks():
|
||||
"""If col.get raises on a batch, loop breaks gracefully."""
|
||||
mock_col = MagicMock()
|
||||
|
|
|
|||
Loading…
Reference in New Issue