Add test for to prevent double create
This commit is contained in:
parent
16b7cc7655
commit
4952f86682
5 changed files with 79 additions and 44 deletions
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
func TestLocalBackendCreate(t *testing.T) { test.Create(t) }
|
func TestLocalBackendCreate(t *testing.T) { test.Create(t) }
|
||||||
func TestLocalBackendOpen(t *testing.T) { test.Open(t) }
|
func TestLocalBackendOpen(t *testing.T) { test.Open(t) }
|
||||||
|
func TestLocalBackendCreateWithConfig(t *testing.T) { test.CreateWithConfig(t) }
|
||||||
func TestLocalBackendLocation(t *testing.T) { test.Location(t) }
|
func TestLocalBackendLocation(t *testing.T) { test.Location(t) }
|
||||||
func TestLocalBackendConfig(t *testing.T) { test.Config(t) }
|
func TestLocalBackendConfig(t *testing.T) { test.Config(t) }
|
||||||
func TestLocalBackendGetReader(t *testing.T) { test.GetReader(t) }
|
func TestLocalBackendGetReader(t *testing.T) { test.GetReader(t) }
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package local_test
|
package local_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
@ -15,28 +14,35 @@ var tempBackendDir string
|
||||||
|
|
||||||
//go:generate go run ../test/generate_backend_tests.go
|
//go:generate go run ../test/generate_backend_tests.go
|
||||||
|
|
||||||
func init() {
|
func createTempdir() error {
|
||||||
test.CreateFn = func() (backend.Backend, error) {
|
|
||||||
if tempBackendDir != "" {
|
if tempBackendDir != "" {
|
||||||
return nil, errors.New("temporary local backend dir already exists")
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
tempdir, err := ioutil.TempDir("", "restic-local-test-")
|
tempdir, err := ioutil.TempDir("", "restic-local-test-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("created new test backend at %v\n", tempdir)
|
fmt.Printf("created new test backend at %v\n", tempdir)
|
||||||
tempBackendDir = tempdir
|
tempBackendDir = tempdir
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
return local.Create(tempdir)
|
func init() {
|
||||||
|
test.CreateFn = func() (backend.Backend, error) {
|
||||||
|
err := createTempdir()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return local.Create(tempBackendDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
test.OpenFn = func() (backend.Backend, error) {
|
test.OpenFn = func() (backend.Backend, error) {
|
||||||
if tempBackendDir == "" {
|
err := createTempdir()
|
||||||
return nil, errors.New("repository not initialized")
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return local.Open(tempBackendDir)
|
return local.Open(tempBackendDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
func TestMemBackendCreate(t *testing.T) { test.Create(t) }
|
func TestMemBackendCreate(t *testing.T) { test.Create(t) }
|
||||||
func TestMemBackendOpen(t *testing.T) { test.Open(t) }
|
func TestMemBackendOpen(t *testing.T) { test.Open(t) }
|
||||||
|
func TestMemBackendCreateWithConfig(t *testing.T) { test.CreateWithConfig(t) }
|
||||||
func TestMemBackendLocation(t *testing.T) { test.Location(t) }
|
func TestMemBackendLocation(t *testing.T) { test.Location(t) }
|
||||||
func TestMemBackendConfig(t *testing.T) { test.Config(t) }
|
func TestMemBackendConfig(t *testing.T) { test.Config(t) }
|
||||||
func TestMemBackendGetReader(t *testing.T) { test.GetReader(t) }
|
func TestMemBackendGetReader(t *testing.T) { test.GetReader(t) }
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
func TestTestBackendCreate(t *testing.T) { test.Create(t) }
|
func TestTestBackendCreate(t *testing.T) { test.Create(t) }
|
||||||
func TestTestBackendOpen(t *testing.T) { test.Open(t) }
|
func TestTestBackendOpen(t *testing.T) { test.Open(t) }
|
||||||
|
func TestTestBackendCreateWithConfig(t *testing.T) { test.CreateWithConfig(t) }
|
||||||
func TestTestBackendLocation(t *testing.T) { test.Location(t) }
|
func TestTestBackendLocation(t *testing.T) { test.Location(t) }
|
||||||
func TestTestBackendConfig(t *testing.T) { test.Config(t) }
|
func TestTestBackendConfig(t *testing.T) { test.Config(t) }
|
||||||
func TestTestBackendGetReader(t *testing.T) { test.GetReader(t) }
|
func TestTestBackendGetReader(t *testing.T) { test.GetReader(t) }
|
||||||
|
|
|
@ -107,6 +107,32 @@ func Open(t testing.TB) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateWithConfig tests that creating a backend in a location which already
|
||||||
|
// has a config file fails.
|
||||||
|
func CreateWithConfig(t testing.TB) {
|
||||||
|
if CreateFn == nil {
|
||||||
|
t.Fatalf("CreateFn not set")
|
||||||
|
}
|
||||||
|
|
||||||
|
b := open(t)
|
||||||
|
defer close(t)
|
||||||
|
|
||||||
|
// save a config
|
||||||
|
store(t, b, backend.Config, []byte("test config"))
|
||||||
|
|
||||||
|
// now create the backend again, this must fail
|
||||||
|
_, err := CreateFn()
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("expected error not found for creating a backend with an existing config file")
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove config
|
||||||
|
err = b.Remove(backend.Config, "")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error removing config: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Location tests that a location string is returned.
|
// Location tests that a location string is returned.
|
||||||
func Location(t testing.TB) {
|
func Location(t testing.TB) {
|
||||||
b := open(t)
|
b := open(t)
|
||||||
|
|
Loading…
Reference in a new issue