test_installerbuilder.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import io
  2. import os
  3. from os.path import join as pjoin
  4. from testpath import assert_isfile
  5. from nsist import InstallerBuilder, DEFAULT_ICON
  6. from .utils import test_dir
  7. sample_preamble = pjoin(test_dir, u'sample_preamble.py')
  8. def test_prepare_shortcuts(tmpdir):
  9. tmpdir = str(tmpdir)
  10. shortcuts = {'sc1': {'entry_point': 'norwegian.blue:parrot',
  11. 'icon': DEFAULT_ICON,
  12. 'console': False,
  13. 'extra_preamble': sample_preamble}}
  14. ib = InstallerBuilder("Test App", "1.0", shortcuts, build_dir=tmpdir)
  15. ib.prepare_shortcuts()
  16. scfile = pjoin(tmpdir, 'sc1.launch.pyw')
  17. assert_isfile(scfile)
  18. with io.open(scfile, 'r', encoding='utf-8') as f:
  19. contents = f.read()
  20. last2lines = [l.strip() for l in contents.rstrip().splitlines()[-2:]]
  21. assert last2lines == ['from norwegian.blue import parrot', 'parrot()']
  22. with io.open(sample_preamble, 'r', encoding='utf-8') as f:
  23. preamble_contents = f.read().strip()
  24. assert preamble_contents in contents
  25. def test_copy_extra_files(tmpdir):
  26. tmpdir = str(tmpdir)
  27. files = [
  28. (pjoin(test_dir, 'data_files', 'dir1', 'eg-data.txt'), '$INSTDIR'),
  29. (pjoin(test_dir, 'data_files', 'dir2', 'eg-data.txt'), '$INSTDIR\\foo'),
  30. (pjoin(test_dir, 'data_files', 'dir1', 'subdir'), '$INSTDIR'),
  31. (pjoin(test_dir, 'data_files', 'dir2', 'subdir'), '$INSTDIR\\foo'),
  32. ]
  33. ib = InstallerBuilder("Test App", "1.0", {}, extra_files=files,
  34. build_dir=tmpdir)
  35. ib.copy_extra_files()
  36. build_dir_files = set(os.listdir(tmpdir))
  37. for file in ['eg-data.txt', 'eg-data.1.txt', 'subdir', 'subdir.1']:
  38. assert file in build_dir_files
  39. assert ib.install_dirs == [
  40. ('subdir', '$INSTDIR'),
  41. ('subdir.1', '$INSTDIR\\foo'),
  42. ]
  43. assert ib.install_files == [
  44. ('eg-data.txt', '$INSTDIR'),
  45. ('eg-data.1.txt', '$INSTDIR\\foo'),
  46. ]
  47. def test_copy_installer_nsi(tmpdir):
  48. tmpdir = str(tmpdir)
  49. files = [
  50. (pjoin(test_dir, 'data_files', 'dir1', 'installer.nsi'), None),
  51. ]
  52. ib = InstallerBuilder("Test App", "1.0", {}, extra_files=files,
  53. build_dir=tmpdir)
  54. ib.copy_extra_files()
  55. assert_isfile(pjoin(tmpdir, 'installer.1.nsi'))
  56. assert ib.install_files == [('installer.1.nsi', '$INSTDIR')]