1
0
mirror of https://github.com/restic/restic.git synced 2024-06-30 08:20:55 +02:00
restic/test/backend.go

53 lines
1.4 KiB
Go
Raw Normal View History

2015-04-26 14:46:15 +02:00
package test_helper
import (
"flag"
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/restic/restic"
"github.com/restic/restic/backend"
"github.com/restic/restic/backend/local"
2015-05-09 13:21:28 +02:00
"github.com/restic/restic/repo"
2015-04-26 14:46:15 +02:00
)
var TestPassword = flag.String("test.password", "geheim", `use this password for repositories created during tests (default: "geheim")`)
2015-04-26 14:46:15 +02:00
var TestCleanup = flag.Bool("test.cleanup", true, "clean up after running tests (remove local backend directory with all content)")
var TestTempDir = flag.String("test.tempdir", "", "use this directory for temporary storage (default: system temp dir)")
2015-05-09 17:41:28 +02:00
func SetupRepo(t testing.TB) *repo.Repo {
2015-04-26 14:46:15 +02:00
tempdir, err := ioutil.TempDir(*TestTempDir, "restic-test-")
OK(t, err)
// create repository below temp dir
b, err := local.Create(filepath.Join(tempdir, "repo"))
OK(t, err)
2015-05-03 16:36:52 +02:00
// set cache dir below temp dir
2015-04-26 14:46:15 +02:00
err = os.Setenv("RESTIC_CACHE", filepath.Join(tempdir, "cache"))
OK(t, err)
2015-05-09 13:32:52 +02:00
repo := repo.New(b)
OK(t, repo.Init(*TestPassword))
return repo
2015-04-26 14:46:15 +02:00
}
2015-05-09 17:41:28 +02:00
func TeardownRepo(t testing.TB, repo *repo.Repo) {
2015-04-26 14:46:15 +02:00
if !*TestCleanup {
2015-05-09 13:32:52 +02:00
l := repo.Backend().(*local.Local)
2015-04-26 14:46:15 +02:00
t.Logf("leaving local backend at %s\n", l.Location())
return
}
2015-05-09 13:32:52 +02:00
OK(t, repo.Delete())
2015-04-26 14:46:15 +02:00
}
2015-05-09 17:41:28 +02:00
func SnapshotDir(t testing.TB, repo *repo.Repo, path string, parent backend.ID) *restic.Snapshot {
2015-05-09 13:32:52 +02:00
arch := restic.NewArchiver(repo)
2015-04-26 14:46:15 +02:00
sn, _, err := arch.Snapshot(nil, []string{path}, parent)
OK(t, err)
return sn
}