123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import io
- from pathlib import Path
- import re
- import responses
- from shutil import copy
- from testpath import MockCommand, assert_isfile, assert_isdir
- from testpath.tempdir import TemporaryWorkingDirectory
- from zipfile import ZipFile
- from nsist import main
- from .utils import test_dir
- example_dir = Path(test_dir, 'console_example')
- def respond_python_zip():
- buf = io.BytesIO()
- with ZipFile(buf, 'w') as zf:
- zf.writestr('python.exe', b'')
- return 200, {}, buf
- @responses.activate
- def test_console_example():
- responses.add_callback('GET', re.compile(r'https://www.python.org/ftp/.*'),
- callback=respond_python_zip, content_type='application/zip',
- )
- with TemporaryWorkingDirectory() as td:
- for src in example_dir.iterdir():
- copy(str(src), td)
- with MockCommand('makensis') as makensis:
- ec = main(['installer.cfg'])
- assert ec == 0
- assert makensis.get_calls()[0]['argv'][1].endswith('installer.nsi')
- build_dir = Path(td, 'build', 'nsis')
- assert_isdir(build_dir)
- assert_isfile(build_dir / 'Python' / 'python.exe')
- assert_isfile(build_dir / 'pkgs' / 'guessnumber.py')
- assert_isfile(build_dir / 'Guess_the_Number.launch.py')
|