@@ -616,6 +616,80 @@ func TestGitlabDisableCommentsOnMR(t *testing.T) {
616
616
assert .Equal (t , 2 , successCommentsPost )
617
617
}
618
618
619
+ func TestGitlabMergeRequestOnUpdateAtAndLabelChange (t * testing.T ) {
620
+ targetNS := names .SimpleNameGenerator .RestrictLengthWithRandomSuffix ("pac-e2e-ns" )
621
+ ctx := context .Background ()
622
+ runcnx , opts , glprovider , err := tgitlab .Setup (ctx )
623
+ assert .NilError (t , err )
624
+ ctx , err = cctx .GetControllerCtxInfo (ctx , runcnx )
625
+ assert .NilError (t , err )
626
+ runcnx .Clients .Log .Info ("Testing with Gitlab" )
627
+
628
+ projectinfo , resp , err := glprovider .Client ().Projects .GetProject (opts .ProjectID , nil )
629
+ assert .NilError (t , err )
630
+ if resp != nil && resp .StatusCode == http .StatusNotFound {
631
+ t .Errorf ("Repository %s not found in %s" , opts .Organization , opts .Repo )
632
+ }
633
+
634
+ err = tgitlab .CreateCRD (ctx , projectinfo , runcnx , opts , targetNS , nil )
635
+ assert .NilError (t , err )
636
+
637
+ entries , err := payload .GetEntries (map [string ]string {
638
+ ".tekton/pipelinerun.yaml" : "testdata/pipelinerun.yaml" ,
639
+ ".tekton/pipelinerun-clone.yaml" : "testdata/pipelinerun-clone.yaml" ,
640
+ }, targetNS , projectinfo .DefaultBranch ,
641
+ triggertype .PullRequest .String (), map [string ]string {})
642
+ assert .NilError (t , err )
643
+
644
+ targetRefName := names .SimpleNameGenerator .RestrictLengthWithRandomSuffix ("pac-e2e-test" )
645
+
646
+ gitCloneURL , err := scm .MakeGitCloneURL (projectinfo .WebURL , opts .UserName , opts .Password )
647
+ assert .NilError (t , err )
648
+ commitTitle := "Committing files from test on " + targetRefName
649
+ scmOpts := & scm.Opts {
650
+ GitURL : gitCloneURL ,
651
+ CommitTitle : commitTitle ,
652
+ Log : runcnx .Clients .Log ,
653
+ WebURL : projectinfo .WebURL ,
654
+ TargetRefName : targetRefName ,
655
+ BaseRefName : projectinfo .DefaultBranch ,
656
+ }
657
+ _ = scm .PushFilesToRefGit (t , scmOpts , entries )
658
+
659
+ runcnx .Clients .Log .Infof ("Branch %s has been created and pushed with files" , targetRefName )
660
+ mrTitle := "TestMergeRequest - " + targetRefName
661
+ mrID , err := tgitlab .CreateMR (glprovider .Client (), opts .ProjectID , targetRefName , projectinfo .DefaultBranch , mrTitle )
662
+ assert .NilError (t , err )
663
+ runcnx .Clients .Log .Infof ("MergeRequest %s/-/merge_requests/%d has been created" , projectinfo .WebURL , mrID )
664
+ defer tgitlab .TearDown (ctx , t , runcnx , glprovider , mrID , targetRefName , targetNS , opts .ProjectID )
665
+
666
+ sopt := twait.SuccessOpt {
667
+ Title : commitTitle ,
668
+ OnEvent : "Merge Request" ,
669
+ TargetNS : targetNS ,
670
+ NumberofPRMatch : 2 ,
671
+ SHA : "" ,
672
+ }
673
+ twait .Succeeded (ctx , t , runcnx , opts , sopt )
674
+ prsNew , err := runcnx .Clients .Tekton .TektonV1 ().PipelineRuns (targetNS ).List (ctx , metav1.ListOptions {})
675
+ assert .NilError (t , err )
676
+ assert .Assert (t , len (prsNew .Items ) == 2 )
677
+
678
+ runcnx .Clients .Log .Infof ("Changing Title on MergeRequest %s/-/merge_requests/%d" , projectinfo .WebURL , mrID )
679
+ _ , _ , err = glprovider .Client ().MergeRequests .UpdateMergeRequest (opts .ProjectID , mrID , & clientGitlab.UpdateMergeRequestOptions {
680
+ Title : clientGitlab .Ptr ("test" ),
681
+ })
682
+ assert .NilError (t , err )
683
+
684
+ // let's wait 10 secs and check every second that a PipelineRun is created or not.
685
+ for i := 0 ; i < 10 ; i ++ {
686
+ prs , err := runcnx .Clients .Tekton .TektonV1 ().PipelineRuns (targetNS ).List (ctx , metav1.ListOptions {})
687
+ assert .NilError (t , err )
688
+ assert .Assert (t , len (prs .Items ) == 2 )
689
+ time .Sleep (1 * time .Second )
690
+ }
691
+ }
692
+
619
693
// Local Variables:
620
694
// compile-command: "go test -tags=e2e -v -run ^TestGitlabMergeRequest$"
621
695
// End:
0 commit comments