1
0
mirror of https://github.com/restic/restic.git synced 2025-08-13 21:10:55 +00:00
Files
.github
changelog
cmd
contrib
doc
docker
helpers
internal
archiver
backend
azure
b2
gs
local
config.go
doc.go
layout_test.go
local.go
local_test.go
local_unix.go
local_windows.go
location
mem
rclone
rest
s3
sftp
swift
test
testdata
backend_error.go
backend_retry.go
backend_retry_test.go
doc.go
foreground_solaris.go
foreground_unix.go
foreground_windows.go
http_transport.go
layout.go
layout_default.go
layout_rest.go
layout_s3legacy.go
layout_test.go
paths.go
semaphore.go
shell_split.go
shell_split_test.go
utils.go
utils_test.go
cache
checker
crypto
debug
dump
errors
filter
fs
fuse
hashing
index
limiter
migrations
mock
options
pack
repository
restic
restorer
selfupdate
test
textfile
ui
walker
.gitignore
.hound.yml
.travis.yml
CHANGELOG.md
CONTRIBUTING.md
GOVERNANCE.md
LICENSE
Makefile
README.rst
VERSION
appveyor.yml
build.go
doc.go
go.mod
go.sum
run_integration_tests.go
restic/internal/backend/local/layout_test.go
aawsome 0fed6a8dfc Use "pack file" instead of "data file" ()
- changed variable names, especially changed DataFile into PackFile
- changed in some comments
- always use "pack file" in docu
2020-08-16 11:16:38 +02:00

87 lines
2.0 KiB
Go

package local
import (
"context"
"path/filepath"
"testing"
"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
)
func TestLayout(t *testing.T) {
path, cleanup := rtest.TempDir(t)
defer cleanup()
var tests = []struct {
filename string
layout string
failureExpected bool
packfiles map[string]bool
}{
{"repo-layout-default.tar.gz", "", false, map[string]bool{
"aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false,
"fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false,
"c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false,
}},
{"repo-layout-s3legacy.tar.gz", "", false, map[string]bool{
"fc919a3b421850f6fa66ad22ebcf91e433e79ffef25becf8aef7c7b1eca91683": false,
"c089d62788da14f8b7cbf77188305c0874906f0b73d3fce5a8869050e8d0c0e1": false,
"aa464e9fd598fe4202492ee317ffa728e82fa83a1de1a61996e5bd2d6651646c": false,
}},
}
for _, test := range tests {
t.Run(test.filename, func(t *testing.T) {
rtest.SetupTarTestFixture(t, path, filepath.Join("..", "testdata", test.filename))
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)
}
rtest.RemoveAll(t, filepath.Join(path, "repo"))
})
}
}