Files
wehub-resource-sync e4dcfc49aa
Tests / Import Check (Python 3.13) (push) Has been cancelled
Tests / Import Check (Python 3.14) (push) Has been cancelled
Tests / Python Tests (Python 3.11) (push) Has been cancelled
Tests / Python Tests (Python 3.12) (push) Has been cancelled
Tests / Python Tests (Python 3.14) (push) Has been cancelled
Tests / Test Summary (push) Has been cancelled
Tests / Lint and Format (push) Has been cancelled
Tests / Web Node Tests (push) Has been cancelled
Tests / Import Check (Python 3.11) (push) Has been cancelled
Tests / Import Check (Python 3.12) (push) Has been cancelled
Tests / Python Tests (Python 3.13) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:00:43 +08:00

71 lines
2.0 KiB
Python

from __future__ import annotations
import time
from deeptutor.services.memory.ids import (
is_entry_id,
is_shortname_ref,
is_trace_id,
is_valid_ref,
new_entry_id,
new_trace_id,
new_ulid,
)
def test_ulid_length_and_charset() -> None:
u = new_ulid()
assert len(u) == 26
assert all(c in "0123456789ABCDEFGHJKMNPQRSTVWXYZ" for c in u)
def test_ulid_monotonic_within_window() -> None:
# Within a few ms the timestamp prefix should sort consistently.
first = new_ulid()
time.sleep(0.005)
second = new_ulid()
assert first[:10] <= second[:10]
def test_entry_id_shape_and_validation() -> None:
eid = new_entry_id()
assert eid.startswith("m_")
assert is_entry_id(eid)
assert not is_trace_id(eid)
def test_trace_id_shape_and_validation() -> None:
tid = new_trace_id("chat")
assert tid.startswith("chat:")
assert is_trace_id(tid)
assert not is_entry_id(tid)
def test_invalid_ids_rejected() -> None:
assert not is_entry_id("m_short")
assert not is_entry_id("foo")
assert not is_entry_id("")
assert not is_trace_id("01HZK4ABCDEFGHJKMNPQRSTVWX") # missing surface prefix
assert not is_trace_id("CHAT:01HZK4ABCDEFGHJKMNPQRSTVWX") # uppercase surface
def test_uniqueness_across_calls() -> None:
ids = {new_ulid() for _ in range(1000)}
assert len(ids) == 1000
def test_shortname_ref_accepts_known_surfaces() -> None:
"""L3 refs are bare surface names. Whitelisted (not a loose regex)
so an LLM hallucination like ``not-an-id`` doesn't sneak through."""
for surface in ("chat", "notebook", "quiz", "kb", "book", "partner", "cowriter"):
assert is_shortname_ref(surface), surface
# is_valid_ref must accept the new form so the ops validator does too.
assert is_valid_ref("chat")
def test_shortname_ref_rejects_unknown_tokens() -> None:
assert not is_shortname_ref("CHAT")
assert not is_shortname_ref("not-an-id")
assert not is_shortname_ref("")
assert not is_shortname_ref("co-writer") # the actual surface is ``cowriter``