|
@@ -0,0 +1,69 @@
|
|
|
|
+import pytest
|
|
|
|
+
|
|
|
|
+from borgmatic.config import override as module
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_env(monkeypatch):
|
|
|
|
+ monkeypatch.setenv("MY_CUSTOM_VALUE", "foo")
|
|
|
|
+ config = {'key': 'Hello $MY_CUSTOM_VALUE'}
|
|
|
|
+ module.resolve_env_variables(config)
|
|
|
|
+ assert config == {'key': 'Hello $MY_CUSTOM_VALUE'}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_env_braces(monkeypatch):
|
|
|
|
+ monkeypatch.setenv("MY_CUSTOM_VALUE", "foo")
|
|
|
|
+ config = {'key': 'Hello ${MY_CUSTOM_VALUE}'}
|
|
|
|
+ module.resolve_env_variables(config)
|
|
|
|
+ assert config == {'key': 'Hello foo'}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_env_default_value(monkeypatch):
|
|
|
|
+ monkeypatch.delenv("MY_CUSTOM_VALUE", raising=False)
|
|
|
|
+ config = {'key': 'Hello ${MY_CUSTOM_VALUE:-bar}'}
|
|
|
|
+ module.resolve_env_variables(config)
|
|
|
|
+ assert config == {'key': 'Hello bar'}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_env_unknown(monkeypatch):
|
|
|
|
+ monkeypatch.delenv("MY_CUSTOM_VALUE", raising=False)
|
|
|
|
+ config = {'key': 'Hello ${MY_CUSTOM_VALUE}'}
|
|
|
|
+ with pytest.raises(ValueError):
|
|
|
|
+ module.resolve_env_variables(config)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def test_env_full(monkeypatch):
|
|
|
|
+ monkeypatch.setenv("MY_CUSTOM_VALUE", "foo")
|
|
|
|
+ monkeypatch.delenv("MY_CUSTOM_VALUE2", raising=False)
|
|
|
|
+ config = {
|
|
|
|
+ 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
|
|
|
|
+ 'dict': {
|
|
|
|
+ 'key': 'value',
|
|
|
|
+ 'anotherdict': {
|
|
|
|
+ 'key': 'My ${MY_CUSTOM_VALUE} here',
|
|
|
|
+ 'other': '${MY_CUSTOM_VALUE}',
|
|
|
|
+ 'list': [
|
|
|
|
+ '/home/${MY_CUSTOM_VALUE}/.local',
|
|
|
|
+ '/var/log/',
|
|
|
|
+ '/home/${MY_CUSTOM_VALUE2:-bar}/.config',
|
|
|
|
+ ],
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ 'list': [
|
|
|
|
+ '/home/${MY_CUSTOM_VALUE}/.local',
|
|
|
|
+ '/var/log/',
|
|
|
|
+ '/home/${MY_CUSTOM_VALUE2-bar}/.config',
|
|
|
|
+ ],
|
|
|
|
+ }
|
|
|
|
+ module.resolve_env_variables(config)
|
|
|
|
+ assert config == {
|
|
|
|
+ 'key': 'Hello $MY_CUSTOM_VALUE is not resolved',
|
|
|
|
+ 'dict': {
|
|
|
|
+ 'key': 'value',
|
|
|
|
+ 'anotherdict': {
|
|
|
|
+ 'key': 'My foo here',
|
|
|
|
+ 'other': 'foo',
|
|
|
|
+ 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config',],
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ 'list': ['/home/foo/.local', '/var/log/', '/home/bar/.config',],
|
|
|
|
+ }
|