restic/test/backend.go

75 lines
1.6 KiB
Go
Raw Normal View History

2015-04-26 12:46:15 +00:00
package test_helper
import (
2015-06-13 10:35:19 +00:00
"fmt"
2015-04-26 12:46:15 +00:00
"io/ioutil"
2015-06-13 10:35:19 +00:00
"os"
2015-04-26 12:46:15 +00:00
"path/filepath"
"testing"
"github.com/restic/restic"
"github.com/restic/restic/backend"
"github.com/restic/restic/backend/local"
"github.com/restic/restic/repository"
2015-04-26 12:46:15 +00:00
)
var (
2015-06-13 10:35:19 +00:00
TestPassword = getStringVar("RESTIC_TEST_PASSWORD", "geheim")
TestCleanup = getBoolVar("RESTIC_TEST_CLEANUP", true)
TestTempDir = getStringVar("RESTIC_TEST_TMPDIR", "")
RunIntegrationTest = getBoolVar("RESTIC_TEST_INTEGRATION", true)
)
2015-04-26 12:46:15 +00:00
2015-06-13 10:35:19 +00:00
func getStringVar(name, defaultValue string) string {
if e := os.Getenv(name); e != "" {
return e
}
return defaultValue
}
func getBoolVar(name string, defaultValue bool) bool {
if e := os.Getenv(name); e != "" {
switch e {
case "1":
return true
case "0":
return false
default:
fmt.Fprintf(os.Stderr, "invalid value for variable %q, using default\n", name)
}
}
return defaultValue
}
2015-05-09 21:59:58 +00:00
func SetupRepo(t testing.TB) *repository.Repository {
2015-06-13 10:35:19 +00:00
tempdir, err := ioutil.TempDir(TestTempDir, "restic-test-")
2015-04-26 12:46:15 +00:00
OK(t, err)
// create repository below temp dir
b, err := local.Create(filepath.Join(tempdir, "repo"))
OK(t, err)
repo := repository.New(b)
2015-06-13 10:35:19 +00:00
OK(t, repo.Init(TestPassword))
2015-05-09 11:32:52 +00:00
return repo
2015-04-26 12:46:15 +00:00
}
2015-05-09 21:59:58 +00:00
func TeardownRepo(t testing.TB, repo *repository.Repository) {
2015-06-13 10:35:19 +00:00
if !TestCleanup {
2015-05-09 11:32:52 +00:00
l := repo.Backend().(*local.Local)
2015-04-26 12:46:15 +00:00
t.Logf("leaving local backend at %s\n", l.Location())
return
}
2015-05-09 11:32:52 +00:00
OK(t, repo.Delete())
2015-04-26 12:46:15 +00:00
}
2015-05-09 21:59:58 +00:00
func SnapshotDir(t testing.TB, repo *repository.Repository, path string, parent backend.ID) *restic.Snapshot {
2015-05-09 11:32:52 +00:00
arch := restic.NewArchiver(repo)
2015-04-26 12:46:15 +00:00
sn, _, err := arch.Snapshot(nil, []string{path}, parent)
OK(t, err)
return sn
}