Phase 5 cleanup: remove legacy HTML components, fix nav-tree fragment
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m43s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m43s
- Remove old raw! layout components (~app-head, ~app-layout, ~oob-response, ~header-row, ~menu-row, ~oob-header, ~header-child) from layout.sexp - Convert nav-tree fragment from Jinja HTML to sexp source, fixing the "Unexpected character: ." parse error caused by HTML leaking into sexp - Add _as_sexp() helper to safely coerce HTML fragments to ~rich-text - Fix federation/sexp/search.sexpr extra closing paren - Remove dead _html() wrappers from blog and account sexp_components - Remove stale render import from cart sexp_components - Add dev_watcher.py to auto-reload on .sexp/.sexpr/.js/.css changes - Add test_parse_all.py to parse-check all 59 sexpr/sexp files - Fix test assertions for sx- attribute prefix (was hx-) - Add sexp.js version logging for cache debugging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
35
shared/sexp/tests/test_parse_all.py
Normal file
35
shared/sexp/tests/test_parse_all.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""Verify every .sexpr and .sexp file in the repo parses without errors."""
|
||||
|
||||
import os
|
||||
import pytest
|
||||
|
||||
from shared.sexp.parser import parse_all
|
||||
|
||||
|
||||
def _collect_sexp_files():
|
||||
"""Find all .sexpr and .sexp files under the repo root."""
|
||||
repo = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(
|
||||
os.path.abspath(__file__)
|
||||
))))
|
||||
files = []
|
||||
for dirpath, _dirs, filenames in os.walk(repo):
|
||||
if "node_modules" in dirpath or ".git" in dirpath or "artdag" in dirpath:
|
||||
continue
|
||||
for fn in filenames:
|
||||
if fn.endswith((".sexpr", ".sexp")):
|
||||
files.append(os.path.join(dirpath, fn))
|
||||
return sorted(files)
|
||||
|
||||
|
||||
_SEXP_FILES = _collect_sexp_files()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("path", _SEXP_FILES, ids=[
|
||||
os.path.relpath(p) for p in _SEXP_FILES
|
||||
])
|
||||
def test_parse(path):
|
||||
"""Each sexp file should parse without errors."""
|
||||
with open(path) as f:
|
||||
source = f.read()
|
||||
exprs = parse_all(source)
|
||||
assert len(exprs) > 0, f"{path} produced no expressions"
|
||||
Reference in New Issue
Block a user