test_load.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import sys
  2. import pytest
  3. import ruamel.yaml
  4. from flexmock import flexmock
  5. from borgmatic.config import load as module
  6. def test_load_configuration_parses_contents():
  7. builtins = flexmock(sys.modules['builtins'])
  8. builtins.should_receive('open').with_args('config.yaml').and_return('key: value')
  9. assert module.load_configuration('config.yaml') == {'key': 'value'}
  10. def test_load_configuration_inlines_include():
  11. builtins = flexmock(sys.modules['builtins'])
  12. builtins.should_receive('open').with_args('include.yaml').and_return('value')
  13. builtins.should_receive('open').with_args('config.yaml').and_return(
  14. 'key: !include include.yaml'
  15. )
  16. assert module.load_configuration('config.yaml') == {'key': 'value'}
  17. def test_load_configuration_merges_include():
  18. builtins = flexmock(sys.modules['builtins'])
  19. builtins.should_receive('open').with_args('include.yaml').and_return(
  20. '''
  21. foo: bar
  22. baz: quux
  23. '''
  24. )
  25. builtins.should_receive('open').with_args('config.yaml').and_return(
  26. '''
  27. foo: override
  28. <<: !include include.yaml
  29. '''
  30. )
  31. assert module.load_configuration('config.yaml') == {'foo': 'override', 'baz': 'quux'}
  32. def test_load_configuration_does_not_merge_include_list():
  33. builtins = flexmock(sys.modules['builtins'])
  34. builtins.should_receive('open').with_args('include.yaml').and_return(
  35. '''
  36. - one
  37. - two
  38. '''
  39. )
  40. builtins.should_receive('open').with_args('config.yaml').and_return(
  41. '''
  42. foo: bar
  43. repositories:
  44. <<: !include include.yaml
  45. '''
  46. )
  47. with pytest.raises(ruamel.yaml.error.YAMLError):
  48. assert module.load_configuration('config.yaml')