forked from TrueCloudLab/restic
forget: Verify forget opts
This commit is contained in:
parent
8161605f1b
commit
6aca7dac21
2 changed files with 83 additions and 1 deletions
|
@ -99,8 +99,40 @@ func init() {
|
|||
addPruneOptions(cmdForget)
|
||||
}
|
||||
|
||||
func verifyForgetOptions(opts *ForgetOptions) error {
|
||||
var negValFound = false
|
||||
|
||||
if opts.Last < -1 || opts.Hourly < -1 || opts.Daily < -1 || opts.Weekly < -1 ||
|
||||
opts.Monthly < -1 || opts.Yearly < -1 {
|
||||
negValFound = true
|
||||
}
|
||||
|
||||
if !negValFound {
|
||||
// durations := [6]restic.Duration{opts.Within, opts.WithinHourly, opts.WithinDaily,
|
||||
// opts.WithinMonthly, opts.WithinWeekly, opts.WithinYearly}
|
||||
for _, d := range [6]restic.Duration{opts.Within, opts.WithinHourly, opts.WithinDaily,
|
||||
opts.WithinMonthly, opts.WithinWeekly, opts.WithinYearly} {
|
||||
if d.Hours < -1 || d.Days < -1 || d.Months < -1 || d.Years < -1 {
|
||||
negValFound = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if negValFound {
|
||||
return errors.Fatal("negative values other than -1 are not allowed for --keep-* options")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func runForget(ctx context.Context, opts ForgetOptions, gopts GlobalOptions, args []string) error {
|
||||
err := verifyPruneOptions(&pruneOptions)
|
||||
err := verifyForgetOptions(&opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = verifyPruneOptions(&pruneOptions)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
50
cmd/restic/cmd_forget_test.go
Normal file
50
cmd/restic/cmd_forget_test.go
Normal file
|
@ -0,0 +1,50 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/restic/restic/internal/restic"
|
||||
rtest "github.com/restic/restic/internal/test"
|
||||
)
|
||||
|
||||
func TestPreventNegativeForgetOptionValues(t *testing.T) {
|
||||
invalidForgetOpts := []ForgetOptions{
|
||||
{Last: -2},
|
||||
{Hourly: -2},
|
||||
{Daily: -2},
|
||||
{Weekly: -2},
|
||||
{Monthly: -2},
|
||||
{Yearly: -2},
|
||||
{Within: restic.Duration{Hours: -2}},
|
||||
{Within: restic.Duration{Days: -2}},
|
||||
{Within: restic.Duration{Months: -2}},
|
||||
{Within: restic.Duration{Years: -2}},
|
||||
{WithinHourly: restic.Duration{Hours: -2}},
|
||||
{WithinHourly: restic.Duration{Days: -2}},
|
||||
{WithinHourly: restic.Duration{Months: -2}},
|
||||
{WithinHourly: restic.Duration{Years: -2}},
|
||||
{WithinDaily: restic.Duration{Hours: -2}},
|
||||
{WithinDaily: restic.Duration{Days: -2}},
|
||||
{WithinDaily: restic.Duration{Months: -2}},
|
||||
{WithinDaily: restic.Duration{Years: -2}},
|
||||
{WithinWeekly: restic.Duration{Hours: -2}},
|
||||
{WithinWeekly: restic.Duration{Days: -2}},
|
||||
{WithinWeekly: restic.Duration{Months: -2}},
|
||||
{WithinWeekly: restic.Duration{Years: -2}},
|
||||
{WithinMonthly: restic.Duration{Hours: -2}},
|
||||
{WithinMonthly: restic.Duration{Days: -2}},
|
||||
{WithinMonthly: restic.Duration{Months: -2}},
|
||||
{WithinMonthly: restic.Duration{Years: -2}},
|
||||
{WithinYearly: restic.Duration{Hours: -2}},
|
||||
{WithinYearly: restic.Duration{Days: -2}},
|
||||
{WithinYearly: restic.Duration{Months: -2}},
|
||||
{WithinYearly: restic.Duration{Years: -2}},
|
||||
}
|
||||
|
||||
for _, opts := range invalidForgetOpts {
|
||||
err := verifyForgetOptions(&opts)
|
||||
rtest.Assert(t, err != nil, fmt.Sprintf("should have returned error for %+v", opts))
|
||||
rtest.Equals(t, "Fatal: negative values other than -1 are not allowed for --keep-* options", err.Error())
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue