diff --git a/src/restic/backend/sftp/backend_test.go b/src/restic/backend/sftp/backend_test.go deleted file mode 100644 index a812f8cd0..000000000 --- a/src/restic/backend/sftp/backend_test.go +++ /dev/null @@ -1,87 +0,0 @@ -// DO NOT EDIT, AUTOMATICALLY GENERATED -package sftp_test - -import ( - "testing" - - "restic/backend/test" -) - -var SkipMessage string - -func TestSftpBackendCreate(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestCreate(t) -} - -func TestSftpBackendOpen(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestOpen(t) -} - -func TestSftpBackendCreateWithConfig(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestCreateWithConfig(t) -} - -func TestSftpBackendLocation(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestLocation(t) -} - -func TestSftpBackendConfig(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestConfig(t) -} - -func TestSftpBackendLoad(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestLoad(t) -} - -func TestSftpBackendSave(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestSave(t) -} - -func TestSftpBackendSaveFilenames(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestSaveFilenames(t) -} - -func TestSftpBackendBackend(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestBackend(t) -} - -func TestSftpBackendDelete(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestDelete(t) -} - -func TestSftpBackendCleanup(t *testing.T) { - if SkipMessage != "" { - t.Skip(SkipMessage) - } - test.TestCleanup(t) -} diff --git a/src/restic/backend/sftp/layout_test.go b/src/restic/backend/sftp/layout_test.go index 0159976fe..856bd5ce4 100644 --- a/src/restic/backend/sftp/layout_test.go +++ b/src/restic/backend/sftp/layout_test.go @@ -10,7 +10,7 @@ import ( ) func TestLayout(t *testing.T) { - if sftpserver == "" { + if sftpServer == "" { t.Skip("sftp server binary not available") } @@ -46,7 +46,7 @@ func TestLayout(t *testing.T) { repo := filepath.Join(path, "repo") be, err := sftp.Open(sftp.Config{ - Command: fmt.Sprintf("%q -e", sftpserver), + Command: fmt.Sprintf("%q -e", sftpServer), Path: repo, Layout: test.layout, }) diff --git a/src/restic/backend/sftp/sftp_backend_test.go b/src/restic/backend/sftp/sftp_backend_test.go deleted file mode 100644 index 1834beee8..000000000 --- a/src/restic/backend/sftp/sftp_backend_test.go +++ /dev/null @@ -1,92 +0,0 @@ -package sftp_test - -import ( - "fmt" - "io/ioutil" - "os" - "path/filepath" - "restic" - "strings" - - "restic/errors" - - "restic/backend/sftp" - "restic/backend/test" - - . "restic/test" -) - -var tempBackendDir string - -//go:generate go run ../test/generate_backend_tests.go - -func createTempdir() error { - if tempBackendDir != "" { - return nil - } - - tempdir, err := ioutil.TempDir("", "restic-local-test-") - if err != nil { - return err - } - - tempBackendDir = tempdir - return nil -} - -func findSFTPServerBinary() string { - for _, dir := range strings.Split(TestSFTPPath, ":") { - testpath := filepath.Join(dir, "sftp-server") - _, err := os.Stat(testpath) - if !os.IsNotExist(errors.Cause(err)) { - return testpath - } - } - - return "" -} - -var sftpserver = findSFTPServerBinary() - -func init() { - if sftpserver == "" { - SkipMessage = "sftp server binary not found, skipping tests" - return - } - - cfg := sftp.Config{ - Command: fmt.Sprintf("%q -e", sftpserver), - } - - test.CreateFn = func() (restic.Backend, error) { - err := createTempdir() - if err != nil { - return nil, err - } - - cfg.Path = tempBackendDir - - return sftp.Create(cfg) - } - - test.OpenFn = func() (restic.Backend, error) { - err := createTempdir() - if err != nil { - return nil, err - } - - cfg.Path = tempBackendDir - - return sftp.Open(cfg) - } - - test.CleanupFn = func() error { - if tempBackendDir == "" { - return nil - } - - err := os.RemoveAll(tempBackendDir) - tempBackendDir = "" - return err - } -} diff --git a/src/restic/backend/sftp/sftp_test.go b/src/restic/backend/sftp/sftp_test.go new file mode 100644 index 000000000..dd9728676 --- /dev/null +++ b/src/restic/backend/sftp/sftp_test.go @@ -0,0 +1,79 @@ +package sftp_test + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "restic" + "restic/backend/sftp" + "restic/backend/test" + "restic/errors" + "strings" + "testing" + + . "restic/test" +) + +func findSFTPServerBinary() string { + for _, dir := range strings.Split(TestSFTPPath, ":") { + testpath := filepath.Join(dir, "sftp-server") + _, err := os.Stat(testpath) + if !os.IsNotExist(errors.Cause(err)) { + return testpath + } + } + + return "" +} + +var sftpServer = findSFTPServerBinary() + +func TestBackend(t *testing.T) { + if sftpServer == "" { + t.Skip("sftp server binary not found") + } + + suite := test.Suite{ + // NewConfig returns a config for a new temporary backend that will be used in tests. + NewConfig: func() (interface{}, error) { + dir, err := ioutil.TempDir(TestTempDir, "restic-test-sftp-") + if err != nil { + t.Fatal(err) + } + + t.Logf("create new backend at %v", dir) + + cfg := sftp.Config{ + Path: dir, + Command: fmt.Sprintf("%q -e", sftpServer), + } + return cfg, nil + }, + + // CreateFn is a function that creates a temporary repository for the tests. + Create: func(config interface{}) (restic.Backend, error) { + cfg := config.(sftp.Config) + return sftp.Create(cfg) + }, + + // OpenFn is a function that opens a previously created temporary repository. + Open: func(config interface{}) (restic.Backend, error) { + cfg := config.(sftp.Config) + return sftp.Open(cfg) + }, + + // CleanupFn removes data created during the tests. + Cleanup: func(config interface{}) error { + cfg := config.(sftp.Config) + if !TestCleanupTempDirs { + t.Logf("leaving test backend dir at %v", cfg.Path) + } + + RemoveAll(t, cfg.Path) + return nil + }, + } + + suite.RunTests(t) +}