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" ,
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
4146REQUIRED_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