Create the borgmatic runtime directory if it doesn't exist (#934).
This commit is contained in:
parent
8f5ea95348
commit
b80f60a731
@ -59,7 +59,6 @@ class Runtime_directory:
|
||||
does not get stored in the file path within an archive. That way, the path of the runtime
|
||||
directory can change without leaving database dumps within an archive inaccessible.
|
||||
'''
|
||||
|
||||
runtime_directory = (
|
||||
config.get('user_runtime_directory')
|
||||
or os.environ.get('XDG_RUNTIME_DIR') # Set by PAM on Linux.
|
||||
@ -82,6 +81,7 @@ class Runtime_directory:
|
||||
base_path if final_directory == 'borgmatic' else runtime_directory, '.', 'borgmatic'
|
||||
)
|
||||
)
|
||||
os.makedirs(self.runtime_path, mode=0o700, exist_ok=True)
|
||||
|
||||
def __enter__(self):
|
||||
'''
|
||||
|
@ -35,6 +35,7 @@ def test_get_borgmatic_source_directory_without_config_option_uses_default():
|
||||
|
||||
def test_runtime_directory_uses_config_option():
|
||||
flexmock(module).should_receive('expand_user_in_path').replace_with(lambda path: path)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
config = {'user_runtime_directory': '/run', 'borgmatic_source_directory': '/nope'}
|
||||
|
||||
with module.Runtime_directory(config) as borgmatic_runtime_directory:
|
||||
@ -43,6 +44,7 @@ def test_runtime_directory_uses_config_option():
|
||||
|
||||
def test_runtime_directory_uses_config_option_without_adding_duplicate_borgmatic_subdirectory():
|
||||
flexmock(module).should_receive('expand_user_in_path').replace_with(lambda path: path)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
config = {'user_runtime_directory': '/run/borgmatic', 'borgmatic_source_directory': '/nope'}
|
||||
|
||||
with module.Runtime_directory(config) as borgmatic_runtime_directory:
|
||||
@ -54,6 +56,7 @@ def test_runtime_directory_falls_back_to_xdg_runtime_dir():
|
||||
flexmock(module.os.environ).should_receive('get').with_args('XDG_RUNTIME_DIR').and_return(
|
||||
'/run'
|
||||
)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/./borgmatic'
|
||||
@ -64,6 +67,7 @@ def test_runtime_directory_falls_back_to_xdg_runtime_dir_without_adding_duplicat
|
||||
flexmock(module.os.environ).should_receive('get').with_args('XDG_RUNTIME_DIR').and_return(
|
||||
'/run/borgmatic'
|
||||
)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/./borgmatic'
|
||||
@ -75,6 +79,7 @@ def test_runtime_directory_falls_back_to_runtime_directory():
|
||||
flexmock(module.os.environ).should_receive('get').with_args('RUNTIME_DIRECTORY').and_return(
|
||||
'/run'
|
||||
)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/./borgmatic'
|
||||
@ -86,6 +91,7 @@ def test_runtime_directory_falls_back_to_runtime_directory_without_adding_duplic
|
||||
flexmock(module.os.environ).should_receive('get').with_args('RUNTIME_DIRECTORY').and_return(
|
||||
'/run/borgmatic'
|
||||
)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/./borgmatic'
|
||||
@ -103,6 +109,7 @@ def test_runtime_directory_falls_back_to_tmpdir_and_adds_temporary_subdirectory_
|
||||
flexmock(module.tempfile).should_receive('TemporaryDirectory').with_args(
|
||||
prefix='borgmatic-', dir='/run'
|
||||
).and_return(temporary_directory)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/borgmatic-1234/./borgmatic'
|
||||
@ -121,6 +128,7 @@ def test_runtime_directory_falls_back_to_temp_and_adds_temporary_subdirectory_th
|
||||
flexmock(module.tempfile).should_receive('TemporaryDirectory').with_args(
|
||||
prefix='borgmatic-', dir='/run'
|
||||
).and_return(temporary_directory)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/run/borgmatic-1234/./borgmatic'
|
||||
@ -139,6 +147,7 @@ def test_runtime_directory_falls_back_to_hard_coded_tmp_path_and_adds_temporary_
|
||||
flexmock(module.tempfile).should_receive('TemporaryDirectory').with_args(
|
||||
prefix='borgmatic-', dir='/tmp'
|
||||
).and_return(temporary_directory)
|
||||
flexmock(module.os).should_receive('makedirs')
|
||||
|
||||
with module.Runtime_directory({}) as borgmatic_runtime_directory:
|
||||
assert borgmatic_runtime_directory == '/tmp/borgmatic-1234/./borgmatic'
|
||||
|
Loading…
x
Reference in New Issue
Block a user