From 8a425c2f0a2f0f5ff0a6992feac5f68894190fd8 Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Fri, 10 May 2024 16:59:09 +0200 Subject: [PATCH] remove usages of repo.Backend() from tests --- internal/archiver/archiver_test.go | 2 +- internal/checker/checker_test.go | 30 ++++++++++----------- internal/index/index_parallel_test.go | 2 +- internal/index/master_index_test.go | 2 +- internal/migrations/upgrade_repo_v2_test.go | 2 +- internal/repository/fuzz_test.go | 2 +- internal/repository/lock_test.go | 24 ++++++++--------- internal/repository/prune_test.go | 4 +-- internal/repository/repack_test.go | 10 +++---- internal/repository/repair_index_test.go | 24 ++++++++--------- internal/repository/repair_pack_test.go | 26 +++++++++--------- internal/repository/repository_test.go | 28 +++++++++---------- internal/repository/testing.go | 19 ++++++------- internal/repository/upgrade_repo.go | 4 +-- internal/repository/upgrade_repo_test.go | 4 +-- internal/restic/lock_test.go | 2 +- internal/restic/snapshot_test.go | 2 +- internal/restic/tree_test.go | 4 +-- 18 files changed, 96 insertions(+), 95 deletions(-) diff --git a/internal/archiver/archiver_test.go b/internal/archiver/archiver_test.go index 51a425f4e..8d0c2c02f 100644 --- a/internal/archiver/archiver_test.go +++ b/internal/archiver/archiver_test.go @@ -1970,7 +1970,7 @@ func TestArchiverContextCanceled(t *testing.T) { }) // Ensure that the archiver itself reports the canceled context and not just the backend - repo := repository.TestRepositoryWithBackend(t, &noCancelBackend{mem.New()}, 0, repository.Options{}) + repo, _ := repository.TestRepositoryWithBackend(t, &noCancelBackend{mem.New()}, 0, repository.Options{}) back := rtest.Chdir(t, tempdir) defer back() diff --git a/internal/checker/checker_test.go b/internal/checker/checker_test.go index 38a166000..62401aa19 100644 --- a/internal/checker/checker_test.go +++ b/internal/checker/checker_test.go @@ -73,7 +73,7 @@ func assertOnlyMixedPackHints(t *testing.T, hints []error) { } func TestCheckRepo(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() chkr := checker.New(repo, false) @@ -91,7 +91,7 @@ func TestCheckRepo(t *testing.T) { } func TestMissingPack(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() packID := restic.TestParseID("657f7fb64f6a854fff6fe9279998ee09034901eded4e6db9bcee0e59745bbce6") @@ -117,7 +117,7 @@ func TestMissingPack(t *testing.T) { } func TestUnreferencedPack(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() // index 3f1a only references pack 60e0 @@ -145,7 +145,7 @@ func TestUnreferencedPack(t *testing.T) { } func TestUnreferencedBlobs(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() snapshotID := restic.TestParseID("51d249d28815200d59e4be7b3f21a157b864dc343353df9d8e498220c2499b02") @@ -180,7 +180,7 @@ func TestUnreferencedBlobs(t *testing.T) { } func TestModifiedIndex(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, be, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() done := make(chan struct{}) @@ -208,13 +208,13 @@ func TestModifiedIndex(t *testing.T) { }() wr := io.Writer(tmpfile) var hw *hashing.Writer - if repo.Backend().Hasher() != nil { - hw = hashing.NewWriter(wr, repo.Backend().Hasher()) + if be.Hasher() != nil { + hw = hashing.NewWriter(wr, be.Hasher()) wr = hw } // read the file from the backend - err = repo.Backend().Load(context.TODO(), h, 0, 0, func(rd io.Reader) error { + err = be.Load(context.TODO(), h, 0, 0, func(rd io.Reader) error { _, err := io.Copy(wr, rd) return err }) @@ -236,7 +236,7 @@ func TestModifiedIndex(t *testing.T) { t.Fatal(err) } - err = repo.Backend().Save(context.TODO(), h2, rd) + err = be.Save(context.TODO(), h2, rd) if err != nil { t.Fatal(err) } @@ -257,7 +257,7 @@ func TestModifiedIndex(t *testing.T) { var checkerDuplicateIndexTestData = filepath.Join("testdata", "duplicate-packs-in-index-test-repo.tar.gz") func TestDuplicatePacksInIndex(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerDuplicateIndexTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerDuplicateIndexTestData) defer cleanup() chkr := checker.New(repo, false) @@ -334,11 +334,11 @@ func (b *errorOnceBackend) Load(ctx context.Context, h backend.Handle, length in } func TestCheckerModifiedData(t *testing.T) { - repo := repository.TestRepository(t) + repo, be := repository.TestRepositoryWithVersion(t, 0) sn := archiver.TestSnapshot(t, repo, ".", nil) t.Logf("archived as %v", sn.ID().Str()) - errBe := &errorBackend{Backend: repo.Backend()} + errBe := &errorBackend{Backend: be} for _, test := range []struct { name string @@ -360,7 +360,7 @@ func TestCheckerModifiedData(t *testing.T) { }, { "errorOnceBackend", - &errorOnceBackend{Backend: repo.Backend()}, + &errorOnceBackend{Backend: be}, func() {}, func(t *testing.T, err error) { if !strings.Contains(err.Error(), "check successful on second attempt, original error pack") { @@ -427,7 +427,7 @@ func (r *loadTreesOnceRepository) LoadTree(ctx context.Context, id restic.ID) (* } func TestCheckerNoDuplicateTreeDecodes(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) defer cleanup() checkRepo := &loadTreesOnceRepository{ Repository: repo, @@ -575,7 +575,7 @@ func TestCheckerBlobTypeConfusion(t *testing.T) { } func loadBenchRepository(t *testing.B) (*checker.Checker, restic.Repository, func()) { - repo, cleanup := repository.TestFromFixture(t, checkerTestData) + repo, _, cleanup := repository.TestFromFixture(t, checkerTestData) chkr := checker.New(repo, false) hints, errs := chkr.LoadIndex(context.TODO(), nil) diff --git a/internal/index/index_parallel_test.go b/internal/index/index_parallel_test.go index 5cb8d299d..61b0aad63 100644 --- a/internal/index/index_parallel_test.go +++ b/internal/index/index_parallel_test.go @@ -15,7 +15,7 @@ import ( var repoFixture = filepath.Join("..", "repository", "testdata", "test-repo.tar.gz") func TestRepositoryForAllIndexes(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, repoFixture) + repo, _, cleanup := repository.TestFromFixture(t, repoFixture) defer cleanup() expectedIndexIDs := restic.NewIDSet() diff --git a/internal/index/master_index_test.go b/internal/index/master_index_test.go index fe0364c61..c3560a7fb 100644 --- a/internal/index/master_index_test.go +++ b/internal/index/master_index_test.go @@ -342,7 +342,7 @@ var ( ) func createFilledRepo(t testing.TB, snapshots int, version uint) restic.Repository { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) for i := 0; i < snapshots; i++ { restic.TestCreateSnapshot(t, repo, snapshotTime.Add(time.Duration(i)*time.Second), depth) diff --git a/internal/migrations/upgrade_repo_v2_test.go b/internal/migrations/upgrade_repo_v2_test.go index 59f2394e0..44a39b6c5 100644 --- a/internal/migrations/upgrade_repo_v2_test.go +++ b/internal/migrations/upgrade_repo_v2_test.go @@ -8,7 +8,7 @@ import ( ) func TestUpgradeRepoV2(t *testing.T) { - repo := repository.TestRepositoryWithVersion(t, 1) + repo, _ := repository.TestRepositoryWithVersion(t, 1) if repo.Config().Version != 1 { t.Fatal("test repo has wrong version") } diff --git a/internal/repository/fuzz_test.go b/internal/repository/fuzz_test.go index 80372f8e0..f1fb06157 100644 --- a/internal/repository/fuzz_test.go +++ b/internal/repository/fuzz_test.go @@ -18,7 +18,7 @@ func FuzzSaveLoadBlob(f *testing.F) { } id := restic.Hash(blob) - repo := TestRepositoryWithVersion(t, 2) + repo, _ := TestRepositoryWithVersion(t, 2) var wg errgroup.Group repo.StartPackUploader(context.TODO(), &wg) diff --git a/internal/repository/lock_test.go b/internal/repository/lock_test.go index 7bc32c0fb..bd7cbd5e2 100644 --- a/internal/repository/lock_test.go +++ b/internal/repository/lock_test.go @@ -19,7 +19,7 @@ import ( type backendWrapper func(r backend.Backend) (backend.Backend, error) -func openLockTestRepo(t *testing.T, wrapper backendWrapper) *Repository { +func openLockTestRepo(t *testing.T, wrapper backendWrapper) (*Repository, backend.Backend) { be := backend.Backend(mem.New()) // initialize repo TestRepositoryWithBackend(t, be, 0, Options{}) @@ -31,7 +31,7 @@ func openLockTestRepo(t *testing.T, wrapper backendWrapper) *Repository { rtest.OK(t, err) } - return TestOpenBackend(t, be) + return TestOpenBackend(t, be), be } func checkedLockRepo(ctx context.Context, t *testing.T, repo *Repository, lockerInst *locker, retryLock time.Duration) (*Unlocker, context.Context) { @@ -46,7 +46,7 @@ func checkedLockRepo(ctx context.Context, t *testing.T, repo *Repository, locker func TestLock(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) + repo, _ := openLockTestRepo(t, nil) lock, wrappedCtx := checkedLockRepo(context.Background(), t, repo, lockerInst, 0) lock.Unlock() @@ -57,7 +57,7 @@ func TestLock(t *testing.T) { func TestLockCancel(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) + repo, _ := openLockTestRepo(t, nil) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -73,8 +73,8 @@ func TestLockCancel(t *testing.T) { func TestLockConflict(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) - repo2 := TestOpenBackend(t, repo.Backend()) + repo, be := openLockTestRepo(t, nil) + repo2 := TestOpenBackend(t, be) lock, _, err := Lock(context.Background(), repo, true, 0, func(msg string) {}, func(format string, args ...interface{}) {}) test.OK(t, err) @@ -101,7 +101,7 @@ func (b *writeOnceBackend) Save(ctx context.Context, h backend.Handle, rd backen func TestLockFailedRefresh(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { + repo, _ := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { return &writeOnceBackend{Backend: r}, nil }) @@ -138,7 +138,7 @@ func (b *loggingBackend) Save(ctx context.Context, h backend.Handle, rd backend. func TestLockSuccessfulRefresh(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { + repo, _ := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { return &loggingBackend{ Backend: r, t: t, @@ -190,7 +190,7 @@ func (b *slowBackend) Save(ctx context.Context, h backend.Handle, rd backend.Rew func TestLockSuccessfulStaleRefresh(t *testing.T) { t.Parallel() var sb *slowBackend - repo := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { + repo, _ := openLockTestRepo(t, func(r backend.Backend) (backend.Backend, error) { sb = &slowBackend{Backend: r} return sb, nil }) @@ -238,7 +238,7 @@ func TestLockSuccessfulStaleRefresh(t *testing.T) { func TestLockWaitTimeout(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) + repo, _ := openLockTestRepo(t, nil) elock, _, err := Lock(context.TODO(), repo, true, 0, func(msg string) {}, func(format string, args ...interface{}) {}) test.OK(t, err) @@ -260,7 +260,7 @@ func TestLockWaitTimeout(t *testing.T) { func TestLockWaitCancel(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) + repo, _ := openLockTestRepo(t, nil) elock, _, err := Lock(context.TODO(), repo, true, 0, func(msg string) {}, func(format string, args ...interface{}) {}) test.OK(t, err) @@ -286,7 +286,7 @@ func TestLockWaitCancel(t *testing.T) { func TestLockWaitSuccess(t *testing.T) { t.Parallel() - repo := openLockTestRepo(t, nil) + repo, _ := openLockTestRepo(t, nil) elock, _, err := Lock(context.TODO(), repo, true, 0, func(msg string) {}, func(format string, args ...interface{}) {}) test.OK(t, err) diff --git a/internal/repository/prune_test.go b/internal/repository/prune_test.go index e12ba6e3d..dbf36ffd0 100644 --- a/internal/repository/prune_test.go +++ b/internal/repository/prune_test.go @@ -14,7 +14,7 @@ import ( ) func testPrune(t *testing.T, opts repository.PruneOptions, errOnUnused bool) { - repo := repository.TestRepository(t) + repo, be := repository.TestRepositoryWithVersion(t, 0) createRandomBlobs(t, repo, 4, 0.5, true) createRandomBlobs(t, repo, 5, 0.5, true) keep, _ := selectBlobs(t, repo, 0.5) @@ -37,7 +37,7 @@ func testPrune(t *testing.T, opts repository.PruneOptions, errOnUnused bool) { rtest.OK(t, plan.Execute(context.TODO(), &progress.NoopPrinter{})) - repo = repository.TestOpenBackend(t, repo.Backend()) + repo = repository.TestOpenBackend(t, be) checker.TestCheckRepo(t, repo, true) if errOnUnused { diff --git a/internal/repository/repack_test.go b/internal/repository/repack_test.go index 949f607df..3fd56ccb1 100644 --- a/internal/repository/repack_test.go +++ b/internal/repository/repack_test.go @@ -215,7 +215,7 @@ func TestRepack(t *testing.T) { } func testRepack(t *testing.T, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) seed := time.Now().UnixNano() rand.Seed(seed) @@ -293,8 +293,8 @@ func (r oneConnectionRepo) Connections() uint { } func testRepackCopy(t *testing.T, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) - dstRepo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) + dstRepo, _ := repository.TestRepositoryWithVersion(t, version) // test with minimal possible connection count repoWrapped := &oneConnectionRepo{repo} @@ -340,7 +340,7 @@ func TestRepackWrongBlob(t *testing.T) { func testRepackWrongBlob(t *testing.T, version uint) { // disable verification to allow adding corrupted blobs to the repository - repo := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) + repo, _ := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) seed := time.Now().UnixNano() rand.Seed(seed) @@ -366,7 +366,7 @@ func TestRepackBlobFallback(t *testing.T) { func testRepackBlobFallback(t *testing.T, version uint) { // disable verification to allow adding corrupted blobs to the repository - repo := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) + repo, _ := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) seed := time.Now().UnixNano() rand.Seed(seed) diff --git a/internal/repository/repair_index_test.go b/internal/repository/repair_index_test.go index 5b2c98044..79922e9ec 100644 --- a/internal/repository/repair_index_test.go +++ b/internal/repository/repair_index_test.go @@ -16,16 +16,16 @@ func listIndex(t *testing.T, repo restic.Lister) restic.IDSet { return listFiles(t, repo, restic.IndexFile) } -func testRebuildIndex(t *testing.T, readAllPacks bool, damage func(t *testing.T, repo *repository.Repository)) { - repo := repository.TestRepository(t) +func testRebuildIndex(t *testing.T, readAllPacks bool, damage func(t *testing.T, repo *repository.Repository, be backend.Backend)) { + repo, be := repository.TestRepositoryWithVersion(t, 0) createRandomBlobs(t, repo, 4, 0.5, true) createRandomBlobs(t, repo, 5, 0.5, true) indexes := listIndex(t, repo) t.Logf("old indexes %v", indexes) - damage(t, repo) + damage(t, repo, be) - repo = repository.TestOpenBackend(t, repo.Backend()) + repo = repository.TestOpenBackend(t, be) rtest.OK(t, repository.RepairIndex(context.TODO(), repo, repository.RepairIndexOptions{ ReadAllPacks: readAllPacks, }, &progress.NoopPrinter{})) @@ -40,17 +40,17 @@ func testRebuildIndex(t *testing.T, readAllPacks bool, damage func(t *testing.T, func TestRebuildIndex(t *testing.T) { for _, test := range []struct { name string - damage func(t *testing.T, repo *repository.Repository) + damage func(t *testing.T, repo *repository.Repository, be backend.Backend) }{ { "valid index", - func(t *testing.T, repo *repository.Repository) {}, + func(t *testing.T, repo *repository.Repository, be backend.Backend) {}, }, { "damaged index", - func(t *testing.T, repo *repository.Repository) { + func(t *testing.T, repo *repository.Repository, be backend.Backend) { index := listIndex(t, repo).List()[0] - replaceFile(t, repo, backend.Handle{Type: restic.IndexFile, Name: index.String()}, func(b []byte) []byte { + replaceFile(t, be, backend.Handle{Type: restic.IndexFile, Name: index.String()}, func(b []byte) []byte { b[0] ^= 0xff return b }) @@ -58,16 +58,16 @@ func TestRebuildIndex(t *testing.T) { }, { "missing index", - func(t *testing.T, repo *repository.Repository) { + func(t *testing.T, repo *repository.Repository, be backend.Backend) { index := listIndex(t, repo).List()[0] - rtest.OK(t, repo.Backend().Remove(context.TODO(), backend.Handle{Type: restic.IndexFile, Name: index.String()})) + rtest.OK(t, be.Remove(context.TODO(), backend.Handle{Type: restic.IndexFile, Name: index.String()})) }, }, { "missing pack", - func(t *testing.T, repo *repository.Repository) { + func(t *testing.T, repo *repository.Repository, be backend.Backend) { pack := listPacks(t, repo).List()[0] - rtest.OK(t, repo.Backend().Remove(context.TODO(), backend.Handle{Type: restic.PackFile, Name: pack.String()})) + rtest.OK(t, be.Remove(context.TODO(), backend.Handle{Type: restic.PackFile, Name: pack.String()})) }, }, } { diff --git a/internal/repository/repair_pack_test.go b/internal/repository/repair_pack_test.go index ccb9bd131..7acdc646e 100644 --- a/internal/repository/repair_pack_test.go +++ b/internal/repository/repair_pack_test.go @@ -24,12 +24,12 @@ func listBlobs(repo restic.Repository) restic.BlobSet { return blobs } -func replaceFile(t *testing.T, repo *repository.Repository, h backend.Handle, damage func([]byte) []byte) { - buf, err := backendtest.LoadAll(context.TODO(), repo.Backend(), h) +func replaceFile(t *testing.T, be backend.Backend, h backend.Handle, damage func([]byte) []byte) { + buf, err := backendtest.LoadAll(context.TODO(), be, h) test.OK(t, err) buf = damage(buf) - test.OK(t, repo.Backend().Remove(context.TODO(), h)) - test.OK(t, repo.Backend().Save(context.TODO(), h, backend.NewByteReader(buf, repo.Backend().Hasher()))) + test.OK(t, be.Remove(context.TODO(), h)) + test.OK(t, be.Save(context.TODO(), h, backend.NewByteReader(buf, be.Hasher()))) } func TestRepairBrokenPack(t *testing.T) { @@ -39,17 +39,17 @@ func TestRepairBrokenPack(t *testing.T) { func testRepairBrokenPack(t *testing.T, version uint) { tests := []struct { name string - damage func(t *testing.T, repo *repository.Repository, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) + damage func(t *testing.T, repo *repository.Repository, be backend.Backend, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) }{ { "valid pack", - func(t *testing.T, repo *repository.Repository, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { + func(t *testing.T, repo *repository.Repository, be backend.Backend, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { return packsBefore, restic.NewBlobSet() }, }, { "broken pack", - func(t *testing.T, repo *repository.Repository, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { + func(t *testing.T, repo *repository.Repository, be backend.Backend, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { wrongBlob := createRandomWrongBlob(t, repo) damagedPacks := findPacksForBlobs(t, repo, restic.NewBlobSet(wrongBlob)) return damagedPacks, restic.NewBlobSet(wrongBlob) @@ -57,10 +57,10 @@ func testRepairBrokenPack(t *testing.T, version uint) { }, { "partially broken pack", - func(t *testing.T, repo *repository.Repository, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { + func(t *testing.T, repo *repository.Repository, be backend.Backend, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { // damage one of the pack files damagedID := packsBefore.List()[0] - replaceFile(t, repo, backend.Handle{Type: backend.PackFile, Name: damagedID.String()}, + replaceFile(t, be, backend.Handle{Type: backend.PackFile, Name: damagedID.String()}, func(buf []byte) []byte { buf[0] ^= 0xff return buf @@ -80,10 +80,10 @@ func testRepairBrokenPack(t *testing.T, version uint) { }, }, { "truncated pack", - func(t *testing.T, repo *repository.Repository, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { + func(t *testing.T, repo *repository.Repository, be backend.Backend, packsBefore restic.IDSet) (restic.IDSet, restic.BlobSet) { // damage one of the pack files damagedID := packsBefore.List()[0] - replaceFile(t, repo, backend.Handle{Type: backend.PackFile, Name: damagedID.String()}, + replaceFile(t, be, backend.Handle{Type: backend.PackFile, Name: damagedID.String()}, func(buf []byte) []byte { buf = buf[0:10] return buf @@ -104,7 +104,7 @@ func testRepairBrokenPack(t *testing.T, version uint) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { // disable verification to allow adding corrupted blobs to the repository - repo := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) + repo, be := repository.TestRepositoryWithBackend(t, nil, version, repository.Options{NoExtraVerify: true}) seed := time.Now().UnixNano() rand.Seed(seed) @@ -114,7 +114,7 @@ func testRepairBrokenPack(t *testing.T, version uint) { packsBefore := listPacks(t, repo) blobsBefore := listBlobs(repo) - toRepair, damagedBlobs := test.damage(t, repo, packsBefore) + toRepair, damagedBlobs := test.damage(t, repo, be, packsBefore) rtest.OK(t, repository.RepairPacks(context.TODO(), repo, toRepair, &progress.NoopPrinter{})) // reload index diff --git a/internal/repository/repository_test.go b/internal/repository/repository_test.go index a4733707c..f0d3ae486 100644 --- a/internal/repository/repository_test.go +++ b/internal/repository/repository_test.go @@ -45,7 +45,7 @@ func testSaveCalculateID(t *testing.T, version uint) { } func testSave(t *testing.T, version uint, calculateID bool) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) for _, size := range testSizes { data := make([]byte, size) @@ -88,7 +88,7 @@ func BenchmarkSaveAndEncrypt(t *testing.B) { } func benchmarkSaveAndEncrypt(t *testing.B, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) size := 4 << 20 // 4MiB data := make([]byte, size) @@ -114,7 +114,7 @@ func TestLoadBlob(t *testing.T) { } func testLoadBlob(t *testing.T, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) length := 1000000 buf := crypto.NewBlobBuffer(length) _, err := io.ReadFull(rnd, buf) @@ -145,7 +145,7 @@ func testLoadBlob(t *testing.T, version uint) { func TestLoadBlobBroken(t *testing.T) { be := mem.New() - repo := repository.TestRepositoryWithBackend(t, &damageOnceBackend{Backend: be}, restic.StableRepoVersion, repository.Options{}) + repo, _ := repository.TestRepositoryWithBackend(t, &damageOnceBackend{Backend: be}, restic.StableRepoVersion, repository.Options{}) buf := test.Random(42, 1000) var wg errgroup.Group @@ -170,7 +170,7 @@ func BenchmarkLoadBlob(b *testing.B) { } func benchmarkLoadBlob(b *testing.B, version uint) { - repo := repository.TestRepositoryWithVersion(b, version) + repo, _ := repository.TestRepositoryWithVersion(b, version) length := 1000000 buf := crypto.NewBlobBuffer(length) _, err := io.ReadFull(rnd, buf) @@ -211,7 +211,7 @@ func BenchmarkLoadUnpacked(b *testing.B) { } func benchmarkLoadUnpacked(b *testing.B, version uint) { - repo := repository.TestRepositoryWithVersion(b, version) + repo, _ := repository.TestRepositoryWithVersion(b, version) length := 1000000 buf := crypto.NewBlobBuffer(length) _, err := io.ReadFull(rnd, buf) @@ -247,7 +247,7 @@ func benchmarkLoadUnpacked(b *testing.B, version uint) { var repoFixture = filepath.Join("testdata", "test-repo.tar.gz") func TestRepositoryLoadIndex(t *testing.T) { - repo, cleanup := repository.TestFromFixture(t, repoFixture) + repo, _, cleanup := repository.TestFromFixture(t, repoFixture) defer cleanup() rtest.OK(t, repo.LoadIndex(context.TODO(), nil)) @@ -268,7 +268,7 @@ func loadIndex(ctx context.Context, repo restic.LoaderUnpacked, id restic.ID) (* } func TestRepositoryLoadUnpackedBroken(t *testing.T) { - repo := repository.TestRepository(t) + repo, be := repository.TestRepositoryWithVersion(t, 0) data := rtest.Random(23, 12345) id := restic.Hash(data) @@ -277,7 +277,7 @@ func TestRepositoryLoadUnpackedBroken(t *testing.T) { data[0] ^= 0xff // store broken file - err := repo.Backend().Save(context.TODO(), h, backend.NewByteReader(data, repo.Backend().Hasher())) + err := be.Save(context.TODO(), h, backend.NewByteReader(data, be.Hasher())) rtest.OK(t, err) _, err = repo.LoadUnpacked(context.TODO(), restic.IndexFile, id) @@ -322,7 +322,7 @@ func BenchmarkLoadIndex(b *testing.B) { func benchmarkLoadIndex(b *testing.B, version uint) { repository.TestUseLowSecurityKDFParameters(b) - repo := repository.TestRepositoryWithVersion(b, version) + repo, be := repository.TestRepositoryWithVersion(b, version) idx := index.NewIndex() for i := 0; i < 5000; i++ { @@ -340,7 +340,7 @@ func benchmarkLoadIndex(b *testing.B, version uint) { rtest.OK(b, err) b.Logf("index saved as %v", id.Str()) - fi, err := repo.Backend().Stat(context.TODO(), backend.Handle{Type: restic.IndexFile, Name: id.String()}) + fi, err := be.Stat(context.TODO(), backend.Handle{Type: restic.IndexFile, Name: id.String()}) rtest.OK(b, err) b.Logf("filesize is %v", fi.Size) @@ -374,7 +374,7 @@ func TestRepositoryIncrementalIndex(t *testing.T) { } func testRepositoryIncrementalIndex(t *testing.T, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) index.IndexFull = func(*index.Index, bool) bool { return true } @@ -425,7 +425,7 @@ func TestInvalidCompression(t *testing.T) { func TestListPack(t *testing.T) { be := mem.New() - repo := repository.TestRepositoryWithBackend(t, &damageOnceBackend{Backend: be}, restic.StableRepoVersion, repository.Options{}) + repo, _ := repository.TestRepositoryWithBackend(t, &damageOnceBackend{Backend: be}, restic.StableRepoVersion, repository.Options{}) buf := test.Random(42, 1000) var wg errgroup.Group @@ -440,7 +440,7 @@ func TestListPack(t *testing.T) { // Forcibly cache pack file packID := repo.Index().Lookup(restic.BlobHandle{Type: restic.TreeBlob, ID: id})[0].PackID - rtest.OK(t, repo.Backend().Load(context.TODO(), backend.Handle{Type: restic.PackFile, IsMetadata: true, Name: packID.String()}, 0, 0, func(rd io.Reader) error { return nil })) + rtest.OK(t, be.Load(context.TODO(), backend.Handle{Type: restic.PackFile, IsMetadata: true, Name: packID.String()}, 0, 0, func(rd io.Reader) error { return nil })) // Get size to list pack var size int64 diff --git a/internal/repository/testing.go b/internal/repository/testing.go index 5d0db1a31..2155cad16 100644 --- a/internal/repository/testing.go +++ b/internal/repository/testing.go @@ -46,7 +46,7 @@ const testChunkerPol = chunker.Pol(0x3DA3358B4DC173) // TestRepositoryWithBackend returns a repository initialized with a test // password. If be is nil, an in-memory backend is used. A constant polynomial // is used for the chunker and low-security test parameters. -func TestRepositoryWithBackend(t testing.TB, be backend.Backend, version uint, opts Options) *Repository { +func TestRepositoryWithBackend(t testing.TB, be backend.Backend, version uint, opts Options) (*Repository, backend.Backend) { t.Helper() TestUseLowSecurityKDFParameters(t) restic.TestDisableCheckPolynomial(t) @@ -69,7 +69,7 @@ func TestRepositoryWithBackend(t testing.TB, be backend.Backend, version uint, o t.Fatalf("TestRepository(): initialize repo failed: %v", err) } - return repo + return repo, be } // TestRepository returns a repository initialized with a test password on an @@ -78,10 +78,11 @@ func TestRepositoryWithBackend(t testing.TB, be backend.Backend, version uint, o // instead. The directory is not removed, but left there for inspection. func TestRepository(t testing.TB) *Repository { t.Helper() - return TestRepositoryWithVersion(t, 0) + repo, _ := TestRepositoryWithVersion(t, 0) + return repo } -func TestRepositoryWithVersion(t testing.TB, version uint) *Repository { +func TestRepositoryWithVersion(t testing.TB, version uint) (*Repository, backend.Backend) { t.Helper() dir := os.Getenv("RESTIC_TEST_REPO") opts := Options{} @@ -103,15 +104,15 @@ func TestRepositoryWithVersion(t testing.TB, version uint) *Repository { return TestRepositoryWithBackend(t, nil, version, opts) } -func TestFromFixture(t testing.TB, repoFixture string) (*Repository, func()) { +func TestFromFixture(t testing.TB, repoFixture string) (*Repository, backend.Backend, func()) { repodir, cleanup := test.Env(t, repoFixture) - repo := TestOpenLocal(t, repodir) + repo, be := TestOpenLocal(t, repodir) - return repo, cleanup + return repo, be, cleanup } // TestOpenLocal opens a local repository. -func TestOpenLocal(t testing.TB, dir string) *Repository { +func TestOpenLocal(t testing.TB, dir string) (*Repository, backend.Backend) { var be backend.Backend be, err := local.Open(context.TODO(), local.Config{Path: dir, Connections: 2}) if err != nil { @@ -120,7 +121,7 @@ func TestOpenLocal(t testing.TB, dir string) *Repository { be = retry.New(be, 3, nil, nil) - return TestOpenBackend(t, be) + return TestOpenBackend(t, be), be } func TestOpenBackend(t testing.TB, be backend.Backend) *Repository { diff --git a/internal/repository/upgrade_repo.go b/internal/repository/upgrade_repo.go index 3e86cc377..ea3ae2c0e 100644 --- a/internal/repository/upgrade_repo.go +++ b/internal/repository/upgrade_repo.go @@ -88,8 +88,8 @@ func UpgradeRepo(ctx context.Context, repo *Repository) error { } // try contingency methods, reupload the original file - _ = repo.Backend().Remove(ctx, h) - err = repo.Backend().Save(ctx, h, backend.NewByteReader(rawConfigFile, nil)) + _ = repo.be.Remove(ctx, h) + err = repo.be.Save(ctx, h, backend.NewByteReader(rawConfigFile, nil)) if err != nil { repoError.ReuploadOldConfigError = err } diff --git a/internal/repository/upgrade_repo_test.go b/internal/repository/upgrade_repo_test.go index 85555692a..61ca6ef95 100644 --- a/internal/repository/upgrade_repo_test.go +++ b/internal/repository/upgrade_repo_test.go @@ -13,7 +13,7 @@ import ( ) func TestUpgradeRepoV2(t *testing.T) { - repo := TestRepositoryWithVersion(t, 1) + repo, _ := TestRepositoryWithVersion(t, 1) if repo.Config().Version != 1 { t.Fatal("test repo has wrong version") } @@ -55,7 +55,7 @@ func TestUpgradeRepoV2Failure(t *testing.T) { Backend: be, } - repo := TestRepositoryWithBackend(t, be, 1, Options{}) + repo, _ := TestRepositoryWithBackend(t, be, 1, Options{}) if repo.Config().Version != 1 { t.Fatal("test repo has wrong version") } diff --git a/internal/restic/lock_test.go b/internal/restic/lock_test.go index 0ca5e815f..fb9345fbc 100644 --- a/internal/restic/lock_test.go +++ b/internal/restic/lock_test.go @@ -66,7 +66,7 @@ func (be *failLockLoadingBackend) Load(ctx context.Context, h backend.Handle, le func TestMultipleLockFailure(t *testing.T) { be := &failLockLoadingBackend{Backend: mem.New()} - repo := repository.TestRepositoryWithBackend(t, be, 0, repository.Options{}) + repo, _ := repository.TestRepositoryWithBackend(t, be, 0, repository.Options{}) restic.TestSetLockTimeout(t, 5*time.Millisecond) lock1, err := restic.NewLock(context.TODO(), repo) diff --git a/internal/restic/snapshot_test.go b/internal/restic/snapshot_test.go index b32c771d4..9099c8b5f 100644 --- a/internal/restic/snapshot_test.go +++ b/internal/restic/snapshot_test.go @@ -32,7 +32,7 @@ func TestLoadJSONUnpacked(t *testing.T) { } func testLoadJSONUnpacked(t *testing.T, version uint) { - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) // archive a snapshot sn := restic.Snapshot{} diff --git a/internal/restic/tree_test.go b/internal/restic/tree_test.go index 67ecec897..8e0b3587a 100644 --- a/internal/restic/tree_test.go +++ b/internal/restic/tree_test.go @@ -181,7 +181,7 @@ func testLoadTree(t *testing.T, version uint) { } // archive a few files - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) sn := archiver.TestSnapshot(t, repo, rtest.BenchArchiveDirectory, nil) rtest.OK(t, repo.Flush(context.Background())) @@ -199,7 +199,7 @@ func benchmarkLoadTree(t *testing.B, version uint) { } // archive a few files - repo := repository.TestRepositoryWithVersion(t, version) + repo, _ := repository.TestRepositoryWithVersion(t, version) sn := archiver.TestSnapshot(t, repo, rtest.BenchArchiveDirectory, nil) rtest.OK(t, repo.Flush(context.Background()))