From 29201a0eb56bbd811da8483ffe732e2edde844b2 Mon Sep 17 00:00:00 2001 From: Andrey Bienkowski Date: Sat, 5 Feb 2022 08:40:10 +0300 Subject: [PATCH 1/2] Test: borg init refuses to overwrite keyfile https://github.com/borgbackup/borg/pull/6046 neglected to add a regression test --- src/borg/testsuite/archiver.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index eb9f715f8..133d4f3e0 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -28,6 +28,7 @@ from unittest.mock import patch import pytest import borg +import borg.helpers.errors from .. import xattr, helpers, platform from ..archive import Archive, ChunkBuffer from ..archiver import Archiver, parse_storage_quota, PURE_PYTHON_MSGPACK_WARNING @@ -2864,6 +2865,21 @@ class ArchiverTestCase(ArchiverTestCaseBase): with pytest.raises(Repository.AlreadyExists): self.cmd('init', '--encryption=repokey', self.repository_location + '/nested') + def test_init_refuse_to_overwrite_keyfile(self): + """BORG_KEY_FILE=something borg init should quit if "something" already exists. + + See https://github.com/borgbackup/borg/pull/6046""" + keyfile = os.path.join(self.tmpdir, 'keyfile') + with environment_variable(BORG_KEY_FILE=keyfile): + self.cmd('init', '--encryption=keyfile', self.repository_location + '0') + with open(keyfile) as file: + before = file.read() + with pytest.raises(borg.helpers.errors.Error): + self.cmd('init', '--encryption=keyfile', self.repository_location + '1') + with open(keyfile) as file: + after = file.read() + assert before == after + def check_cache(self): # First run a regular borg check self.cmd('check', self.repository_location) From e21343d2a81376e547cd0edbcae01e64e4ab3f81 Mon Sep 17 00:00:00 2001 From: Andrey Bienkowski Date: Sat, 5 Feb 2022 22:18:52 +0300 Subject: [PATCH 2/2] Fix ArchiverTestCaseBinary.test_init_refuse_to_overwrite_keyfile --- src/borg/testsuite/archiver.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index 133d4f3e0..11d83525d 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -2874,8 +2874,12 @@ class ArchiverTestCase(ArchiverTestCaseBase): self.cmd('init', '--encryption=keyfile', self.repository_location + '0') with open(keyfile) as file: before = file.read() - with pytest.raises(borg.helpers.errors.Error): - self.cmd('init', '--encryption=keyfile', self.repository_location + '1') + arg = ('init', '--encryption=keyfile', self.repository_location + '1') + if self.FORK_DEFAULT: + self.cmd(*arg, exit_code=2) + else: + with pytest.raises(borg.helpers.errors.Error): + self.cmd(*arg) with open(keyfile) as file: after = file.read() assert before == after