fix(forget): populate retention groups for manual runs
CI / Test (store) (pull_request) Successful in 5s
CI / Lint (pull_request) Successful in 10s
CI / Build (windows/amd64) (pull_request) Successful in 7s
CI / Build (linux/amd64) (pull_request) Successful in 8s
CI / Build (linux/arm64) (pull_request) Successful in 7s
CI / Test (rest) (pull_request) Successful in 39s
CI / Test (server-http) (pull_request) Successful in 1m37s
e2e / Playwright vs docker-compose (pull_request) Successful in 1m16s
CI / Test (store) (pull_request) Successful in 5s
CI / Lint (pull_request) Successful in 10s
CI / Build (windows/amd64) (pull_request) Successful in 7s
CI / Build (linux/amd64) (pull_request) Successful in 8s
CI / Build (linux/arm64) (pull_request) Successful in 7s
CI / Test (rest) (pull_request) Successful in 39s
CI / Test (server-http) (pull_request) Successful in 1m37s
e2e / Playwright vs docker-compose (pull_request) Successful in 1m16s
This commit is contained in:
@@ -322,7 +322,7 @@ type ForgetGroup struct {
|
||||
// any keep-* would delete every snapshot in the tagged set).
|
||||
// Returns the first error encountered, or nil when every group runs
|
||||
// to a clean exit.
|
||||
func (e Env) RunForget(ctx context.Context, groups []ForgetGroup, handle LineHandler) error {
|
||||
func (e Env) RunForget(ctx context.Context, groups []ForgetGroup, dryRun bool, handle LineHandler) error {
|
||||
if len(groups) == 0 {
|
||||
return fmt.Errorf("restic forget: refusing to run with no groups (would be a no-op)")
|
||||
}
|
||||
@@ -332,6 +332,9 @@ func (e Env) RunForget(ctx context.Context, groups []ForgetGroup, handle LineHan
|
||||
}
|
||||
args := []string{"forget", "--json", "--tag", g.Tag}
|
||||
args = append(args, g.Policy.args()...)
|
||||
if dryRun {
|
||||
args = append(args, "--dry-run")
|
||||
}
|
||||
cmd := e.resticCmd(ctx, args...)
|
||||
if err := runWithPump(cmd, handle); err != nil {
|
||||
return err
|
||||
|
||||
@@ -60,6 +60,26 @@ func TestRunPruneInvokesPrune(t *testing.T) {
|
||||
t.Fatalf("expected 'prune' in captured output; got: %v", *lines)
|
||||
}
|
||||
|
||||
func TestRunForgetDryRunArgument(t *testing.T) {
|
||||
bin := setupScriptBin(t, `echo "$@"`)
|
||||
env := Env{Bin: bin}
|
||||
lines, h := captureLines()
|
||||
keepLast := 1
|
||||
groups := []ForgetGroup{{
|
||||
Tag: "documents",
|
||||
Policy: ForgetPolicy{KeepLast: &keepLast},
|
||||
}}
|
||||
if err := env.RunForget(context.Background(), groups, true, h); err != nil {
|
||||
t.Fatalf("RunForget: %v", err)
|
||||
}
|
||||
for _, line := range *lines {
|
||||
if strings.Contains(line, "forget --json --tag documents --keep-last 1 --dry-run") {
|
||||
return
|
||||
}
|
||||
}
|
||||
t.Fatalf("expected forget invocation with --dry-run; got: %v", *lines)
|
||||
}
|
||||
|
||||
// --- B2: RunCheck ---
|
||||
|
||||
func TestRunCheckLockSniff(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user