AnyPS5/core/relinker/cli/tests/test_help.py

45 lines
1.9 KiB
Python

from pathlib import Path
import subprocess
import sys
import tempfile
def main():
relinker = Path(sys.argv[1]).resolve()
with tempfile.TemporaryDirectory(prefix="anyps5-help-") as directory:
work = Path(directory)
source = work / "missing.elf"
output = work / "existing.exe"
output.write_bytes(b"preserve this output")
def run(*args):
return subprocess.run([str(relinker), *args], cwd=work,
capture_output=True, text=True, timeout=10)
for args in [("--help",), ("--help", "--registry", "--autorun", str(source), str(output)),
(str(source), str(output), "--help")]:
result = run(*args)
assert result.returncode == 0, result.stderr
assert result.stdout.startswith("Usage: relinker "), result.stdout
assert "--help" in result.stdout and "Example:" in result.stdout
assert result.stderr == "", result.stderr
assert output.read_bytes() == b"preserve this output"
assert sorted(path.name for path in work.iterdir()) == [output.name]
result = run()
assert result.returncode == 1 and "Usage: relinker" in result.stderr
for args in [("--help", "--unknown"), ("--unknown", "--help")]:
result = run(*args)
assert result.returncode == 1 and "unknown option" in result.stderr
result = run("--help", "--windows-gui")
assert result.returncode == 1 and "requires --windows" in result.stderr
for flag in ["--rpath", "--exclude-sce-module"]:
result = run(flag, "--help", str(source), str(output))
assert result.returncode == 2 and "Cannot open file" in result.stderr
assert result.stdout == "", result.stdout
assert output.read_bytes() == b"preserve this output"
if __name__ == "__main__":
main()