test_environment.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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}'} # noqa: FS003
  11. module.resolve_env_variables(config)
  12. assert config == {'key': 'Hello foo'}
  13. def test_env_multi(monkeypatch):
  14. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  15. monkeypatch.setenv('MY_CUSTOM_VALUE2', 'bar')
  16. config = {'key': 'Hello ${MY_CUSTOM_VALUE}${MY_CUSTOM_VALUE2}'} # noqa: FS003
  17. module.resolve_env_variables(config)
  18. assert config == {'key': 'Hello foobar'}
  19. def test_env_escape(monkeypatch):
  20. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  21. monkeypatch.setenv('MY_CUSTOM_VALUE2', 'bar')
  22. config = {'key': r'Hello ${MY_CUSTOM_VALUE} \${MY_CUSTOM_VALUE}'} # noqa: FS003
  23. module.resolve_env_variables(config)
  24. assert config == {'key': r'Hello foo ${MY_CUSTOM_VALUE}'} # noqa: FS003
  25. def test_env_default_value(monkeypatch):
  26. monkeypatch.delenv('MY_CUSTOM_VALUE', raising=False)
  27. config = {'key': 'Hello ${MY_CUSTOM_VALUE:-bar}'} # noqa: FS003
  28. module.resolve_env_variables(config)
  29. assert config == {'key': 'Hello bar'}
  30. def test_env_unknown(monkeypatch):
  31. monkeypatch.delenv('MY_CUSTOM_VALUE', raising=False)
  32. config = {'key': 'Hello ${MY_CUSTOM_VALUE}'} # noqa: FS003
  33. with pytest.raises(ValueError):
  34. module.resolve_env_variables(config)
  35. def test_env_full(monkeypatch):
  36. monkeypatch.setenv('MY_CUSTOM_VALUE', 'foo')
  37. monkeypatch.delenv('MY_CUSTOM_VALUE2', raising=False)
  38. config = {
  39. 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
  40. 'dict': {
  41. 'key': 'value',
  42. 'anotherdict': {
  43. 'key': 'My ${MY_CUSTOM_VALUE} here', # noqa: FS003
  44. 'other': '${MY_CUSTOM_VALUE}', # noqa: FS003
  45. 'escaped': r'\${MY_CUSTOM_VALUE}', # noqa: FS003
  46. 'list': [
  47. '/home/${MY_CUSTOM_VALUE}/.local', # noqa: FS003
  48. '/var/log/',
  49. '/home/${MY_CUSTOM_VALUE2:-bar}/.config', # noqa: FS003
  50. ],
  51. },
  52. },
  53. 'list': [
  54. '/home/${MY_CUSTOM_VALUE}/.local', # noqa: FS003
  55. '/var/log/',
  56. '/home/${MY_CUSTOM_VALUE2-bar}/.config', # noqa: FS003
  57. ],
  58. }
  59. module.resolve_env_variables(config)
  60. assert config == {
  61. 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
  62. 'dict': {
  63. 'key': 'value',
  64. 'anotherdict': {
  65. 'key': 'My foo here',
  66. 'other': 'foo',
  67. 'escaped': '${MY_CUSTOM_VALUE}', # noqa: FS003
  68. 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config'],
  69. },
  70. },
  71. 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config'],
  72. }