@@ -220,3 +220,64 @@ func TestSetKOTSDefaultReleaseParams_SetsEnsureChannelAndLint(t *testing.T) {
220220 assert .True (t , args .createReleasePromoteEnsureChannel , "ensure-channel should be set to true" )
221221 assert .True (t , args .createReleaseLint , "lint should be set to true" )
222222}
223+
224+ // TestRequiredFlagRequiresPromote tests that --required fails without --promote
225+ func TestRequiredFlagRequiresPromote (t * testing.T ) {
226+ r := & runners {
227+ args : runnerArgs {
228+ createReleasePromoteRequired : true ,
229+ createReleasePromote : "" , // No promote channel
230+ createReleaseYamlDir : "./manifests" ,
231+ },
232+ appType : "kots" ,
233+ }
234+
235+ err := r .validateReleaseCreateParams ()
236+ assert .Error (t , err )
237+ assert .Contains (t , err .Error (), "--required can only be used with --promote" )
238+ }
239+
240+ // TestRequiredFlagWithPromote tests that --required works with --promote
241+ func TestRequiredFlagWithPromote (t * testing.T ) {
242+ r := & runners {
243+ args : runnerArgs {
244+ createReleasePromoteRequired : true ,
245+ createReleasePromote : "Unstable" ,
246+ createReleaseYamlDir : "./manifests" ,
247+ },
248+ appType : "kots" ,
249+ }
250+
251+ err := r .validateReleaseCreateParams ()
252+ assert .NoError (t , err )
253+ }
254+
255+ // TestRequiredFlagDefaultsFalse tests that --required defaults to false
256+ func TestRequiredFlagDefaultsFalse (t * testing.T ) {
257+ r := & runners {
258+ args : runnerArgs {
259+ createReleasePromote : "Unstable" ,
260+ createReleaseYamlDir : "./manifests" ,
261+ },
262+ }
263+
264+ assert .False (t , r .args .createReleasePromoteRequired ,
265+ "--required should default to false" )
266+ }
267+
268+ // TestRequiredFlagRequiresPromoteInConfigBasedFlow tests that --required fails
269+ // without --promote even in config-based flow (no explicit yaml sources)
270+ func TestRequiredFlagRequiresPromoteInConfigBasedFlow (t * testing.T ) {
271+ r := & runners {
272+ args : runnerArgs {
273+ createReleasePromoteRequired : true ,
274+ createReleasePromote : "" , // No promote channel
275+ // No yaml sources specified - simulates config-based flow
276+ },
277+ appType : "kots" ,
278+ }
279+
280+ err := r .validateReleaseCreateParams ()
281+ assert .Error (t , err )
282+ assert .Contains (t , err .Error (), "--required can only be used with --promote" )
283+ }
0 commit comments