|
|
@@ -11,18 +11,18 @@ func TestActivation(t *testing.T) {
|
|
|
expected bool
|
|
|
}{
|
|
|
// Every fifteen minutes.
|
|
|
- {"Mon Jul 9 15:00 2012", "0/15 * * * *", true},
|
|
|
- {"Mon Jul 9 15:45 2012", "0/15 * * * *", true},
|
|
|
- {"Mon Jul 9 15:40 2012", "0/15 * * * *", false},
|
|
|
+ {"Mon Jul 9 15:00 2012", "0 0/15 * * *", true},
|
|
|
+ {"Mon Jul 9 15:45 2012", "0 0/15 * * *", true},
|
|
|
+ {"Mon Jul 9 15:40 2012", "0 0/15 * * *", false},
|
|
|
|
|
|
// Every fifteen minutes, starting at 5 minutes.
|
|
|
- {"Mon Jul 9 15:05 2012", "5/15 * * * *", true},
|
|
|
- {"Mon Jul 9 15:20 2012", "5/15 * * * *", true},
|
|
|
- {"Mon Jul 9 15:50 2012", "5/15 * * * *", true},
|
|
|
+ {"Mon Jul 9 15:05 2012", "0 5/15 * * *", true},
|
|
|
+ {"Mon Jul 9 15:20 2012", "0 5/15 * * *", true},
|
|
|
+ {"Mon Jul 9 15:50 2012", "0 5/15 * * *", true},
|
|
|
|
|
|
// Named months
|
|
|
- {"Sun Jul 15 15:00 2012", "0/15 * * Jul *", true},
|
|
|
- {"Sun Jul 15 15:00 2012", "0/15 * * Jun *", false},
|
|
|
+ {"Sun Jul 15 15:00 2012", "0 0/15 * * Jul", true},
|
|
|
+ {"Sun Jul 15 15:00 2012", "0 0/15 * * Jun", false},
|
|
|
|
|
|
// Everything set.
|
|
|
{"Sun Jul 15 08:30 2012", "0 30 08 ? Jul Sun", true},
|
|
|
@@ -76,19 +76,19 @@ func TestNext(t *testing.T) {
|
|
|
expected string
|
|
|
}{
|
|
|
// Simple cases
|
|
|
- {"Mon Jul 9 14:45 2012", "0/15 * * * *", "Mon Jul 9 15:00 2012"},
|
|
|
- {"Mon Jul 9 14:59 2012", "0/15 * * * *", "Mon Jul 9 15:00 2012"},
|
|
|
- {"Mon Jul 9 14:59:59 2012", "0/15 * * * *", "Mon Jul 9 15:00 2012"},
|
|
|
+ {"Mon Jul 9 14:45 2012", "0 0/15 * * *", "Mon Jul 9 15:00 2012"},
|
|
|
+ {"Mon Jul 9 14:59 2012", "0 0/15 * * *", "Mon Jul 9 15:00 2012"},
|
|
|
+ {"Mon Jul 9 14:59:59 2012", "0 0/15 * * *", "Mon Jul 9 15:00 2012"},
|
|
|
|
|
|
// Wrap around hours
|
|
|
- {"Mon Jul 9 15:45 2012", "20-35/15 * * * *", "Mon Jul 9 16:20 2012"},
|
|
|
+ {"Mon Jul 9 15:45 2012", "0 20-35/15 * * *", "Mon Jul 9 16:20 2012"},
|
|
|
|
|
|
// Wrap around days
|
|
|
- {"Mon Jul 9 23:46 2012", "*/15 * * * *", "Tue Jul 10 00:00 2012"},
|
|
|
- {"Mon Jul 9 23:45 2012", "20-35/15 * * * *", "Tue Jul 10 00:20 2012"},
|
|
|
- {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 * * * *", "Tue Jul 10 00:20:15 2012"},
|
|
|
- {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 1/2 * * *", "Tue Jul 10 01:20:15 2012"},
|
|
|
- {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 10-12 * * *", "Tue Jul 10 10:20:15 2012"},
|
|
|
+ {"Mon Jul 9 23:46 2012", "0 */15 * * *", "Tue Jul 10 00:00 2012"},
|
|
|
+ {"Mon Jul 9 23:45 2012", "0 20-35/15 * * *", "Tue Jul 10 00:20 2012"},
|
|
|
+ {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 * * *", "Tue Jul 10 00:20:15 2012"},
|
|
|
+ {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 1/2 * *", "Tue Jul 10 01:20:15 2012"},
|
|
|
+ {"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 10-12 * *", "Tue Jul 10 10:20:15 2012"},
|
|
|
|
|
|
{"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 1/2 */2 * *", "Thu Jul 11 01:20:15 2012"},
|
|
|
{"Mon Jul 9 23:35:51 2012", "15/35 20-35/15 * 9-20 * *", "Wed Jul 10 00:20:15 2012"},
|
|
|
@@ -110,11 +110,11 @@ func TestNext(t *testing.T) {
|
|
|
{"Mon Jul 9 23:35 2012", "0 0 0 29 Feb ?", "Mon Feb 29 00:00 2016"},
|
|
|
|
|
|
// Daylight savings time EST -> EDT
|
|
|
- {"2012-03-11T00:00:00-0500", "0 30 2 11 Mar ?", "2013-03-11T02:30:00-0400"},
|
|
|
+ {"2012-03-11T00:00:00-0500", "TZ=America/New_York 0 30 2 11 Mar ?", "2013-03-11T02:30:00-0400"},
|
|
|
|
|
|
// Daylight savings time EDT -> EST
|
|
|
- {"2012-11-04T00:00:00-0400", "0 30 2 04 Nov ?", "2012-11-04T02:30:00-0500"},
|
|
|
- {"2012-11-04T01:45:00-0400", "0 30 1 04 Nov ?", "2012-11-04T01:30:00-0500"},
|
|
|
+ {"2012-11-04T00:00:00-0400", "TZ=America/New_York 0 30 2 04 Nov ?", "2012-11-04T02:30:00-0500"},
|
|
|
+ {"2012-11-04T01:45:00-0400", "TZ=America/New_York 0 30 1 04 Nov ?", "2012-11-04T01:30:00-0500"},
|
|
|
|
|
|
// Unsatisfiable
|
|
|
{"Mon Jul 9 23:35 2012", "0 0 0 30 Feb ?", ""},
|
|
|
@@ -154,20 +154,18 @@ func getTime(value string) time.Time {
|
|
|
if value == "" {
|
|
|
return time.Time{}
|
|
|
}
|
|
|
- t, err := time.Parse("Mon Jan 2 15:04 2006", value)
|
|
|
- if err != nil {
|
|
|
- t, err = time.Parse("Mon Jan 2 15:04:05 2006", value)
|
|
|
- if err != nil {
|
|
|
- t, err = time.Parse("2006-01-02T15:04:05-0700", value)
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
- // Daylight savings time tests require location
|
|
|
- if ny, err := time.LoadLocation("America/New_York"); err == nil {
|
|
|
- t = t.In(ny)
|
|
|
- }
|
|
|
+
|
|
|
+ var layouts = []string{
|
|
|
+ "Mon Jan 2 15:04 2006",
|
|
|
+ "Mon Jan 2 15:04:05 2006",
|
|
|
+ }
|
|
|
+ for _, layout := range layouts {
|
|
|
+ if t, err := time.ParseInLocation(layout, value, time.Local); err == nil {
|
|
|
+ return t
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- return t
|
|
|
+ if t, err := time.Parse("2006-01-02T15:04:05-0700", value); err == nil {
|
|
|
+ return t
|
|
|
+ }
|
|
|
+ panic("could not parse time value " + value)
|
|
|
}
|