1234567891011121314151617181920212223242526272829303132333435 |
- import subprocess
- from pathlib import Path
- import pytest
- # PyInstaller has been very unproactive about replacing 'imp' with 'importlib'.
- @pytest.mark.filterwarnings('ignore::DeprecationWarning')
- # It also leaks io.BytesIO()s.
- @pytest.mark.filterwarnings('ignore::ResourceWarning')
- @pytest.mark.parametrize("mode", ["--onedir", "--onefile"])
- @pytest.mark.slow
- def test_pyinstaller(mode, tmp_path):
- """Compile and run pyinstaller-smoke.py using PyInstaller."""
- pyinstaller_cli = pytest.importorskip("PyInstaller.__main__").run
- source = Path(__file__).with_name("pyinstaller-smoke.py").resolve()
- args = [
- # Place all generated files in ``tmp_path``.
- '--workpath', str(tmp_path / "build"),
- '--distpath', str(tmp_path / "dist"),
- '--specpath', str(tmp_path),
- mode,
- str(source),
- ]
- pyinstaller_cli(args)
- if mode == "--onefile":
- exe = tmp_path / "dist" / source.stem
- else:
- exe = tmp_path / "dist" / source.stem / source.stem
- p = subprocess.run([str(exe)], check=True, stdout=subprocess.PIPE)
- assert p.stdout.strip() == b"I made it!"
|