From 8560293915c2faba707d398888e6b9b13b283b6b Mon Sep 17 00:00:00 2001 From: dajiaohuang Date: Wed, 23 Sep 2026 09:40:37 +0800 Subject: [PATCH] Validate each pydisassemble input --- pytest/test_pydisassemble_cli.py | 26 ++++++++++++++++++++++++++ uncompyle6/bin/pydisassemble.py | 4 ++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 pytest/test_pydisassemble_cli.py diff --git a/pytest/test_pydisassemble_cli.py b/pytest/test_pydisassemble_cli.py new file mode 100644 index 000000000..9d0097b03 --- /dev/null +++ b/pytest/test_pydisassemble_cli.py @@ -0,0 +1,26 @@ +import sys + +from uncompyle6.bin import pydisassemble + + +def test_main_checks_each_input_file(tmp_path, monkeypatch, capsys): + existing = tmp_path / "existing.pyc" + missing = tmp_path / "missing.pyc" + existing.write_bytes(b"") + disassembled = [] + + monkeypatch.setattr( + pydisassemble, + "disassemble_file", + lambda filename, outstream: disassembled.append(filename), + ) + monkeypatch.setattr( + sys, + "argv", + ["pydisassemble", str(existing), str(missing)], + ) + + pydisassemble.main() + + assert disassembled == [str(existing)] + assert f"Can't read {missing} - skipping" in capsys.readouterr().err diff --git a/uncompyle6/bin/pydisassemble.py b/uncompyle6/bin/pydisassemble.py index e40e0dfc4..d36b14d8c 100755 --- a/uncompyle6/bin/pydisassemble.py +++ b/uncompyle6/bin/pydisassemble.py @@ -94,10 +94,10 @@ def main(): sys.exit(1) for file in files: - if os.path.exists(files[0]): + if os.path.exists(file): disassemble_file(file, sys.stdout) else: - print(f"Can't read {files[0]} - skipping", file=sys.stderr) + print(f"Can't read {file} - skipping", file=sys.stderr) pass pass return