@@ -84,7 +84,7 @@ func TestNoPrebuilds(t *testing.T) {
84
84
preset (true , 0 , current ),
85
85
}
86
86
87
- snapshot := prebuilds .NewGlobalSnapshot (presets , nil , nil , nil , nil )
87
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , nil , nil , nil , nil )
88
88
ps , err := snapshot .FilterByPreset (current .presetID )
89
89
require .NoError (t , err )
90
90
@@ -106,7 +106,7 @@ func TestNetNew(t *testing.T) {
106
106
preset (true , 1 , current ),
107
107
}
108
108
109
- snapshot := prebuilds .NewGlobalSnapshot (presets , nil , nil , nil , nil )
109
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , nil , nil , nil , nil )
110
110
ps , err := snapshot .FilterByPreset (current .presetID )
111
111
require .NoError (t , err )
112
112
@@ -148,7 +148,7 @@ func TestOutdatedPrebuilds(t *testing.T) {
148
148
var inProgress []database.CountInProgressPrebuildsRow
149
149
150
150
// WHEN: calculating the outdated preset's state.
151
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , nil , nil )
151
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , nil , nil )
152
152
ps , err := snapshot .FilterByPreset (outdated .presetID )
153
153
require .NoError (t , err )
154
154
@@ -214,7 +214,7 @@ func TestDeleteOutdatedPrebuilds(t *testing.T) {
214
214
}
215
215
216
216
// WHEN: calculating the outdated preset's state.
217
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , nil , nil )
217
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , nil , nil )
218
218
ps , err := snapshot .FilterByPreset (outdated .presetID )
219
219
require .NoError (t , err )
220
220
@@ -459,7 +459,7 @@ func TestInProgressActions(t *testing.T) {
459
459
}
460
460
461
461
// WHEN: calculating the current preset's state.
462
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , nil , nil )
462
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , nil , nil )
463
463
ps , err := snapshot .FilterByPreset (current .presetID )
464
464
require .NoError (t , err )
465
465
@@ -502,7 +502,7 @@ func TestExtraneous(t *testing.T) {
502
502
var inProgress []database.CountInProgressPrebuildsRow
503
503
504
504
// WHEN: calculating the current preset's state.
505
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , nil , nil )
505
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , nil , nil )
506
506
ps , err := snapshot .FilterByPreset (current .presetID )
507
507
require .NoError (t , err )
508
508
@@ -683,7 +683,7 @@ func TestExpiredPrebuilds(t *testing.T) {
683
683
}
684
684
685
685
// WHEN: calculating the current preset's state.
686
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , nil , nil , nil )
686
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , nil , nil , nil )
687
687
ps , err := snapshot .FilterByPreset (current .presetID )
688
688
require .NoError (t , err )
689
689
@@ -719,7 +719,7 @@ func TestDeprecated(t *testing.T) {
719
719
var inProgress []database.CountInProgressPrebuildsRow
720
720
721
721
// WHEN: calculating the current preset's state.
722
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , nil , nil )
722
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , nil , nil )
723
723
ps , err := snapshot .FilterByPreset (current .presetID )
724
724
require .NoError (t , err )
725
725
@@ -772,7 +772,7 @@ func TestLatestBuildFailed(t *testing.T) {
772
772
}
773
773
774
774
// WHEN: calculating the current preset's state.
775
- snapshot := prebuilds .NewGlobalSnapshot (presets , running , inProgress , backoffs , nil )
775
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , running , inProgress , backoffs , nil )
776
776
psCurrent , err := snapshot .FilterByPreset (current .presetID )
777
777
require .NoError (t , err )
778
778
@@ -865,7 +865,7 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
865
865
},
866
866
}
867
867
868
- snapshot := prebuilds .NewGlobalSnapshot (presets , nil , inProgress , nil , nil )
868
+ snapshot := prebuilds .NewGlobalSnapshot (presets , nil , nil , inProgress , nil , nil )
869
869
870
870
// Nothing has to be created for preset 1.
871
871
{
@@ -905,6 +905,49 @@ func TestMultiplePresetsPerTemplateVersion(t *testing.T) {
905
905
}
906
906
}
907
907
908
+ func TestMatchesCron (t * testing.T ) {
909
+ t .Parallel ()
910
+ testCases := []struct {
911
+ name string
912
+ spec string
913
+ at time.Time
914
+ expectedMatches bool
915
+ }{
916
+ // A comprehensive test suite for time range evaluation is implemented in TestIsWithinRange.
917
+ // This test provides only basic coverage.
918
+ {
919
+ name : "Right before the start of the time range" ,
920
+ spec : "* 9-18 * * 1-5" ,
921
+ at : mustParseTime (t , time .RFC1123 , "Mon, 02 Jun 2025 8:58:59 UTC" ),
922
+ expectedMatches : false ,
923
+ },
924
+ {
925
+ name : "Start of the time range" ,
926
+ spec : "* 9-18 * * 1-5" ,
927
+ at : mustParseTime (t , time .RFC1123 , "Mon, 02 Jun 2025 8:59:00 UTC" ),
928
+ expectedMatches : true ,
929
+ },
930
+ }
931
+
932
+ for _ , testCase := range testCases {
933
+ testCase := testCase
934
+ t .Run (testCase .name , func (t * testing.T ) {
935
+ t .Parallel ()
936
+
937
+ matches , err := prebuilds .MatchesCron (testCase .spec , testCase .at )
938
+ require .NoError (t , err )
939
+ require .Equal (t , testCase .expectedMatches , matches )
940
+ })
941
+ }
942
+ }
943
+
944
+ func mustParseTime (t * testing.T , layout , value string ) time.Time {
945
+ t .Helper ()
946
+ parsedTime , err := time .Parse (layout , value )
947
+ require .NoError (t , err )
948
+ return parsedTime
949
+ }
950
+
908
951
func preset (active bool , instances int32 , opts options , muts ... func (row database.GetTemplatePresetsWithPrebuildsRow ) database.GetTemplatePresetsWithPrebuildsRow ) database.GetTemplatePresetsWithPrebuildsRow {
909
952
ttl := sql.NullInt32 {}
910
953
if opts .ttl > 0 {
0 commit comments