38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
from pathlib import Path
|
|
|
|
# The demo pages are not regression suites, but every one of them must at
|
|
# least compile and render: a preprocessor or runtime change that breaks a
|
|
# demo page (e.g. literal text that looks like an entry point) should fail CI.
|
|
|
|
ERROR_MARKERS = [
|
|
"uce compile error",
|
|
"fatal signal during request",
|
|
"uncaught exception during request",
|
|
]
|
|
|
|
|
|
def _repo_root():
|
|
return Path(__file__).resolve().parents[2]
|
|
|
|
|
|
def _make_demo_case(page_path):
|
|
def run(context):
|
|
response = context.expect_status(page_path, 200)
|
|
body_lower = response.text.lower()
|
|
for marker in ERROR_MARKERS:
|
|
if marker in body_lower:
|
|
raise Exception("response body contained error marker %r for %s" % (marker, page_path))
|
|
return "HTTP 200 without error markers for %s" % page_path
|
|
|
|
return run
|
|
|
|
|
|
def register(registry):
|
|
demo_dir = _repo_root() / "site" / "demo"
|
|
for path in sorted(demo_dir.glob("*.uce")):
|
|
registry.case(
|
|
"demo page " + path.name,
|
|
_make_demo_case("/demo/" + path.name),
|
|
tags=["http", "smoke", "uce", "demo", "public"],
|
|
)
|