You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					36 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					36 lines
				
				1.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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!"
							 |