environment_test.py 2.1 KB

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