Skip to content

Commit

Permalink
rewrite: Add tests for further ways to use the command
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelEischer committed Oct 14, 2022
1 parent 63df46c commit 915c51d
Showing 1 changed file with 42 additions and 7 deletions.
49 changes: 42 additions & 7 deletions cmd/restic/integration_rewrite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,22 @@ import (
"path/filepath"
"testing"

"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
)

func testRunRewriteExclude(t testing.TB, gopts GlobalOptions, excludes []string) {
func testRunRewriteExclude(t testing.TB, gopts GlobalOptions, excludes []string, forget bool) {
opts := RewriteOptions{
excludePatternOptions: excludePatternOptions{
Excludes: excludes,
},
Forget: forget,
}

rtest.OK(t, runRewrite(context.TODO(), opts, gopts, nil))
}

func TestRewrite(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()

func createBasicRewriteRepo(t testing.TB, env *testEnvironment) restic.ID {
testSetupBackupData(t, env)

// create backup
Expand All @@ -30,9 +29,45 @@ func TestRewrite(t *testing.T) {
rtest.Assert(t, len(snapshotIDs) == 1, "expected one snapshot, got %v", snapshotIDs)
testRunCheck(t, env.gopts)

return snapshotIDs[0]
}

func TestRewrite(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()
createBasicRewriteRepo(t, env)

// exclude some data
testRunRewriteExclude(t, env.gopts, []string{"3"})
snapshotIDs = testRunList(t, "snapshots", env.gopts)
testRunRewriteExclude(t, env.gopts, []string{"3"}, false)
snapshotIDs := testRunList(t, "snapshots", env.gopts)
rtest.Assert(t, len(snapshotIDs) == 2, "expected two snapshots, got %v", snapshotIDs)
testRunCheck(t, env.gopts)
}

func TestRewriteUnchanged(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()
snapshotID := createBasicRewriteRepo(t, env)

// use an exclude that will not exclude anything
testRunRewriteExclude(t, env.gopts, []string{"3dflkhjgdflhkjetrlkhjgfdlhkj"}, false)
newSnapshotIDs := testRunList(t, "snapshots", env.gopts)
rtest.Assert(t, len(newSnapshotIDs) == 1, "expected one snapshot, got %v", newSnapshotIDs)
rtest.Assert(t, snapshotID == newSnapshotIDs[0], "snapshot id changed unexpectedly")
testRunCheck(t, env.gopts)
}

func TestRewriteReplace(t *testing.T) {
env, cleanup := withTestEnvironment(t)
defer cleanup()
snapshotID := createBasicRewriteRepo(t, env)

// exclude some data
testRunRewriteExclude(t, env.gopts, []string{"3"}, true)
newSnapshotIDs := testRunList(t, "snapshots", env.gopts)
rtest.Assert(t, len(newSnapshotIDs) == 1, "expected one snapshot, got %v", newSnapshotIDs)
rtest.Assert(t, snapshotID != newSnapshotIDs[0], "snapshot id should have changed")
// check forbids unused blobs, thus remove them first
testRunPrune(t, env.gopts, PruneOptions{MaxUnused: "0"})
testRunCheck(t, env.gopts)
}

0 comments on commit 915c51d

Please sign in to comment.