58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
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
|