40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
CORE = Path(__file__).resolve().parents[1] / "python"
|
|
|
|
|
|
def test_message_helpers_are_standalone_and_keep_legacy_exports() -> None:
|
|
result = subprocess.run(
|
|
[
|
|
sys.executable,
|
|
"-c",
|
|
"""
|
|
import json
|
|
import sys
|
|
import message_utils
|
|
assert "memory_core" not in sys.modules
|
|
assert "telemetry" not in sys.modules
|
|
text = "prefix " + "日本語🙂" * 250 + ' {"password": "secret value"}'
|
|
redacted = message_utils.redact(text)
|
|
assert "secret value" not in redacted
|
|
messages = [{"role": "user", "content": redacted}]
|
|
batches = message_utils.extraction_message_batches(messages, max_tokens=100)
|
|
assert len(batches) > 1
|
|
assert all(message_utils._message_tokens(batch) <= 100 for batch in batches)
|
|
assert "".join(m["content"] for batch in batches for m in batch) == redacted
|
|
import memory_core
|
|
for name in ("redact", "SECRET_PATTERNS", "extraction_message_batches", "_message_tokens"):
|
|
assert getattr(memory_core, name) is getattr(message_utils, name)
|
|
""",
|
|
],
|
|
cwd=CORE,
|
|
text=True,
|
|
capture_output=True,
|
|
check=False,
|
|
)
|
|
assert result.returncode == 0, result.stdout + result.stderr
|