From 975a094e6ef2530ba87cc567ff098663f6102a4c Mon Sep 17 00:00:00 2001 From: bigtedde Date: Wed, 19 Jul 2023 16:23:42 -0700 Subject: [PATCH] generate_archiver_tests added: generate tests by specifying kinds of archivers --- src/borg/testsuite/archiver/__init__.py | 15 +++++++++++++-- src/borg/testsuite/archiver/check_cmd.py | 6 ++++-- src/borg/testsuite/archiver/checks.py | 10 +++------- src/borg/testsuite/archiver/config_cmd.py | 8 ++++---- src/borg/testsuite/archiver/create_cmd.py | 5 ++++- src/borg/testsuite/archiver/debug_cmds.py | 6 ++++-- src/borg/testsuite/archiver/delete_cmd.py | 6 ++++-- src/borg/testsuite/archiver/diff_cmd.py | 6 ++++-- src/borg/testsuite/archiver/extract_cmd.py | 5 ++++- src/borg/testsuite/archiver/info_cmd.py | 6 ++++-- src/borg/testsuite/archiver/key_cmds.py | 6 ++++-- src/borg/testsuite/archiver/list_cmd.py | 6 ++++-- src/borg/testsuite/archiver/lock_cmds.py | 6 ++++-- src/borg/testsuite/archiver/mount_cmds.py | 6 ++++-- src/borg/testsuite/archiver/prune_cmd.py | 6 ++++-- src/borg/testsuite/archiver/rcreate_cmd.py | 6 ++++-- src/borg/testsuite/archiver/recreate_cmd.py | 5 ++++- src/borg/testsuite/archiver/rinfo_cmd.py | 6 ++++-- src/borg/testsuite/archiver/rlist_cmd.py | 6 ++++-- src/borg/testsuite/archiver/tar_cmds.py | 5 ++++- src/borg/testsuite/archiver/transfer_cmd.py | 6 ++++-- 21 files changed, 92 insertions(+), 45 deletions(-) diff --git a/src/borg/testsuite/archiver/__init__.py b/src/borg/testsuite/archiver/__init__.py index fdc6f4c96..3b2aa95bf 100644 --- a/src/borg/testsuite/archiver/__init__.py +++ b/src/borg/testsuite/archiver/__init__.py @@ -119,10 +119,21 @@ def cmd_fixture(request): return exec_fn -def pytest_generate_tests(metafunc): +def generate_archiver_tests(metafunc, kinds: str): # Generate tests for different scenarios: local repository, remote repository, and using the borg binary. + archivers = [] + for kind in kinds.split(","): + if kind == "local": + archivers.append("archiver") + elif kind == "remote": + archivers.append("remote_archiver") + elif kind == "binary": + archivers.append("binary_archiver") + else: + raise ValueError(f"Invalid archiver: Expected local, remote, or binary, received {kind}.") + if "archivers" in metafunc.fixturenames: - metafunc.parametrize("archivers", ["archiver", "remote_archiver", "binary_archiver"]) + metafunc.parametrize("archivers", archivers) def checkts(ts): diff --git a/src/borg/testsuite/archiver/check_cmd.py b/src/borg/testsuite/archiver/check_cmd.py index 91c973897..9f2637241 100644 --- a/src/borg/testsuite/archiver/check_cmd.py +++ b/src/borg/testsuite/archiver/check_cmd.py @@ -9,8 +9,10 @@ from ...helpers import bin_to_hex from ...helpers import msgpack from ...manifest import Manifest from ...repository import Repository -from . import pytest_generate_tests # NOQA -from . import cmd, src_file, create_src_archive, open_archive, RK_ENCRYPTION +from . import cmd, src_file, create_src_archive, open_archive, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def check_cmd_setup(archiver): diff --git a/src/borg/testsuite/archiver/checks.py b/src/borg/testsuite/archiver/checks.py index e3d5c8e41..0931f437d 100644 --- a/src/borg/testsuite/archiver/checks.py +++ b/src/borg/testsuite/archiver/checks.py @@ -17,7 +17,9 @@ from ...repository import Repository from .. import llfuse from .. import changedir, environment_variable from . import cmd, _extract_repository_id, open_repository, check_cache, create_test_files, create_src_archive -from . import _set_repository_id, create_regular_file, assert_creates_file, RK_ENCRYPTION +from . import _set_repository_id, create_regular_file, assert_creates_file, generate_archiver_tests, RK_ENCRYPTION + +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote") # NOQA def get_security_directory(repo_path): @@ -42,12 +44,6 @@ def cmd_raises_unknown_feature(archiver, args): assert excinfo.value.args == (["unknown-feature"],) -def pytest_generate_tests(metafunc): - # Generate tests for local and remote archivers - if "archivers" in metafunc.fixturenames: - metafunc.parametrize("archivers", ["archiver", "remote_archiver"]) - - def test_repository_swap_detection(archivers, request): archiver = request.getfixturevalue(archivers) repo_location, repo_path, input_path = archiver.repository_location, archiver.repository_path, archiver.input_path diff --git a/src/borg/testsuite/archiver/config_cmd.py b/src/borg/testsuite/archiver/config_cmd.py index 49745c7a2..5e3eb4bc0 100644 --- a/src/borg/testsuite/archiver/config_cmd.py +++ b/src/borg/testsuite/archiver/config_cmd.py @@ -1,12 +1,12 @@ import os -import pytest - from ...constants import * # NOQA -from . import RK_ENCRYPTION, create_test_files, cmd +from . import RK_ENCRYPTION, create_test_files, cmd, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,binary") # NOQA -@pytest.mark.parametrize("archivers", ["archiver", "binary_archiver"]) def test_config(archivers, request): archiver = request.getfixturevalue(archivers) repo_location = archiver.repository_location diff --git a/src/borg/testsuite/archiver/create_cmd.py b/src/borg/testsuite/archiver/create_cmd.py index 7af012ebe..a2a883288 100644 --- a/src/borg/testsuite/archiver/create_cmd.py +++ b/src/borg/testsuite/archiver/create_cmd.py @@ -27,9 +27,9 @@ from .. import ( same_ts_ns, is_root, ) -from . import pytest_generate_tests # NOQA from . import ( cmd, + generate_archiver_tests, create_test_files, assert_dirs_equal, create_regular_file, @@ -43,6 +43,9 @@ from . import ( RK_ENCRYPTION, ) +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA + def test_basic_functionality(archivers, request): archiver = request.getfixturevalue(archivers) diff --git a/src/borg/testsuite/archiver/debug_cmds.py b/src/borg/testsuite/archiver/debug_cmds.py index a845f174f..55d5a57fa 100644 --- a/src/borg/testsuite/archiver/debug_cmds.py +++ b/src/borg/testsuite/archiver/debug_cmds.py @@ -5,8 +5,10 @@ import pstats from ...constants import * # NOQA from .. import changedir from ..compress import Compressor -from . import cmd, create_test_files, create_regular_file, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, create_test_files, create_regular_file, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_debug_profile(archivers, request): diff --git a/src/borg/testsuite/archiver/delete_cmd.py b/src/borg/testsuite/archiver/delete_cmd.py index 5b8186923..dc11bc074 100644 --- a/src/borg/testsuite/archiver/delete_cmd.py +++ b/src/borg/testsuite/archiver/delete_cmd.py @@ -2,8 +2,10 @@ from ...archive import Archive from ...constants import * # NOQA from ...manifest import Manifest from ...repository import Repository -from . import cmd, create_regular_file, src_file, create_src_archive, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, create_regular_file, src_file, create_src_archive, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_delete(archivers, request): diff --git a/src/borg/testsuite/archiver/diff_cmd.py b/src/borg/testsuite/archiver/diff_cmd.py index 60445c81c..af36682c0 100644 --- a/src/borg/testsuite/archiver/diff_cmd.py +++ b/src/borg/testsuite/archiver/diff_cmd.py @@ -6,8 +6,10 @@ import time from ...constants import * # NOQA from .. import are_symlinks_supported, are_hardlinks_supported from ..platform import is_win32, is_darwin -from . import cmd, create_regular_file, RK_ENCRYPTION, assert_line_exists -from . import pytest_generate_tests # NOQA +from . import cmd, create_regular_file, RK_ENCRYPTION, assert_line_exists, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_basic_functionality(archivers, request): diff --git a/src/borg/testsuite/archiver/extract_cmd.py b/src/borg/testsuite/archiver/extract_cmd.py index 727cac9cb..8001666a8 100644 --- a/src/borg/testsuite/archiver/extract_cmd.py +++ b/src/borg/testsuite/archiver/extract_cmd.py @@ -14,7 +14,6 @@ from ...helpers import flags_noatime, flags_normal from .. import changedir, same_ts_ns from .. import are_symlinks_supported, are_hardlinks_supported, is_utime_fully_supported, is_birthtime_fully_supported from ..platform import is_darwin, is_win32 -from . import pytest_generate_tests # NOQA from . import ( RK_ENCRYPTION, requires_hardlinks, @@ -24,8 +23,12 @@ from . import ( assert_dirs_equal, _extract_hardlinks_setup, assert_creates_file, + generate_archiver_tests, ) +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA + @pytest.mark.skipif(not are_symlinks_supported(), reason="symlinks not supported") def test_symlink_extract(archivers, request): diff --git a/src/borg/testsuite/archiver/info_cmd.py b/src/borg/testsuite/archiver/info_cmd.py index a1e91094c..488d43067 100644 --- a/src/borg/testsuite/archiver/info_cmd.py +++ b/src/borg/testsuite/archiver/info_cmd.py @@ -2,8 +2,10 @@ import json import os from ...constants import * # NOQA -from . import cmd, checkts, create_regular_file, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, checkts, create_regular_file, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_info(archivers, request): diff --git a/src/borg/testsuite/archiver/key_cmds.py b/src/borg/testsuite/archiver/key_cmds.py index 860d5750f..d6bec11eb 100644 --- a/src/borg/testsuite/archiver/key_cmds.py +++ b/src/borg/testsuite/archiver/key_cmds.py @@ -12,8 +12,10 @@ from ...helpers import msgpack from ...repository import Repository from .. import environment_variable from .. import key -from . import RK_ENCRYPTION, KF_ENCRYPTION, cmd, _extract_repository_id, _set_repository_id -from . import pytest_generate_tests # NOQA +from . import RK_ENCRYPTION, KF_ENCRYPTION, cmd, _extract_repository_id, _set_repository_id, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_change_passphrase(archivers, request): diff --git a/src/borg/testsuite/archiver/list_cmd.py b/src/borg/testsuite/archiver/list_cmd.py index 107e22763..858576f60 100644 --- a/src/borg/testsuite/archiver/list_cmd.py +++ b/src/borg/testsuite/archiver/list_cmd.py @@ -2,8 +2,10 @@ import json import os from ...constants import * # NOQA -from . import src_dir, cmd, create_regular_file, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import src_dir, cmd, create_regular_file, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_list_format(archivers, request): diff --git a/src/borg/testsuite/archiver/lock_cmds.py b/src/borg/testsuite/archiver/lock_cmds.py index ae0ab09a8..2217387f8 100644 --- a/src/borg/testsuite/archiver/lock_cmds.py +++ b/src/borg/testsuite/archiver/lock_cmds.py @@ -1,8 +1,10 @@ import os from ...constants import * # NOQA -from . import cmd, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_break_lock(archivers, request): diff --git a/src/borg/testsuite/archiver/mount_cmds.py b/src/borg/testsuite/archiver/mount_cmds.py index 0ee961f89..b630eab77 100644 --- a/src/borg/testsuite/archiver/mount_cmds.py +++ b/src/borg/testsuite/archiver/mount_cmds.py @@ -14,8 +14,10 @@ from .. import changedir, no_selinux, same_ts_ns from .. import are_symlinks_supported, are_hardlinks_supported, are_fifos_supported from ..platform import fakeroot_detected from . import RK_ENCRYPTION, cmd, assert_dirs_equal, create_regular_file, create_src_archive, open_archive, src_file -from . import requires_hardlinks, _extract_hardlinks_setup, fuse_mount, create_test_files -from . import pytest_generate_tests # NOQA +from . import requires_hardlinks, _extract_hardlinks_setup, fuse_mount, create_test_files, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA @requires_hardlinks diff --git a/src/borg/testsuite/archiver/prune_cmd.py b/src/borg/testsuite/archiver/prune_cmd.py index 03bec20bd..560475679 100644 --- a/src/borg/testsuite/archiver/prune_cmd.py +++ b/src/borg/testsuite/archiver/prune_cmd.py @@ -2,8 +2,10 @@ import re from datetime import datetime from ...constants import * # NOQA -from . import cmd, RK_ENCRYPTION, src_dir -from . import pytest_generate_tests # NOQA +from . import cmd, RK_ENCRYPTION, src_dir, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def _create_archive_ts(archiver, name, y, m, d, H=0, M=0, S=0): diff --git a/src/borg/testsuite/archiver/rcreate_cmd.py b/src/borg/testsuite/archiver/rcreate_cmd.py index 73564eb21..3d2f42c9e 100644 --- a/src/borg/testsuite/archiver/rcreate_cmd.py +++ b/src/borg/testsuite/archiver/rcreate_cmd.py @@ -8,8 +8,10 @@ from ...constants import * # NOQA from ...crypto.key import FlexiKey from ...repository import Repository from .. import environment_variable -from . import cmd, RK_ENCRYPTION, KF_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, generate_archiver_tests, RK_ENCRYPTION, KF_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_rcreate_parent_dirs(archivers, request): diff --git a/src/borg/testsuite/archiver/recreate_cmd.py b/src/borg/testsuite/archiver/recreate_cmd.py index 438f0e6da..3cf330b16 100644 --- a/src/borg/testsuite/archiver/recreate_cmd.py +++ b/src/borg/testsuite/archiver/recreate_cmd.py @@ -6,7 +6,6 @@ import pytest from ...constants import * # NOQA from .. import changedir, are_hardlinks_supported -from . import pytest_generate_tests # NOQA from . import ( _create_test_caches, _create_test_tagged, @@ -15,6 +14,7 @@ from . import ( _assert_test_tagged, _assert_test_keep_tagged, _extract_hardlinks_setup, + generate_archiver_tests, check_cache, cmd, create_regular_file, @@ -22,6 +22,9 @@ from . import ( RK_ENCRYPTION, ) +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA + def test_recreate_exclude_caches(archivers, request): archiver = request.getfixturevalue(archivers) diff --git a/src/borg/testsuite/archiver/rinfo_cmd.py b/src/borg/testsuite/archiver/rinfo_cmd.py index 915135ab4..f28f85645 100644 --- a/src/borg/testsuite/archiver/rinfo_cmd.py +++ b/src/borg/testsuite/archiver/rinfo_cmd.py @@ -2,8 +2,10 @@ import json from random import randbytes from ...constants import * # NOQA -from . import checkts, cmd, create_regular_file, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import checkts, cmd, create_regular_file, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_info(archivers, request): diff --git a/src/borg/testsuite/archiver/rlist_cmd.py b/src/borg/testsuite/archiver/rlist_cmd.py index b2c21bd87..344db8c37 100644 --- a/src/borg/testsuite/archiver/rlist_cmd.py +++ b/src/borg/testsuite/archiver/rlist_cmd.py @@ -2,8 +2,10 @@ import json import os from ...constants import * # NOQA -from . import cmd, checkts, create_src_archive, create_regular_file, src_dir, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import cmd, checkts, create_src_archive, create_regular_file, src_dir, generate_archiver_tests, RK_ENCRYPTION + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_rlist_glob(archivers, request): diff --git a/src/borg/testsuite/archiver/tar_cmds.py b/src/borg/testsuite/archiver/tar_cmds.py index a81597970..e5b4ce5fc 100644 --- a/src/borg/testsuite/archiver/tar_cmds.py +++ b/src/borg/testsuite/archiver/tar_cmds.py @@ -7,7 +7,10 @@ import pytest from ...constants import * # NOQA from .. import changedir from . import assert_dirs_equal, _extract_hardlinks_setup, cmd, create_test_files, requires_hardlinks, RK_ENCRYPTION -from . import pytest_generate_tests # NOQA +from . import generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def have_gnutar(): diff --git a/src/borg/testsuite/archiver/transfer_cmd.py b/src/borg/testsuite/archiver/transfer_cmd.py index 24a00c13b..d12e08b10 100644 --- a/src/borg/testsuite/archiver/transfer_cmd.py +++ b/src/borg/testsuite/archiver/transfer_cmd.py @@ -8,8 +8,10 @@ import pytest from ...constants import * # NOQA from ...helpers.time import parse_timestamp from ..platform import is_win32 -from . import cmd, create_test_files, RK_ENCRYPTION, open_archive -from . import pytest_generate_tests # NOQA +from . import cmd, create_test_files, RK_ENCRYPTION, open_archive, generate_archiver_tests + +# Tests that include the 'archivers' argument will generate a tests for each kind of archivers specified. +pytest_generate_tests = lambda metafunc: generate_archiver_tests(metafunc, kinds="local,remote,binary") # NOQA def test_transfer(archivers, request):