environment_test.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # encoding: utf-8
  2. from __future__ import absolute_import
  3. from __future__ import print_function
  4. from __future__ import unicode_literals
  5. import codecs
  6. import pytest
  7. from compose.config.environment import env_vars_from_file
  8. from compose.config.environment import Environment
  9. from compose.config.errors import ConfigurationError
  10. from tests import unittest
  11. class EnvironmentTest(unittest.TestCase):
  12. def test_get_simple(self):
  13. env = Environment({
  14. 'FOO': 'bar',
  15. 'BAR': '1',
  16. 'BAZ': ''
  17. })
  18. assert env.get('FOO') == 'bar'
  19. assert env.get('BAR') == '1'
  20. assert env.get('BAZ') == ''
  21. def test_get_undefined(self):
  22. env = Environment({
  23. 'FOO': 'bar'
  24. })
  25. assert env.get('FOOBAR') is None
  26. def test_get_boolean(self):
  27. env = Environment({
  28. 'FOO': '',
  29. 'BAR': '0',
  30. 'BAZ': 'FALSE',
  31. 'FOOBAR': 'true',
  32. })
  33. assert env.get_boolean('FOO') is False
  34. assert env.get_boolean('BAR') is False
  35. assert env.get_boolean('BAZ') is False
  36. assert env.get_boolean('FOOBAR') is True
  37. assert env.get_boolean('UNDEFINED') is False
  38. def test_env_vars_from_file_bom(self):
  39. tmpdir = pytest.ensuretemp('env_file')
  40. self.addCleanup(tmpdir.remove)
  41. with codecs.open('{}/bom.env'.format(str(tmpdir)), 'w', encoding='utf-8') as f:
  42. f.write('\ufeffPARK_BOM=박봄\n')
  43. assert env_vars_from_file(str(tmpdir.join('bom.env'))) == {
  44. 'PARK_BOM': '박봄'
  45. }
  46. def test_env_vars_from_file_whitespace(self):
  47. tmpdir = pytest.ensuretemp('env_file')
  48. self.addCleanup(tmpdir.remove)
  49. with codecs.open('{}/whitespace.env'.format(str(tmpdir)), 'w', encoding='utf-8') as f:
  50. f.write('WHITESPACE =yes\n')
  51. with pytest.raises(ConfigurationError) as exc:
  52. env_vars_from_file(str(tmpdir.join('whitespace.env')))
  53. assert 'environment variable' in exc.exconly()