restic/internal/backend/local/layout_test.go

87 lines
2 KiB
Go
Raw Normal View History

2017-04-02 17:56:33 +00:00
package local
import (
2017-06-03 15:39:57 +00:00
"context"
2017-04-02 17:56:33 +00:00
"path/filepath"
"testing"
2017-07-23 12:21:03 +00:00
2017-07-24 15:42:25 +00:00
"github.com/restic/restic/internal/restic"
2017-10-02 13:06:39 +00:00
rtest "github.com/restic/restic/internal/test"
2017-04-02 17:56:33 +00:00
)
2017-04-10 20:34:39 +00:00
func TestLayout(t *testing.T) {
2017-10-02 13:06:39 +00:00
path, cleanup := rtest.TempDir(t)
2017-04-02 17:56:33 +00:00
defer cleanup()
var tests = []struct {
filename string
layout string
failureExpected bool
packfiles map[string]bool
2017-04-02 17:56:33 +00:00
}{
2017-05-15 20:11:09 +00:00
{"repo-layout-default.tar.gz", "", false, map[string]bool{
"aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false,
"fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false,
"c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false,
}},
2017-05-15 20:11:09 +00:00
{"repo-layout-s3legacy.tar.gz", "", false, map[string]bool{
"fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false,
"c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false,
"aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false,
}},
2017-04-02 17:56:33 +00:00
}
for _, test := range tests {
t.Run(test.filename, func(t *testing.T) {
2017-10-02 13:06:39 +00:00
rtest.SetupTarTestFixture(t, path, filepath.Join("..", "testdata", test.filename))
2017-04-02 17:56:33 +00:00
repo := filepath.Join(path, "repo")
be, err := Open(Config{
Path: repo,
Layout: test.layout,
})
if err != nil {
t.Fatal(err)
}
if be == nil {
t.Fatalf("Open() returned nil but no error")
}
packs := make(map[string]bool)
err = be.List(context.TODO(), restic.PackFile, func(fi restic.FileInfo) error {
packs[fi.Name] = false
return nil
})
if err != nil {
t.Fatalf("List() returned error %v", err)
}
if len(packs) == 0 {
t.Errorf("List() returned zero pack files")
}
for id := range test.packfiles {
if _, ok := packs[id]; !ok {
t.Errorf("packfile with id %v not found", id)
}
packs[id] = true
}
for id, v := range packs {
if !v {
t.Errorf("unexpected id %v found", id)
}
}
if err = be.Close(); err != nil {
t.Errorf("Close() returned error %v", err)
}
2017-10-02 13:06:39 +00:00
rtest.RemoveAll(t, filepath.Join(path, "repo"))
2017-04-02 17:56:33 +00:00
})
}
}