1
0
Fork 0
mirror of https://github.com/restic/restic.git synced 2025-03-09 00:00:02 +01:00

internal/checker: added tests

checker.go: added error message if 'selectedTrees' is empty
checker_test.go: modified test checking using test.OK() and test.Assert() to
make the checking more compact.
This commit is contained in:
Winfried Plappert 2025-03-07 18:01:33 +00:00
parent 2707cb416e
commit c774c53583
2 changed files with 20 additions and 47 deletions

View file

@ -525,6 +525,9 @@ func (c *Checker) ReadPacks(ctx context.Context, packs map[restic.ID]int64, p *p
// CheckWithSnapshots will process snapshot IDs from 'selectedTrees' and
// add to snapPacks so it contains only the selected packfiles.
func (c *Checker) CheckWithSnapshots(ctx context.Context, selectedTrees []restic.ID) error {
if len(selectedTrees) == 0 {
return errors.New("no IDs given")
}
// gather used blobs from all trees
usedBlobs := restic.NewBlobSet()

View file

@ -582,86 +582,56 @@ func TestCheckRepoSnapshot(t *testing.T) {
chkr := checker.New(repo, false)
_, errs := chkr.LoadIndex(context.TODO(), nil)
if len(errs) > 0 {
t.Fatalf("expected no errors, got %v: %v", len(errs), errs)
}
test.OKs(t, errs)
test.OKs(t, checkPacks(chkr))
test.OKs(t, checkStruct(chkr))
snID := restic.TestParseID("f7d83db709977178c9d1a09e4009355e534cde1a135b8186b8b118a3fc4fcd41")
sn1, err := restic.LoadSnapshot(context.TODO(), repo, snID)
if err != nil {
t.Fatal(err)
}
test.OK(t, err)
selectedTrees := []restic.ID{*sn1.Tree}
test.OK(t, chkr.CheckWithSnapshots(context.TODO(), selectedTrees))
// size of packs (1)
lenPacks := chkr.CountPacks()
if lenPacks != 1 {
t.Fatalf("expected 1 packfile, got %v", lenPacks)
}
test.Assert(t, lenPacks == uint64(1), "expected 1 packfile, got %v", lenPacks)
// index needs reloading every time
_, errs = chkr.LoadIndex(context.TODO(), nil)
if len(errs) > 0 {
t.Fatalf("expected no errors, got %v: %v", len(errs), errs)
}
test.Assert(t, len(errs) == 0, "expected no errors, got %v: %v", len(errs), errs)
snID = restic.TestParseID("c2b53c5e6a16db92fbb9aa08bd2794c58b379d8724d661ee30d20898bdfdff22")
sn2, err := restic.LoadSnapshot(context.TODO(), repo, snID)
if err != nil {
t.Fatal(err)
}
test.OK(t, err)
selectedTrees = []restic.ID{*sn2.Tree}
test.OK(t, chkr.CheckWithSnapshots(context.TODO(), selectedTrees))
// size of packs (2)
lenPacks = chkr.CountPacks()
if lenPacks != 2 {
t.Fatalf("expected 2 packfiles, got %v", lenPacks)
}
test.Assert(t, lenPacks == 2, "expected 2 packfiles, got %v", lenPacks)
_, errs = chkr.LoadIndex(context.TODO(), nil)
if len(errs) > 0 {
t.Fatalf("expected no errors, got %v: %v", len(errs), errs)
}
test.Assert(t, len(errs) == 0, "expected no errors, got %v: %v", len(errs), errs)
snID = restic.TestParseID("a13c11e582b77a693dd75ab4e3a3ba96538a056594a4b9076e4cacebe6e06d43")
sn3, err := restic.LoadSnapshot(context.TODO(), repo, snID)
if err != nil {
t.Fatal(err)
}
test.OK(t, err)
selectedTrees = []restic.ID{*sn3.Tree}
test.OK(t, chkr.CheckWithSnapshots(context.TODO(), selectedTrees))
// size of packs (3)
lenPacks = chkr.CountPacks()
if lenPacks != 2 {
t.Fatalf("expected 2 packfiles, got %v", lenPacks)
}
test.Assert(t, lenPacks == 2, "expected 2 packfiles, got %v", lenPacks)
// size of packs (4)
_, errs = chkr.LoadIndex(context.TODO(), nil)
if len(errs) > 0 {
t.Fatalf("expected no errors, got %v: %v", len(errs), errs)
}
test.Assert(t, len(errs) == 0, "expected no errors, got %v: %v", len(errs), errs)
selectedTrees = []restic.ID{*sn1.Tree, *sn3.Tree}
test.OK(t, chkr.CheckWithSnapshots(context.TODO(), selectedTrees))
lenPacks = chkr.CountPacks()
if lenPacks != 3 {
t.Fatalf("expected 3 packfiles, got %v", lenPacks)
}
test.Assert(t, lenPacks == 3, "expected 3 packfiles, got %v", lenPacks)
// size of packs (5): unmodified - filter empty
_, errs = chkr.LoadIndex(context.TODO(), nil)
if len(errs) > 0 {
t.Fatalf("expected no errors, got %v: %v", len(errs), errs)
}
test.Assert(t, len(errs) == 0, "expected no errors, got %v: %v", len(errs), errs)
selectedTrees = []restic.ID{}
err = chkr.CheckWithSnapshots(context.TODO(), selectedTrees)
if err == nil {
t.Fatalf("expected an error, got no error")
}
test.Assert(t, err != nil && err.Error() == "no IDs given", "expected specific error, got %v", err)
}
func loadBenchRepository(t *testing.B) (*checker.Checker, restic.Repository, func()) {