Skip to content

Commit ea9fc28

Browse files
committed
M1.7: validate argument qualification harness
1 parent dd04abf commit ea9fc28

1 file changed

Lines changed: 36 additions & 3 deletions

File tree

‎tools/check_repo.py‎

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
"tests/compat/cases.txt",
2020
"tests/compat/scripts/basic.script",
2121
"tests/compat/scripts/args.script",
22+
"tests/compat/script_args_cases.tsv",
2223
"tests/test_compat_tools.py",
2324
"tests/test_script_compat.py",
25+
"tests/test_script_args_compat.py",
2426
"tools/compat_prepare.py",
2527
"tools/compat_compare.py",
2628
"tools/compat_bundle.py",
2729
"tools/compat_native.c",
2830
"tools/script_compat_compare.py",
2931
"tools/script_compat_bundle.py",
32+
"tools/script_args_compat_compare.py",
33+
"tools/script_args_compat_bundle.py",
3034
"docs/ARCHITECTURE.md",
3135
"docs/COMPATIBILITY.md",
3236
"docs/M1_4_DIFFERENTIAL_QUALIFICATION.md",
@@ -36,6 +40,7 @@
3640
"docs/M1_6_RUNTIME_QUALIFICATION.md",
3741
"docs/M1_6_QUALIFICATION.md",
3842
"docs/M1_7_SCRIPT_ARGUMENTS.md",
43+
"docs/M1_7_RUNTIME_QUALIFICATION.md",
3944
)
4045

4146
REQUIRED_COMPATIBILITY_TERMS = (
@@ -58,12 +63,22 @@ def main() -> int:
5863
makefile = (ROOT / "Makefile").read_text(encoding="utf-8")
5964
if "-m68000" not in makefile:
6065
fail("Makefile does not declare the 68000 baseline")
61-
for target in ("check:", "compat-prepare:", "compat-bundle:", "script-compat-bundle:"):
66+
for target in (
67+
"check:",
68+
"compat-prepare:",
69+
"compat-bundle:",
70+
"script-compat-bundle:",
71+
"script-args-compat-bundle:",
72+
):
6273
if target not in makefile:
6374
fail(f"Makefile missing target: {target}")
6475
if "tools/compat_native.c" not in makefile:
6576
fail("qualification build does not include native Shell capture launcher")
66-
for test in ("tests/test_compat_tools.py", "tests/test_script_compat.py"):
77+
for test in (
78+
"tests/test_compat_tools.py",
79+
"tests/test_script_compat.py",
80+
"tests/test_script_args_compat.py",
81+
):
6782
if test not in makefile:
6883
fail(f"make check does not execute {test}")
6984
for source in ("src/exec.c", "src/session.c"):
@@ -125,11 +140,21 @@ def main() -> int:
125140
if marker not in args_fixture:
126141
fail(f"M1.7 script-argument fixture missing marker: {marker}")
127142

143+
arg_cases = [
144+
line for line in (ROOT / "tests/compat/script_args_cases.tsv").read_text(encoding="utf-8").splitlines()
145+
if line.strip() and not line.lstrip().startswith("#")
146+
]
147+
if len(arg_cases) < 6:
148+
fail("M1.7 script-argument corpus is too small")
149+
128150
prepare = (ROOT / "tools/compat_prepare.py").read_text(encoding="utf-8")
129151
compare = (ROOT / "tools/compat_compare.py").read_text(encoding="utf-8")
130152
bundle = (ROOT / "tools/compat_bundle.py").read_text(encoding="utf-8")
131153
script_compare = (ROOT / "tools/script_compat_compare.py").read_text(encoding="utf-8")
132154
script_bundle = (ROOT / "tools/script_compat_bundle.py").read_text(encoding="utf-8")
155+
args_compare = (ROOT / "tools/script_args_compat_compare.py").read_text(encoding="utf-8")
156+
args_bundle = (ROOT / "tools/script_args_compat_bundle.py").read_text(encoding="utf-8")
157+
133158
if "run-native.script" not in prepare or "run-amshell.script" not in prepare:
134159
fail("differential harness does not prepare both execution paths")
135160
if "native-{case_id}.script" not in prepare:
@@ -146,7 +171,15 @@ def main() -> int:
146171
if "2>NIL:" in script_bundle:
147172
fail("M1.6 script bundle uses unsupported numbered AmigaDOS redirection")
148173

149-
print("PASS: AmShell M1.7 repository checks")
174+
if "RESULT: FAIL" not in args_compare or "RESULT: PASS" not in args_compare:
175+
fail("M1.7 argument comparator has no explicit verdict")
176+
for marker in ("m1.7-qualification", "script_args_cases.tsv", "run-qualification.script"):
177+
if marker not in args_bundle:
178+
fail(f"M1.7 argument bundle missing marker: {marker}")
179+
if "2>NIL:" in args_bundle:
180+
fail("M1.7 argument bundle uses unsupported numbered AmigaDOS redirection")
181+
182+
print("PASS: AmShell M1.7 repository and runtime-harness checks")
150183
return 0
151184

152185

0 commit comments

Comments
 (0)