forked from TrueCloudLab/restic
Add build and test instructions
* Don't build on openbsd * Don't test fuse on travis
This commit is contained in:
parent
1f79a19293
commit
9ff98d34ef
5 changed files with 105 additions and 85 deletions
|
@ -9,7 +9,7 @@ os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
|
|
||||||
env: GOX_OS="linux darwin openbsd freebsd" GOX_ARCH="386 amd64 arm"
|
env: GOX_OS="linux darwin openbsd freebsd" GOX_ARCH="386 amd64 arm" RESTIC_TEST_FUSE="0"
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
irc:
|
irc:
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
// +build !openbsd
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
101
cmd/restic/integration_fuse_test.go
Normal file
101
cmd/restic/integration_fuse_test.go
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
// +build !openbsd
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/restic/restic"
|
||||||
|
"github.com/restic/restic/backend"
|
||||||
|
"github.com/restic/restic/repository"
|
||||||
|
. "github.com/restic/restic/test"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMount(t *testing.T) {
|
||||||
|
if !RunFuseTest {
|
||||||
|
t.Skip("Skipping fuse tests")
|
||||||
|
}
|
||||||
|
|
||||||
|
checkSnapshots := func(repo *repository.Repository, mountpoint string, snapshotIDs []backend.ID) {
|
||||||
|
stSnapshots, err := os.Open(filepath.Join(mountpoint, "snapshots"))
|
||||||
|
OK(t, err)
|
||||||
|
namesInSnapshots, err := stSnapshots.Readdirnames(-1)
|
||||||
|
OK(t, err)
|
||||||
|
Assert(t,
|
||||||
|
len(namesInSnapshots) == len(snapshotIDs),
|
||||||
|
"Invalid number of snapshots: expected %d, got %d", len(snapshotIDs), len(namesInSnapshots))
|
||||||
|
|
||||||
|
for i, id := range snapshotIDs {
|
||||||
|
snapshot, err := restic.LoadSnapshot(repo, id)
|
||||||
|
OK(t, err)
|
||||||
|
Assert(t,
|
||||||
|
namesInSnapshots[i] == snapshot.Time.Format(time.RFC3339),
|
||||||
|
"Invalid snapshot folder name: expected %s, got %s", snapshot.Time.Format(time.RFC3339), namesInSnapshots[i])
|
||||||
|
}
|
||||||
|
OK(t, stSnapshots.Close())
|
||||||
|
}
|
||||||
|
|
||||||
|
withTestEnvironment(t, func(env *testEnvironment, global GlobalOptions) {
|
||||||
|
cmdInit(t, global)
|
||||||
|
repo, err := global.OpenRepository()
|
||||||
|
OK(t, err)
|
||||||
|
|
||||||
|
mountpoint, err := ioutil.TempDir(TestTempDir, "restic-test-mount-")
|
||||||
|
OK(t, err)
|
||||||
|
|
||||||
|
// We remove the mountpoint now to check that cmdMount creates it
|
||||||
|
OK(t, os.RemoveAll(mountpoint))
|
||||||
|
|
||||||
|
ready := make(chan struct{}, 1)
|
||||||
|
go cmdMount(t, global, mountpoint, ready)
|
||||||
|
<-ready
|
||||||
|
|
||||||
|
stMountPoint, err := os.Open(mountpoint)
|
||||||
|
OK(t, err)
|
||||||
|
names, err := stMountPoint.Readdirnames(-1)
|
||||||
|
OK(t, err)
|
||||||
|
Assert(t, len(names) == 1 && names[0] == "snapshots", "expected the snapshots directory to exist")
|
||||||
|
OK(t, stMountPoint.Close())
|
||||||
|
|
||||||
|
checkSnapshots(repo, mountpoint, []backend.ID{})
|
||||||
|
|
||||||
|
datafile := filepath.Join("testdata", "backup-data.tar.gz")
|
||||||
|
fd, err := os.Open(datafile)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
t.Skipf("unable to find data file %q, skipping", datafile)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
OK(t, err)
|
||||||
|
OK(t, fd.Close())
|
||||||
|
|
||||||
|
SetupTarTestFixture(t, env.testdata, datafile)
|
||||||
|
|
||||||
|
// first backup
|
||||||
|
cmdBackup(t, global, []string{env.testdata}, nil)
|
||||||
|
snapshotIDs := cmdList(t, global, "snapshots")
|
||||||
|
Assert(t, len(snapshotIDs) == 1,
|
||||||
|
"expected one snapshot, got %v", snapshotIDs)
|
||||||
|
|
||||||
|
checkSnapshots(repo, mountpoint, snapshotIDs)
|
||||||
|
|
||||||
|
// second backup, implicit incremental
|
||||||
|
cmdBackup(t, global, []string{env.testdata}, nil)
|
||||||
|
snapshotIDs = cmdList(t, global, "snapshots")
|
||||||
|
Assert(t, len(snapshotIDs) == 2,
|
||||||
|
"expected two snapshots, got %v", snapshotIDs)
|
||||||
|
|
||||||
|
checkSnapshots(repo, mountpoint, snapshotIDs)
|
||||||
|
|
||||||
|
// third backup, explicit incremental
|
||||||
|
cmdBackup(t, global, []string{env.testdata}, snapshotIDs[0])
|
||||||
|
snapshotIDs = cmdList(t, global, "snapshots")
|
||||||
|
Assert(t, len(snapshotIDs) == 3,
|
||||||
|
"expected three snapshots, got %v", snapshotIDs)
|
||||||
|
|
||||||
|
checkSnapshots(repo, mountpoint, snapshotIDs)
|
||||||
|
})
|
||||||
|
}
|
|
@ -14,10 +14,8 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/restic/restic"
|
|
||||||
"github.com/restic/restic/backend"
|
"github.com/restic/restic/backend"
|
||||||
"github.com/restic/restic/debug"
|
"github.com/restic/restic/debug"
|
||||||
"github.com/restic/restic/repository"
|
|
||||||
. "github.com/restic/restic/test"
|
. "github.com/restic/restic/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -490,85 +488,3 @@ func TestRestoreNoMetadataOnIgnoredIntermediateDirs(t *testing.T) {
|
||||||
"meta data of intermediate directory hasn't been restore")
|
"meta data of intermediate directory hasn't been restore")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMount(t *testing.T) {
|
|
||||||
|
|
||||||
checkSnapshots := func(repo *repository.Repository, mountpoint string, snapshotIDs []backend.ID) {
|
|
||||||
stSnapshots, err := os.Open(filepath.Join(mountpoint, "snapshots"))
|
|
||||||
OK(t, err)
|
|
||||||
namesInSnapshots, err := stSnapshots.Readdirnames(-1)
|
|
||||||
OK(t, err)
|
|
||||||
Assert(t,
|
|
||||||
len(namesInSnapshots) == len(snapshotIDs),
|
|
||||||
"Invalid number of snapshots: expected %d, got %d", len(snapshotIDs), len(namesInSnapshots))
|
|
||||||
|
|
||||||
for i, id := range snapshotIDs {
|
|
||||||
snapshot, err := restic.LoadSnapshot(repo, id)
|
|
||||||
OK(t, err)
|
|
||||||
Assert(t,
|
|
||||||
namesInSnapshots[i] == snapshot.Time.Format(time.RFC3339),
|
|
||||||
"Invalid snapshot folder name: expected %s, got %s", snapshot.Time.Format(time.RFC3339), namesInSnapshots[i])
|
|
||||||
}
|
|
||||||
OK(t, stSnapshots.Close())
|
|
||||||
}
|
|
||||||
|
|
||||||
withTestEnvironment(t, func(env *testEnvironment, global GlobalOptions) {
|
|
||||||
cmdInit(t, global)
|
|
||||||
repo, err := global.OpenRepository()
|
|
||||||
OK(t, err)
|
|
||||||
|
|
||||||
mountpoint, err := ioutil.TempDir(TestTempDir, "restic-test-mount-")
|
|
||||||
OK(t, err)
|
|
||||||
|
|
||||||
// We remove the mountpoint now to check that cmdMount creates it
|
|
||||||
OK(t, os.RemoveAll(mountpoint))
|
|
||||||
|
|
||||||
ready := make(chan struct{}, 1)
|
|
||||||
go cmdMount(t, global, mountpoint, ready)
|
|
||||||
<-ready
|
|
||||||
|
|
||||||
stMountPoint, err := os.Open(mountpoint)
|
|
||||||
OK(t, err)
|
|
||||||
names, err := stMountPoint.Readdirnames(-1)
|
|
||||||
OK(t, err)
|
|
||||||
Assert(t, len(names) == 1 && names[0] == "snapshots", "expected the snapshots directory to exist")
|
|
||||||
OK(t, stMountPoint.Close())
|
|
||||||
|
|
||||||
checkSnapshots(repo, mountpoint, []backend.ID{})
|
|
||||||
|
|
||||||
datafile := filepath.Join("testdata", "backup-data.tar.gz")
|
|
||||||
fd, err := os.Open(datafile)
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
t.Skipf("unable to find data file %q, skipping", datafile)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
OK(t, err)
|
|
||||||
OK(t, fd.Close())
|
|
||||||
|
|
||||||
SetupTarTestFixture(t, env.testdata, datafile)
|
|
||||||
|
|
||||||
// first backup
|
|
||||||
cmdBackup(t, global, []string{env.testdata}, nil)
|
|
||||||
snapshotIDs := cmdList(t, global, "snapshots")
|
|
||||||
Assert(t, len(snapshotIDs) == 1,
|
|
||||||
"expected one snapshot, got %v", snapshotIDs)
|
|
||||||
|
|
||||||
checkSnapshots(repo, mountpoint, snapshotIDs)
|
|
||||||
|
|
||||||
// second backup, implicit incremental
|
|
||||||
cmdBackup(t, global, []string{env.testdata}, nil)
|
|
||||||
snapshotIDs = cmdList(t, global, "snapshots")
|
|
||||||
Assert(t, len(snapshotIDs) == 2,
|
|
||||||
"expected two snapshots, got %v", snapshotIDs)
|
|
||||||
|
|
||||||
checkSnapshots(repo, mountpoint, snapshotIDs)
|
|
||||||
|
|
||||||
// third backup, explicit incremental
|
|
||||||
cmdBackup(t, global, []string{env.testdata}, snapshotIDs[0])
|
|
||||||
snapshotIDs = cmdList(t, global, "snapshots")
|
|
||||||
Assert(t, len(snapshotIDs) == 3,
|
|
||||||
"expected three snapshots, got %v", snapshotIDs)
|
|
||||||
|
|
||||||
checkSnapshots(repo, mountpoint, snapshotIDs)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ var (
|
||||||
TestCleanup = getBoolVar("RESTIC_TEST_CLEANUP", true)
|
TestCleanup = getBoolVar("RESTIC_TEST_CLEANUP", true)
|
||||||
TestTempDir = getStringVar("RESTIC_TEST_TMPDIR", "")
|
TestTempDir = getStringVar("RESTIC_TEST_TMPDIR", "")
|
||||||
RunIntegrationTest = getBoolVar("RESTIC_TEST_INTEGRATION", true)
|
RunIntegrationTest = getBoolVar("RESTIC_TEST_INTEGRATION", true)
|
||||||
|
RunFuseTest = getBoolVar("RESTIC_TEST_FUSE", true)
|
||||||
TestSFTPPath = getStringVar("RESTIC_TEST_SFTPPATH", "/usr/lib/ssh:/usr/lib/openssh")
|
TestSFTPPath = getStringVar("RESTIC_TEST_SFTPPATH", "/usr/lib/ssh:/usr/lib/openssh")
|
||||||
TestWalkerPath = getStringVar("RESTIC_TEST_PATH", ".")
|
TestWalkerPath = getStringVar("RESTIC_TEST_PATH", ".")
|
||||||
BenchArchiveDirectory = getStringVar("RESTIC_BENCH_DIR", ".")
|
BenchArchiveDirectory = getStringVar("RESTIC_BENCH_DIR", ".")
|
||||||
|
|
Loading…
Reference in a new issue