123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import io
- from testpath import assert_isfile, assert_not_path_exists
- from zipfile import ZipFile
- from nsist import commands, _assemble_launchers
- def test_prepare_bin_dir(tmpdir):
- cmds = {
- 'acommand': {
- 'entry_point': 'somemod:somefunc',
- 'extra_preamble': io.StringIO(u'import extra')
- }
- }
- commands.prepare_bin_directory(tmpdir, cmds)
- launcher_file = str(tmpdir / 'launcher_exe.dat')
- launcher_noconsole_file = str(tmpdir / 'launcher_noconsole_exe.dat')
- zip_file = str(tmpdir / 'acommand-append.zip')
- zip_file_invalid = str(tmpdir / 'acommand-append-noconsole.zip')
- exe_file = str(tmpdir / 'acommand.exe')
- assert_isfile(launcher_file)
- assert_isfile(launcher_noconsole_file)
- assert_isfile(zip_file)
- assert_not_path_exists(zip_file_invalid)
- assert_not_path_exists(exe_file)
- with open(launcher_file, 'rb') as lf:
- b_launcher = lf.read()
- assert b_launcher[:2] == b'MZ'
- with open(launcher_noconsole_file, 'rb') as lf:
- assert lf.read(2) == b'MZ'
- with ZipFile(zip_file) as zf:
- assert zf.testzip() is None
- script_contents = zf.read('__main__.py').decode('utf-8')
- assert 'import extra' in script_contents
- assert 'somefunc()' in script_contents
- _assemble_launchers.main(['_assemble_launchers.py', 'C:\\path\\to\\python', str(tmpdir)])
- assert_isfile(exe_file)
- with open(exe_file, 'rb') as ef, open(zip_file, 'rb') as zf:
- b_exe = ef.read()
- b_zip = zf.read()
- assert b_exe[:len(b_launcher)] == b_launcher
- assert b_exe[len(b_launcher):-len(b_zip)].decode('utf-8') == '#!"C:\\path\\to\\python.exe"\r\n'
- assert b_exe[-len(b_zip):] == b_zip
- with ZipFile(exe_file) as zf:
- assert zf.testzip() is None
- assert zf.read('__main__.py').decode('utf-8') == script_contents
- def test_prepare_bin_dir_noconsole(tmpdir):
- cmds = {
- 'acommand': {
- 'entry_point': 'somemod:somefunc',
- 'console': False
- }
- }
- commands.prepare_bin_directory(tmpdir, cmds)
- launcher_file = str(tmpdir / 'launcher_exe.dat')
- launcher_noconsole_file = str(tmpdir / 'launcher_noconsole_exe.dat')
- zip_file = str(tmpdir / 'acommand-append-noconsole.zip')
- zip_file_invalid = str(tmpdir / 'acommand-append.zip')
- exe_file = str(tmpdir / 'acommand.exe')
- assert_isfile(launcher_file)
- assert_isfile(launcher_noconsole_file)
- assert_isfile(zip_file)
- assert_not_path_exists(zip_file_invalid)
- assert_not_path_exists(exe_file)
- with open(launcher_file, 'rb') as lf:
- assert lf.read(2) == b'MZ'
- with open(launcher_noconsole_file, 'rb') as lf:
- b_launcher = lf.read()
- assert b_launcher[:2] == b'MZ'
- with ZipFile(zip_file) as zf:
- assert zf.testzip() is None
- script_contents = zf.read('__main__.py').decode('utf-8')
- assert 'import extra' not in script_contents
- assert 'somefunc()' in script_contents
- _assemble_launchers.main(['_assemble_launchers.py', 'C:\\custom\\python.exe', str(tmpdir)])
- assert_isfile(exe_file)
- with open(exe_file, 'rb') as ef, open(zip_file, 'rb') as zf:
- b_exe = ef.read()
- b_zip = zf.read()
- assert b_exe[:len(b_launcher)] == b_launcher
- assert b_exe[len(b_launcher):-len(b_zip)].decode('utf-8') == '#!"C:\\custom\\pythonw.exe"\r\n'
- assert b_exe[-len(b_zip):] == b_zip
- with ZipFile(exe_file) as zf:
- assert zf.testzip() is None
- assert zf.read('__main__.py').decode('utf-8') == script_contents
|