From d1a3a5d50b7def6e7bd7872e6888dc14d5885ba0 Mon Sep 17 00:00:00 2001 From: Zaki Shaikh Date: Tue, 9 Dec 2025 11:04:59 +0530 Subject: [PATCH] fix(bitbucket-cloud): assign unique statue name in Bitbucket Cloud Update Bitbucket Cloud provider to use GetCheckName helper for commit status key. This enables unique status reporting per PipelineRun by using the format "ApplicationName / PipelineRunName" instead of just the application name. Changes: - Replace hardcoded ApplicationName with GetCheckName in CreateStatus - Update tests to include OriginalPipelineRunName in StatusOpts - Add assertion in MuxCreateCommitstatus to verify correct key format Fixes: #2237 JIRA: https://issues.redhat.com/browse/SRVKP-9636 Signed-off-by: Zaki Shaikh --- pkg/provider/bitbucketcloud/bitbucket.go | 2 +- pkg/provider/bitbucketcloud/bitbucket_test.go | 51 ++++++++++++++----- .../bitbucketcloud/test/bbcloudtest.go | 5 +- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/pkg/provider/bitbucketcloud/bitbucket.go b/pkg/provider/bitbucketcloud/bitbucket.go index 99dcbb993a..a0fcdff568 100644 --- a/pkg/provider/bitbucketcloud/bitbucket.go +++ b/pkg/provider/bitbucketcloud/bitbucket.go @@ -109,7 +109,7 @@ func (v *Provider) CreateStatus(_ context.Context, event *info.Event, statusopts } cso := &bitbucket.CommitStatusOptions{ - Key: v.pacInfo.ApplicationName, + Key: provider.GetCheckName(statusopts, v.pacInfo), Url: detailsURL, State: statusopts.Conclusion, Description: statusopts.Title, diff --git a/pkg/provider/bitbucketcloud/bitbucket_test.go b/pkg/provider/bitbucketcloud/bitbucket_test.go index 4aedddb414..d0972736f1 100644 --- a/pkg/provider/bitbucketcloud/bitbucket_test.go +++ b/pkg/provider/bitbucketcloud/bitbucket_test.go @@ -273,33 +273,38 @@ func TestGetCommitInfo(t *testing.T) { } func TestCreateStatus(t *testing.T) { + originalPipelineRunName := "hello-af9ch" tests := []struct { name string wantErr bool status provider.StatusOpts + applicationName string expectedDescSubstr string expectedCommentSubstr string }{ { name: "skipped", status: provider.StatusOpts{ - Conclusion: "skipped", + Conclusion: "skipped", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "Skipping", }, { name: "neutral", status: provider.StatusOpts{ - Conclusion: "neutral", + Conclusion: "neutral", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "stopped", }, { name: "completed with comment", status: provider.StatusOpts{ - Conclusion: "success", - Status: "completed", - Text: "Happy as a bunny", + Conclusion: "success", + Status: "completed", + OriginalPipelineRunName: originalPipelineRunName, + Text: "Happy as a bunny", }, expectedDescSubstr: "validated", expectedCommentSubstr: "Happy as a bunny", @@ -307,51 +312,71 @@ func TestCreateStatus(t *testing.T) { { name: "failed", status: provider.StatusOpts{ - Conclusion: "failure", + Conclusion: "failure", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "Failed", }, { name: "details url", status: provider.StatusOpts{ - Conclusion: "failure", - DetailsURL: "http://fail.com", + Conclusion: "failure", + DetailsURL: "http://fail.com", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "Failed", }, { name: "pending", status: provider.StatusOpts{ - Conclusion: "pending", + Conclusion: "pending", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "started", }, { name: "success", status: provider.StatusOpts{ - Conclusion: "success", + Conclusion: "success", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "validated", }, { name: "completed", status: provider.StatusOpts{ - Conclusion: "completed", + Conclusion: "completed", + OriginalPipelineRunName: originalPipelineRunName, }, expectedDescSubstr: "Completed", }, + { + name: "application name", + status: provider.StatusOpts{ + Conclusion: "completed", + OriginalPipelineRunName: originalPipelineRunName, + }, + applicationName: "HELLO APP", + expectedDescSubstr: "Completed", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { ctx, _ := rtesting.SetupFakeContext(t) bbclient, mux, tearDown := bbcloudtest.SetupBBCloudClient(t) defer tearDown() + + appName := tt.applicationName + if appName == "" { + appName = settings.PACApplicationNameDefaultValue + } + v := &Provider{ bbClient: bbclient, run: params.New(), pacInfo: &info.PacOpts{ Settings: settings.Settings{ - ApplicationName: settings.PACApplicationNameDefaultValue, + ApplicationName: appName, }, }, } @@ -359,7 +384,7 @@ func TestCreateStatus(t *testing.T) { event.EventType = "pull_request" event.Provider.Token = "token" - bbcloudtest.MuxCreateCommitstatus(t, mux, event, tt.expectedDescSubstr, tt.status) + bbcloudtest.MuxCreateCommitstatus(t, mux, event, tt.expectedDescSubstr, appName, tt.status) bbcloudtest.MuxCreateComment(t, mux, event, tt.expectedCommentSubstr) err := v.CreateStatus(ctx, event, tt.status) diff --git a/pkg/provider/bitbucketcloud/test/bbcloudtest.go b/pkg/provider/bitbucketcloud/test/bbcloudtest.go index 81b2b17dcd..3638d8959a 100644 --- a/pkg/provider/bitbucketcloud/test/bbcloudtest.go +++ b/pkg/provider/bitbucketcloud/test/bbcloudtest.go @@ -13,6 +13,7 @@ import ( "github.com/ktrysmt/go-bitbucket" "github.com/openshift-pipelines/pipelines-as-code/pkg/params/info" + "github.com/openshift-pipelines/pipelines-as-code/pkg/params/settings" "github.com/openshift-pipelines/pipelines-as-code/pkg/provider" "github.com/openshift-pipelines/pipelines-as-code/pkg/provider/bitbucketcloud/types" "gotest.tools/v3/assert" @@ -144,7 +145,7 @@ func MuxRepoInfo(t *testing.T, mux *http.ServeMux, event *info.Event, repo *bitb }) } -func MuxCreateCommitstatus(t *testing.T, mux *http.ServeMux, event *info.Event, expectedDescSubstr string, expStatus provider.StatusOpts) { +func MuxCreateCommitstatus(t *testing.T, mux *http.ServeMux, event *info.Event, expectedDescSubstr, applicationName string, expStatus provider.StatusOpts) { t.Helper() path := fmt.Sprintf("/repositories/%s/%s/commit/%s/statuses/build", event.Organization, event.Repository, event.SHA) @@ -153,6 +154,8 @@ func MuxCreateCommitstatus(t *testing.T, mux *http.ServeMux, event *info.Event, bit, _ := io.ReadAll(r.Body) err := json.Unmarshal(bit, cso) assert.NilError(t, err) + pacOpts := &info.PacOpts{Settings: settings.Settings{ApplicationName: applicationName}} + assert.Equal(t, provider.GetCheckName(expStatus, pacOpts), cso.Key) if expStatus.DetailsURL != "" { assert.Equal(t, expStatus.DetailsURL, cso.Url)