test_configuration_validator.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import configparser
  2. import os
  3. from nose.tools import *
  4. from .. import configreader
  5. from .. import get_installer_builder_args
  6. DATA_FILES = os.path.join(os.path.dirname(__file__), 'data_files')
  7. def test_valid_config():
  8. configfile = os.path.join(DATA_FILES, 'valid_config.cfg')
  9. config = configreader.read_and_validate(configfile)
  10. print(config['Application'])
  11. print('Application' in config)
  12. print(config.has_section('Application'))
  13. # assert False
  14. def test_valid_config_with_shortcut():
  15. configfile = os.path.join(DATA_FILES, 'valid_config_with_shortcut.cfg')
  16. config = configreader.read_and_validate(configfile)
  17. def test_valid_config_with_values_starting_on_new_line():
  18. configfile = os.path.join(DATA_FILES, 'valid_config_value_newline.cfg')
  19. config = configreader.read_and_validate(configfile)
  20. sections = ('Application', 'Python', 'Include', 'Build')
  21. assert len(config.sections()) == len(sections)
  22. for section in sections:
  23. assert section in config
  24. assert config.has_section(section)
  25. assert config.get('Application', 'name') == '\nMy App'
  26. assert config.get('Application', 'version') == '\n1.0'
  27. assert config.get('Application', 'publisher') == '\nTest'
  28. assert config.get('Application', 'entry_point') == '\nmyapp:main'
  29. assert config.get('Application', 'icon') == '\nmyapp.ico'
  30. assert config.get('Python', 'version') == '\n3.6.0'
  31. assert config.get('Python', 'bitness') == '\n64'
  32. assert config.get('Python', 'format') == '\nbundled'
  33. assert config.get('Python', 'include_msvcrt') == '\nTrue'
  34. assert config.get('Build', 'directory') == '\nbuild/'
  35. assert config.get('Build', 'nsi_template') == '\ntemplate.nsi'
  36. assert config.get('Include', 'packages') == '\nrequests\nbs4'
  37. assert config.get('Include', 'pypi_wheels') == '\nhtml5lib'
  38. assert config.get('Include', 'exclude') == '\nsomething'
  39. assert config.get('Include', 'files') == '\nLICENSE\ndata_files/'
  40. args = get_installer_builder_args(config)
  41. assert args['appname'] == 'My App'
  42. assert args['version'] == '1.0'
  43. assert args['publisher'] == 'Test'
  44. # assert args['entry_point'] == '\nmyapp:main'
  45. assert args['icon'] == 'myapp.ico'
  46. assert args['py_version'] == '3.6.0'
  47. assert args['py_bitness'] == 64
  48. assert args['py_format'] == 'bundled'
  49. assert args['inc_msvcrt'] == True
  50. assert args['build_dir'] == 'build/'
  51. assert args['nsi_template'] == 'template.nsi'
  52. assert args['packages'] == ['requests', 'bs4']
  53. assert args['pypi_wheel_reqs'] == ['html5lib']
  54. assert args['exclude'] == ['something']
  55. assert args['extra_files'] == [('', '$INSTDIR'),
  56. ('LICENSE', '$INSTDIR'),
  57. ('data_files/', '$INSTDIR')]
  58. @raises(configreader.InvalidConfig)
  59. def test_invalid_config_keys():
  60. configfile = os.path.join(DATA_FILES, 'invalid_config_section.cfg')
  61. configreader.read_and_validate(configfile)
  62. @raises(configreader.InvalidConfig)
  63. def test_invalid_config_key():
  64. configfile = os.path.join(DATA_FILES, 'invalid_config_key.cfg')
  65. configreader.read_and_validate(configfile)
  66. @raises(configreader.InvalidConfig)
  67. def test_missing_config_key():
  68. configfile = os.path.join(DATA_FILES, 'missing_config_key.cfg')
  69. configreader.read_and_validate(configfile)
  70. @raises(configparser.Error)
  71. def test_invalid_config_file():
  72. configfile = os.path.join(DATA_FILES, 'not_a_config.cfg')
  73. configreader.read_and_validate(configfile)