js-on-sx: regex literal lex+parse+transpile+runtime stub
Lexer: js-regex-context? disambiguates / based on prior token;
read-regex handles [...] classes and \ escapes. Emits
{:type "regex" :value {:pattern :flags}}.
Parser: new primary branch → (js-regex pat flags).
Transpile: (js-regex-new pat flags).
Runtime: js-regex? predicate, js-regex-new builds tagged dict with
source/flags/global/ignoreCase/multiline/sticky/unicode/dotAll/
hasIndices/lastIndex. js-regex-invoke-method dispatches .test/.exec/
.toString. js-invoke-method detects regex receivers. Stub engine
uses js-string-index-of; __js_regex_platform__ + override! let a
real engine plug in later.
Runner: repeatable --filter flags (OR'd).
308/310 unit (+30 regex tests), 148/148 slice unchanged.
This commit is contained in:
@@ -527,16 +527,16 @@ class TestResult:
|
||||
elapsed_ms: int = 0
|
||||
|
||||
|
||||
def discover_tests(filter_prefix: str | None) -> list[Path]:
|
||||
def discover_tests(filter_prefixes: list[str] | None) -> list[Path]:
|
||||
tests: list[Path] = []
|
||||
for p in TEST_ROOT.rglob("*.js"):
|
||||
if p.name.endswith("_FIXTURE.js"):
|
||||
continue
|
||||
if "_FIXTURE" in p.parts:
|
||||
continue
|
||||
if filter_prefix:
|
||||
if filter_prefixes:
|
||||
rel = p.relative_to(TEST_ROOT).as_posix()
|
||||
if not rel.startswith(filter_prefix):
|
||||
if not any(rel.startswith(prefix) for prefix in filter_prefixes):
|
||||
continue
|
||||
tests.append(p)
|
||||
tests.sort()
|
||||
@@ -799,7 +799,8 @@ def write_markdown(scoreboard: dict, path: Path, pinned_commit: str, elapsed_s:
|
||||
def main(argv: list[str]) -> int:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--limit", type=int, default=0, help="max tests to run (0 = all)")
|
||||
ap.add_argument("--filter", type=str, default=None, help="path prefix filter")
|
||||
ap.add_argument("--filter", type=str, action="append", default=None,
|
||||
help="path prefix filter (repeatable; OR'd together)")
|
||||
ap.add_argument("--per-test-timeout", type=float, default=DEFAULT_PER_TEST_TIMEOUT_S)
|
||||
ap.add_argument("--restart-every", type=int, default=500,
|
||||
help="restart server every N tests to keep memory bounded")
|
||||
|
||||
Reference in New Issue
Block a user