test_environment.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import pytest
  2. from borgmatic.config import environment as module
  3. def test_env(monkeypatch):
  4. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  5. config = {'key': 'Hello $MY_CUSTOM_VALUE'}
  6. module.resolve_env_variables(config)
  7. assert config == {'key': 'Hello $MY_CUSTOM_VALUE'}
  8. def test_env_braces(monkeypatch):
  9. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  10. config = {'key': 'Hello ${MY_CUSTOM_VALUE}'}
  11. module.resolve_env_variables(config)
  12. assert config == {'key': 'Hello foo'}
  13. def test_env_default_value(monkeypatch):
  14. monkeypatch.delenv('MY_CUSTOM_VALUE', raising=False)
  15. config = {'key': 'Hello ${MY_CUSTOM_VALUE:-bar}'}
  16. module.resolve_env_variables(config)
  17. assert config == {'key': 'Hello bar'}
  18. def test_env_unknown(monkeypatch):
  19. monkeypatch.delenv('MY_CUSTOM_VALUE', raising=False)
  20. config = {'key': 'Hello ${MY_CUSTOM_VALUE}'}
  21. with pytest.raises(ValueError):
  22. module.resolve_env_variables(config)
  23. def test_env_full(monkeypatch):
  24. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  25. monkeypatch.delenv('MY_CUSTOM_VALUE2', raising=False)
  26. config = {
  27. 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
  28. 'dict': {
  29. 'key': 'value',
  30. 'anotherdict': {
  31. 'key': 'My ${MY_CUSTOM_VALUE} here',
  32. 'other': '${MY_CUSTOM_VALUE}',
  33. 'list': [
  34. '/home/${MY_CUSTOM_VALUE}/.local',
  35. '/var/log/',
  36. '/home/${MY_CUSTOM_VALUE2:-bar}/.config',
  37. ],
  38. },
  39. },
  40. 'list': [
  41. '/home/${MY_CUSTOM_VALUE}/.local',
  42. '/var/log/',
  43. '/home/${MY_CUSTOM_VALUE2-bar}/.config',
  44. ],
  45. }
  46. module.resolve_env_variables(config)
  47. assert config == {
  48. 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
  49. 'dict': {
  50. 'key': 'value',
  51. 'anotherdict': {
  52. 'key': 'My foo here',
  53. 'other': 'foo',
  54. 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config'],
  55. },
  56. },
  57. 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config'],
  58. }