|
@@ -0,0 +1,58 @@
|
|
|
+import pytest
|
|
|
+from flexmock import flexmock
|
|
|
+
|
|
|
+from borgmatic.config import constants as module
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ 'value,expected_value',
|
|
|
+ (
|
|
|
+ ('3', 3),
|
|
|
+ ('0', 0),
|
|
|
+ ('-3', -3),
|
|
|
+ ('1234', 1234),
|
|
|
+ ('true', True),
|
|
|
+ ('True', True),
|
|
|
+ ('false', False),
|
|
|
+ ('False', False),
|
|
|
+ ('thing', 'thing'),
|
|
|
+ ({}, {}),
|
|
|
+ ({'foo': 'bar'}, {'foo': 'bar'}),
|
|
|
+ ([], []),
|
|
|
+ (['foo', 'bar'], ['foo', 'bar']),
|
|
|
+ ),
|
|
|
+)
|
|
|
+def test_coerce_scalar_converts_value(value, expected_value):
|
|
|
+ assert module.coerce_scalar(value) == expected_value
|
|
|
+
|
|
|
+
|
|
|
+def test_apply_constants_with_empty_constants_passes_through_value():
|
|
|
+ assert module.apply_constants(value='thing', constants={}) == 'thing'
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ 'value,expected_value',
|
|
|
+ (
|
|
|
+ (None, None),
|
|
|
+ ('thing', 'thing'),
|
|
|
+ ('{foo}', 'bar'),
|
|
|
+ ('abc{foo}', 'abcbar'),
|
|
|
+ ('{foo}xyz', 'barxyz'),
|
|
|
+ ('{foo}{baz}', 'barquux'),
|
|
|
+ ('{int}', '3'),
|
|
|
+ ('{bool}', 'True'),
|
|
|
+ (['thing', 'other'], ['thing', 'other']),
|
|
|
+ (['thing', '{foo}'], ['thing', 'bar']),
|
|
|
+ (['{foo}', '{baz}'], ['bar', 'quux']),
|
|
|
+ ({'key': 'value'}, {'key': 'value'}),
|
|
|
+ ({'key': '{foo}'}, {'key': 'bar'}),
|
|
|
+ (3, 3),
|
|
|
+ (True, True),
|
|
|
+ (False, False),
|
|
|
+ ),
|
|
|
+)
|
|
|
+def test_apply_constants_makes_string_substitutions(value, expected_value):
|
|
|
+ flexmock(module).should_receive('coerce_scalar').replace_with(lambda value: value)
|
|
|
+ constants = {'foo': 'bar', 'baz': 'quux', 'int': 3, 'bool': True}
|
|
|
+
|
|
|
+ assert module.apply_constants(value, constants) == expected_value
|