@@ -41,12 +41,13 @@ func Test_Extract(t *testing.T) {
4141 failPreview bool
4242 input preview.Input
4343
44- expTags map [string ]string
45- unknownTags []string
46- params map [string ]assertParam
47- variables map [string ]assertVariable
48- presets func (t * testing.T , presets []types.Preset )
49- warnings []* regexp.Regexp
44+ expTags map [string ]string
45+ unknownTags []string
46+ params map [string ]assertParam
47+ variables map [string ]assertVariable
48+ presetsFuncs func (t * testing.T , presets []types.Preset )
49+ presets map [string ]assertPreset
50+ warnings []* regexp.Regexp
5051 }{
5152 {
5253 name : "bad param values" ,
@@ -266,6 +267,27 @@ func Test_Extract(t *testing.T) {
266267 errorDiagnostics ("Required" ),
267268 },
268269 },
270+ {
271+ name : "valid prebuild" ,
272+ dir : "preset" ,
273+ expTags : map [string ]string {},
274+ input : preview.Input {},
275+ unknownTags : []string {},
276+ params : map [string ]assertParam {
277+ "number" : ap (),
278+ "has_default" : ap (),
279+ },
280+ presets : map [string ]assertPreset {
281+ "valid_preset" : aPre ().
282+ value ("number" , "9" ).
283+ value ("has_default" , "changed" ).
284+ prebuildCount (3 ),
285+ "prebuild_instance_zero" : aPre ().
286+ prebuildCount (0 ),
287+ "not_prebuild" : aPre ().
288+ prebuildCount (0 ),
289+ },
290+ },
269291 {
270292 name : "invalid presets" ,
271293 dir : "invalidpresets" ,
@@ -276,7 +298,7 @@ func Test_Extract(t *testing.T) {
276298 "valid_parameter_name" : ap ().
277299 optVals ("valid_option_value" ),
278300 },
279- presets : func (t * testing.T , presets []types.Preset ) {
301+ presetsFuncs : func (t * testing.T , presets []types.Preset ) {
280302 presetMap := map [string ]func (t * testing.T , preset types.Preset ){
281303 "empty_parameters" : func (t * testing.T , preset types.Preset ) {
282304 require .Len (t , preset .Diagnostics , 0 )
@@ -688,8 +710,14 @@ func Test_Extract(t *testing.T) {
688710 }
689711
690712 // Assert presets
691- if tc .presets != nil {
692- tc .presets (t , output .Presets )
713+ if tc .presetsFuncs != nil {
714+ tc .presetsFuncs (t , output .Presets )
715+ }
716+
717+ for _ , preset := range output .Presets {
718+ check , ok := tc .presets [preset .Name ]
719+ require .True (t , ok , "unknown preset %s" , preset .Name )
720+ check (t , preset )
693721 }
694722
695723 // Assert variables
@@ -961,6 +989,16 @@ func (a assertPreset) def(def bool) assertPreset {
961989 })
962990}
963991
992+ func (a assertPreset ) prebuildCount (exp int ) assertPreset {
993+ return a .extend (func (t * testing.T , preset types.Preset ) {
994+ if exp == 0 && preset .Prebuild == nil {
995+ return
996+ }
997+ require .NotNilf (t , preset .Prebuild , "prebuild should not be nil, expected %d instances" , exp )
998+ require .Equal (t , exp , preset .Prebuild .Instances )
999+ })
1000+ }
1001+
9641002func (a assertPreset ) value (key , value string ) assertPreset {
9651003 return a .extend (func (t * testing.T , preset types.Preset ) {
9661004 v , ok := preset .Parameters [key ]
0 commit comments