mirror of
https://github.com/borgmatic-collective/borgmatic.git
synced 2026-07-30 05:13:01 +02:00
45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from flexmock import flexmock
|
|
|
|
from borgmatic.hooks import command as module
|
|
|
|
|
|
def test_interpolate_context_passes_through_command_without_variable():
|
|
assert module.interpolate_context('pre-backup', 'ls', {'foo': 'bar'}) == 'ls'
|
|
|
|
|
|
def test_interpolate_context_warns_and_passes_through_command_with_unknown_variable():
|
|
command = 'ls {baz}'
|
|
flexmock(module.logger).should_receive('warning').once()
|
|
|
|
assert module.interpolate_context('pre-backup', command, {'foo': 'bar'}) == command
|
|
|
|
|
|
def test_interpolate_context_does_not_warn_and_passes_through_command_with_unknown_variable_matching_borg_placeholder():
|
|
command = 'ls {hostname}'
|
|
flexmock(module.logger).should_receive('warning').never()
|
|
|
|
assert module.interpolate_context('pre-backup', command, {'foo': 'bar'}) == command
|
|
|
|
|
|
def test_interpolate_context_interpolates_variables():
|
|
command = 'ls {foo}{baz} {baz}'
|
|
context = {'foo': 'bar', 'baz': 'quux'}
|
|
|
|
assert module.interpolate_context('pre-backup', command, context) == 'ls barquux quux'
|
|
|
|
|
|
def test_interpolate_context_escapes_interpolated_variables():
|
|
command = 'ls {foo} {inject}'
|
|
context = {'foo': 'bar', 'inject': 'hi; naughty-command'}
|
|
|
|
assert (
|
|
module.interpolate_context('pre-backup', command, context) == "ls bar 'hi; naughty-command'"
|
|
)
|
|
|
|
|
|
def test_interpolate_context_strips_backslashed_names_and_does_not_intepolate_them():
|
|
command = r'ls \{foo\}\{baz\} \{baz\}'
|
|
context = {'foo': 'bar', 'baz': 'quux'}
|
|
|
|
assert module.interpolate_context('pre-backup', command, context) == 'ls {foo}{baz} {baz}'
|