Private
Public Access
0
0

feat(tests): add check_test_toml_paths.py audit script

This commit is contained in:
2026-06-02 21:27:47 -04:00
parent 0d6e31bf09
commit 1660114bc7
3 changed files with 92 additions and 29 deletions
+3 -3
View File
@@ -25,7 +25,7 @@ separate_tool_calls_panel = true
bg_shader_enabled = false
crt_filter_enabled = false
separate_task_dag = false
separate_usage_analytics = false
separate_usage_analytics = true
separate_tier1 = false
separate_tier2 = false
separate_tier3 = false
@@ -38,7 +38,7 @@ separate_external_tools = false
"AI Settings" = true
"MMA Dashboard" = false
"Task DAG" = false
"Usage Analytics" = false
"Usage Analytics" = true
"Tier 1" = false
"Tier 2" = false
"Tier 3" = false
@@ -65,7 +65,7 @@ Diagnostics = false
palette = "10x Dark"
font_path = "C:/projects/manual_slop/assets/fonts/MapleMono-Regular.ttf"
font_size = 20.0
scale = 1.2000000476837158
scale = 1.0
transparency = 0.46000000834465027
child_transparency = 1.0
+26 -26
View File
@@ -44,20 +44,20 @@ Collapsed=0
DockId=0x00000010,0
[Window][Message]
Pos=506,37
Size=1510,1403
Pos=1816,32
Size=2024,2128
Collapsed=0
DockId=0x00000006,0
[Window][Response]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,5
[Window][Tool Calls]
Pos=506,37
Size=1510,1403
Pos=1816,32
Size=2024,2128
Collapsed=0
DockId=0x00000006,3
@@ -76,8 +76,8 @@ Collapsed=0
DockId=0xAFC85805,2
[Window][Theme]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,0
@@ -105,26 +105,26 @@ Collapsed=0
DockId=0x0000000D,0
[Window][Discussion Hub]
Pos=506,37
Size=1510,1403
Pos=1816,32
Size=2024,2128
Collapsed=0
DockId=0x00000006,1
[Window][Operations Hub]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,4
[Window][Files & Media]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,3
[Window][AI Settings]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,2
@@ -140,8 +140,8 @@ Collapsed=0
DockId=0x00000006,2
[Window][Log Management]
Pos=506,37
Size=1510,1403
Pos=1816,32
Size=2024,2128
Collapsed=0
DockId=0x00000006,2
@@ -332,8 +332,8 @@ Size=967,499
Collapsed=0
[Window][Usage Analytics]
Pos=605,71
Size=369,459
Pos=1264,22
Size=517,560
Collapsed=1
[Window][Tool Preset Manager]
@@ -409,8 +409,8 @@ Collapsed=0
DockId=0x00000006,1
[Window][Project Settings]
Pos=0,37
Size=504,1403
Pos=0,32
Size=1814,2128
Collapsed=0
DockId=0x00000010,1
@@ -693,13 +693,13 @@ Column 1 Weight=1.0000
DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,37 Size=2016,1403 Split=X
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,32 Size=3840,2128 Split=X
DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2357,1183 Split=X
DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2
DockNode ID=0x00000005 Parent=0x0000000B SizeRef=1320,1681 Split=Y Selected=0x3F1379AF
DockNode ID=0x00000010 Parent=0x00000005 SizeRef=983,1140 CentralNode=1 Selected=0x0D5A5273
DockNode ID=0x00000005 Parent=0x0000000B SizeRef=1814,1681 Split=Y Selected=0x3F1379AF
DockNode ID=0x00000010 Parent=0x00000005 SizeRef=983,1140 CentralNode=1 Selected=0x7BD57D6A
DockNode ID=0x00000011 Parent=0x00000005 SizeRef=983,184 Selected=0x432BAE4E
DockNode ID=0x00000006 Parent=0x0000000B SizeRef=1510,1681 Selected=0x2C0206CE
DockNode ID=0x00000006 Parent=0x0000000B SizeRef=2024,1681 Selected=0x66CFB56E
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=488,1183 Selected=0x3AEC3498
+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env python3
"""Detect tests that read/write real TOML files. Used as a CI gate.
Run from repo root: python scripts/check_test_toml_paths.py
Exits 0 if all tests use sandboxed paths, 1 otherwise.
"""
from __future__ import annotations
import re
import sys
from pathlib import Path
TOML_BASENAMES = {
"manual_slop", "config", "credentials",
"presets", "personas", "tool_presets",
"workspace_profiles", "tool_presets",
}
PATTERNS = [
re.compile(rf'Path\(["\'](?:{"|".join(TOML_BASENAMES)})\.toml["\']'),
re.compile(rf'open\(["\'](?:{"|".join(TOML_BASENAMES)})\.toml["\']'),
re.compile(rf'["\']\.{{1,2}}/(?:{"|".join(TOML_BASENAMES)})\.toml["\']'),
re.compile(rf'Path\(["\']\.\./(?:{"|".join(TOML_BASENAMES)})\.toml["\']'),
]
EXCLUDE_DIRS = {"artifacts", "logs", "__pycache__", "snapshots"}
def find_violations(tests_dir: Path) -> list[tuple[Path, int, str]]:
violations = []
for test_file in tests_dir.rglob("test_*.py"):
if any(excluded in test_file.parts for excluded in EXCLUDE_DIRS):
continue
try:
content = test_file.read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
continue
for lineno, line in enumerate(content.splitlines(), start=1):
for pattern in PATTERNS:
if pattern.search(line):
violations.append((test_file, lineno, line.strip()))
break
return violations
def main() -> int:
repo_root = Path(__file__).resolve().parent.parent
tests_dir = repo_root / "tests"
if not tests_dir.exists():
print(f"Tests dir not found: {tests_dir}", file=sys.stderr)
return 1
violations = find_violations(tests_dir)
if not violations:
print("OK: No tests reference real TOML files.")
return 0
print(f"FAIL: {len(violations)} test(s) reference real TOML files:")
for path, lineno, line in violations:
rel = path.relative_to(repo_root)
print(f" {rel}:{lineno}: {line}")
return 1
if __name__ == "__main__":
sys.exit(main())