forked from TrueCloudLab/restic
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package backend_test
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/restic/restic/backend/sftp"
|
|
. "github.com/restic/restic/test"
|
|
)
|
|
|
|
func setupSFTPBackend(t *testing.T) *sftp.SFTP {
|
|
sftpserver := ""
|
|
|
|
for _, dir := range strings.Split(TestSFTPPath, ":") {
|
|
testpath := filepath.Join(dir, "sftp-server")
|
|
fd, err := os.Open(testpath)
|
|
fd.Close()
|
|
if !os.IsNotExist(err) {
|
|
sftpserver = testpath
|
|
break
|
|
}
|
|
}
|
|
|
|
if sftpserver == "" {
|
|
return nil
|
|
}
|
|
|
|
tempdir, err := ioutil.TempDir("", "restic-test-")
|
|
OK(t, err)
|
|
|
|
b, err := sftp.Create(tempdir, sftpserver)
|
|
OK(t, err)
|
|
|
|
t.Logf("created sftp backend locally at %s", tempdir)
|
|
|
|
return b
|
|
}
|
|
|
|
func teardownSFTPBackend(t *testing.T, b *sftp.SFTP) {
|
|
if !TestCleanup {
|
|
t.Logf("leaving backend at %s\n", b.Location())
|
|
return
|
|
}
|
|
|
|
err := os.RemoveAll(b.Location())
|
|
OK(t, err)
|
|
}
|
|
|
|
func TestSFTPBackend(t *testing.T) {
|
|
if !RunIntegrationTest {
|
|
t.Skip("integration tests disabled")
|
|
}
|
|
|
|
s := setupSFTPBackend(t)
|
|
if s == nil {
|
|
t.Skip("unable to find sftp-server binary")
|
|
return
|
|
}
|
|
defer teardownSFTPBackend(t, s)
|
|
|
|
testBackend(s, t)
|
|
}
|