feat: experiment log append/read utilities and rich viewer
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import sys, os, json, tempfile, pytest
|
||||
sys.path.insert(0, 'bin')
|
||||
from log_append import append_entry, read_entries, LOG_PATH
|
||||
|
||||
def test_append_creates_file(tmp_path):
|
||||
log = str(tmp_path / "log.jsonl")
|
||||
append_entry({"project": "test"}, path=log)
|
||||
assert os.path.exists(log)
|
||||
|
||||
def test_append_writes_valid_json(tmp_path):
|
||||
log = str(tmp_path / "log.jsonl")
|
||||
append_entry({"project": "x", "kept": True}, path=log)
|
||||
with open(log) as f:
|
||||
data = json.loads(f.read().strip())
|
||||
assert data["project"] == "x"
|
||||
assert data["kept"] is True
|
||||
|
||||
def test_append_adds_timestamp(tmp_path):
|
||||
log = str(tmp_path / "log.jsonl")
|
||||
append_entry({"project": "x"}, path=log)
|
||||
with open(log) as f:
|
||||
data = json.loads(f.read().strip())
|
||||
assert "ts" in data
|
||||
|
||||
def test_append_multiple_entries(tmp_path):
|
||||
log = str(tmp_path / "log.jsonl")
|
||||
for i in range(3):
|
||||
append_entry({"n": i}, path=log)
|
||||
entries = read_entries(path=log)
|
||||
assert len(entries) == 3
|
||||
assert entries[1]["n"] == 1
|
||||
|
||||
def test_read_entries_empty_if_no_file(tmp_path):
|
||||
log = str(tmp_path / "nonexistent.jsonl")
|
||||
assert read_entries(path=log) == []
|
||||
|
||||
def test_read_entries_skips_malformed_lines(tmp_path):
|
||||
log = str(tmp_path / "log.jsonl")
|
||||
with open(log, 'w') as f:
|
||||
f.write('{"project": "ok"}\n')
|
||||
f.write('not-valid-json\n')
|
||||
f.write('{"project": "also-ok"}\n')
|
||||
entries = read_entries(path=log)
|
||||
assert len(entries) == 2
|
||||
Reference in New Issue
Block a user