41 lines
790 B
Go
41 lines
790 B
Go
|
|
package reconcile
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestParseSpec(t *testing.T) {
|
||
|
|
cases := []struct {
|
||
|
|
in string
|
||
|
|
want time.Duration
|
||
|
|
wantErr bool
|
||
|
|
}{
|
||
|
|
{"@every 30s", 30 * time.Second, false},
|
||
|
|
{"@every 2m", 2 * time.Minute, false},
|
||
|
|
{"5m", 5 * time.Minute, false},
|
||
|
|
{"1h30m", 90 * time.Minute, false},
|
||
|
|
{"", 0, true},
|
||
|
|
{"@every", 0, true},
|
||
|
|
{"@every 0s", 0, true},
|
||
|
|
{"-1m", 0, true},
|
||
|
|
{"* * * * *", 0, true},
|
||
|
|
}
|
||
|
|
for _, c := range cases {
|
||
|
|
got, err := ParseSpec(c.in)
|
||
|
|
if c.wantErr {
|
||
|
|
if err == nil {
|
||
|
|
t.Errorf("ParseSpec(%q) err=nil; want error", c.in)
|
||
|
|
}
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
if err != nil {
|
||
|
|
t.Errorf("ParseSpec(%q) err=%v; want nil", c.in, err)
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
if got != c.want {
|
||
|
|
t.Errorf("ParseSpec(%q) = %v; want %v", c.in, got, c.want)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|