| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import os
- from flexmock import flexmock
- from borgmatic.borg.pattern import Pattern, Pattern_type
- from borgmatic.hooks.data_source import zfs as module
- def test_dump_data_sources_snapshots_and_mounts_and_updates_patterns():
- dataset = flexmock(
- name='dataset',
- mount_point='/mnt/dataset',
- contained_patterns=(Pattern('/mnt/dataset/subdir'),),
- )
- flexmock(module).should_receive('get_datasets_to_backup').and_return((dataset,))
- flexmock(module.os).should_receive('getpid').and_return(1234)
- full_snapshot_name = 'dataset@borgmatic-1234'
- flexmock(module).should_receive('snapshot_dataset').with_args(
- 'zfs',
- full_snapshot_name,
- ).once()
- flexmock(module.hashlib).should_receive('shake_256').and_return(
- flexmock(hexdigest=lambda length: 'b33f'),
- )
- snapshot_mount_path = '/run/borgmatic/zfs_snapshots/b33f/./mnt/dataset'
- flexmock(module).should_receive('mount_snapshot').with_args(
- 'mount',
- full_snapshot_name,
- module.os.path.normpath(snapshot_mount_path),
- ).once()
- patterns = [Pattern('/mnt/dataset/subdir')]
- assert (
- module.dump_data_sources(
- hook_config={},
- config={'source_directories': '/mnt/dataset', 'zfs': {}},
- config_paths=('test.yaml',),
- borgmatic_runtime_directory='/run/borgmatic',
- patterns=patterns,
- dry_run=False,
- )
- == []
- )
- assert patterns == [
- Pattern(os.path.join(snapshot_mount_path, 'subdir')),
- Pattern(os.path.join(snapshot_mount_path, 'subdir'), Pattern_type.INCLUDE),
- ]
|