forked from TrueCloudLab/restic
72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package s3_test
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/url"
|
|
"os"
|
|
|
|
"github.com/restic/restic/backend"
|
|
"github.com/restic/restic/backend/s3"
|
|
"github.com/restic/restic/backend/test"
|
|
. "github.com/restic/restic/test"
|
|
)
|
|
|
|
//go:generate go run ../test/generate_backend_tests.go
|
|
|
|
func init() {
|
|
if TestS3Server == "" {
|
|
SkipMessage = "s3 test server not available"
|
|
return
|
|
}
|
|
|
|
url, err := url.Parse(TestS3Server)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "invalid url: %v\n", err)
|
|
return
|
|
}
|
|
|
|
cfg := s3.Config{
|
|
Endpoint: url.Host,
|
|
Bucket: "restictestbucket",
|
|
KeyID: os.Getenv("AWS_ACCESS_KEY_ID"),
|
|
Secret: os.Getenv("AWS_SECRET_ACCESS_KEY"),
|
|
}
|
|
|
|
if url.Scheme == "http" {
|
|
cfg.UseHTTP = true
|
|
}
|
|
|
|
test.CreateFn = func() (backend.Backend, error) {
|
|
be, err := s3.Open(cfg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
exists, err := be.Test(backend.Config, "")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if exists {
|
|
return nil, errors.New("config already exists")
|
|
}
|
|
|
|
return be, nil
|
|
}
|
|
|
|
test.OpenFn = func() (backend.Backend, error) {
|
|
return s3.Open(cfg)
|
|
}
|
|
|
|
// test.CleanupFn = func() error {
|
|
// if tempBackendDir == "" {
|
|
// return nil
|
|
// }
|
|
|
|
// fmt.Printf("removing test backend at %v\n", tempBackendDir)
|
|
// err := os.RemoveAll(tempBackendDir)
|
|
// tempBackendDir = ""
|
|
// return err
|
|
// }
|
|
}
|