@@ -14,6 +14,7 @@ import (
1414 tektonv1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1"
1515 "gotest.tools/v3/assert"
1616 "k8s.io/client-go/kubernetes/fake"
17+ "knative.dev/pkg/apis"
1718)
1819
1920func TestAnalyzerAnalyze (t * testing.T ) {
@@ -410,14 +411,17 @@ func TestAnalyzerShouldTriggerRoleEvaluations(t *testing.T) {
410411 },
411412 }
412413
414+ failedPR := & tektonv1.PipelineRun {}
415+ failedPR .Status .Conditions = append (failedPR .Status .Conditions , apis.Condition {Type : apis .ConditionSucceeded , Status : "False" })
416+
413417 tests := []struct {
414418 name string
415419 role v1alpha1.AnalysisRole
416420 want bool
417421 wantError bool
418422 }{
419423 {
420- name : "no expression returns true " ,
424+ name : "no expression defaults to failed pipelines only " ,
421425 role : v1alpha1.AnalysisRole {},
422426 want : true ,
423427 },
@@ -440,7 +444,7 @@ func TestAnalyzerShouldTriggerRoleEvaluations(t *testing.T) {
440444
441445 for _ , tt := range tests {
442446 t .Run (tt .name , func (t * testing.T ) {
443- got , err := analyzer .shouldTriggerRole (tt .role , celContext )
447+ got , err := analyzer .shouldTriggerRole (tt .role , celContext , failedPR )
444448
445449 if tt .wantError {
446450 assert .Assert (t , err != nil , "expected error but got none" )
@@ -459,57 +463,60 @@ func TestAnalyzerShouldTriggerRole(t *testing.T) {
459463 kinteract := & kubeinteraction.Interaction {}
460464 analyzer := NewAnalyzer (run , kinteract , logger )
461465
466+ failedPR := & tektonv1.PipelineRun {}
467+ failedPR .Status .Conditions = append (failedPR .Status .Conditions , apis.Condition {Type : apis .ConditionSucceeded , Status : "False" })
468+
469+ succeededPR := & tektonv1.PipelineRun {}
470+ succeededPR .Status .Conditions = append (succeededPR .Status .Conditions , apis.Condition {Type : apis .ConditionSucceeded , Status : "True" })
471+
462472 tests := []struct {
463473 name string
464474 role v1alpha1.AnalysisRole
465475 celContext map [string ]any
476+ pr * tektonv1.PipelineRun
466477 wantTrigger bool
467478 wantError bool
468479 }{
469480 {
470- name : "no cel expression - always trigger" ,
471- role : v1alpha1.AnalysisRole {
472- Name : "test-role" ,
473- },
481+ name : "no cel expression - triggers for failed pipeline" ,
482+ role : v1alpha1.AnalysisRole {Name : "test-role" },
474483 celContext : map [string ]any {},
484+ pr : failedPR ,
475485 wantTrigger : true ,
476- wantError : false ,
477486 },
478487 {
479- name : "simple true expression" ,
480- role : v1alpha1.AnalysisRole {
481- Name : "test-role" ,
482- OnCEL : "true" ,
483- },
488+ name : "no cel expression - skips succeeded pipeline" ,
489+ role : v1alpha1.AnalysisRole {Name : "test-role" },
484490 celContext : map [string ]any {},
485- wantTrigger : true ,
486- wantError : false ,
491+ pr : succeededPR ,
492+ wantTrigger : false ,
487493 },
488494 {
489- name : "simple false expression" ,
490- role : v1alpha1.AnalysisRole {
491- Name : "test-role" ,
492- OnCEL : "false" ,
493- },
495+ name : "simple true expression" ,
496+ role : v1alpha1.AnalysisRole {Name : "test-role" , OnCEL : "true" },
494497 celContext : map [string ]any {},
495- wantTrigger : false ,
496- wantError : false ,
498+ pr : succeededPR ,
499+ wantTrigger : true ,
497500 },
498501 {
499- name : "invalid cel expression" ,
500- role : v1alpha1.AnalysisRole {
501- Name : "test-role" ,
502- OnCEL : "invalid syntax (" ,
503- },
502+ name : "simple false expression" ,
503+ role : v1alpha1.AnalysisRole {Name : "test-role" , OnCEL : "false" },
504504 celContext : map [string ]any {},
505+ pr : failedPR ,
505506 wantTrigger : false ,
506- wantError : true ,
507+ },
508+ {
509+ name : "invalid cel expression" ,
510+ role : v1alpha1.AnalysisRole {Name : "test-role" , OnCEL : "invalid syntax (" },
511+ celContext : map [string ]any {},
512+ pr : failedPR ,
513+ wantError : true ,
507514 },
508515 }
509516
510517 for _ , tt := range tests {
511518 t .Run (tt .name , func (t * testing.T ) {
512- shouldTrigger , err := analyzer .shouldTriggerRole (tt .role , tt .celContext )
519+ shouldTrigger , err := analyzer .shouldTriggerRole (tt .role , tt .celContext , tt . pr )
513520
514521 if tt .wantError {
515522 assert .Assert (t , err != nil , "expected error but got none" )
0 commit comments