36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
|
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!"
|