From 0d030429ea2e4f558f49d34e509e57d23fd34d79 Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Tue, 19 Mar 2024 17:15:50 -0700 Subject: [PATCH 1/6] feat: pr harness parse all fields --- scm/driver/harness/pr.go | 81 ++++++++++++---------- scm/driver/harness/testdata/pr.json | 40 ++++++----- scm/driver/harness/testdata/pr.json.golden | 39 +++++++---- 3 files changed, 92 insertions(+), 68 deletions(-) diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index f84012655..3f22ac5dc 100644 --- a/scm/driver/harness/pr.go +++ b/scm/driver/harness/pr.go @@ -99,44 +99,38 @@ func (s *pullService) Close(context.Context, string, int) (*scm.Response, error) // native data structures type ( pr struct { - Author struct { - Created int `json:"created"` - DisplayName string `json:"display_name"` - Email string `json:"email"` - ID int `json:"id"` - Type string `json:"type"` - UID string `json:"uid"` - Updated int `json:"updated"` - } `json:"author"` - Created int `json:"created"` - Description string `json:"description"` - Edited int `json:"edited"` - IsDraft bool `json:"is_draft"` - MergeBaseSha string `json:"merge_base_sha"` - MergeHeadSha string `json:"merge_head_sha"` - MergeStrategy string `json:"merge_strategy"` - Merged int `json:"merged"` - Merger struct { - Created int `json:"created"` - DisplayName string `json:"display_name"` - Email string `json:"email"` - ID int `json:"id"` - Type string `json:"type"` - UID string `json:"uid"` - Updated int `json:"updated"` - } `json:"merger"` - Number int `json:"number"` + Author principal `json:"author"` + Created int64 `json:"created"` + Description string `json:"description"` + Edited int64 `json:"edited"` + IsDraft bool `json:"is_draft"` + + MergeTargetSHA string `json:"merge_target_sha"` + MergeBaseSha string `json:"merge_base_sha"` + Merged int `json:"merged"` + MergeMethod string `json:"merge_method"` + MergeSHA string `json:"merge_sha"` + MergeCheckStatus string `json:"merge_check_status"` + MergeConflicts []string `json:"merge_conflicts,omitempty"` + Merger principal `json:"merger"` + + Number int `json:"number"` + SourceBranch string `json:"source_branch"` SourceRepoID int `json:"source_repo_id"` - State string `json:"state"` - Stats struct { - Commits int `json:"commits"` - Conversations int `json:"conversations"` - FilesChanged int `json:"files_changed"` - } `json:"stats"` + SourceSHA string `json:"source_sha"` TargetBranch string `json:"target_branch"` TargetRepoID int `json:"target_repo_id"` - Title string `json:"title"` + + State string `json:"state"` + Stats struct { + Commits int `json:"commits"` + Conversations int `json:"conversations"` + FilesChanged int `json:"files_changed"` + UnresolvedCount int `json:"unresolved_count,omitempty"` + } `json:"stats"` + + Title string `json:"title"` } reference struct { @@ -225,6 +219,7 @@ func convertPullRequest(src *pr) *scm.PullRequest { Number: src.Number, Title: src.Title, Body: src.Description, + Sha: src.SourceSHA, Source: src.SourceBranch, Target: src.TargetBranch, Merged: src.Merged != 0, @@ -234,9 +229,21 @@ func convertPullRequest(src *pr) *scm.PullRequest { ID: src.Author.UID, Email: src.Author.Email, }, - Fork: "fork", - Ref: fmt.Sprintf("refs/pullreq/%d/head", src.Number), - Closed: src.State == "closed", + Head: scm.Reference{ + Name: src.SourceBranch, + Path: scm.ExpandRef(src.SourceBranch, "refs/heads"), + Sha: src.SourceSHA, + }, + Base: scm.Reference{ + Name: src.TargetBranch, + Path: scm.ExpandRef(src.TargetBranch, "refs/heads"), + Sha: src.MergeSHA, + }, + Fork: "fork", + Ref: fmt.Sprintf("refs/pullreq/%d/head", src.Number), + Closed: src.State == "closed", + Created: time.UnixMilli(src.Created), + Updated: time.UnixMilli(src.Edited), } } diff --git a/scm/driver/harness/testdata/pr.json b/scm/driver/harness/testdata/pr.json index 89e773b96..57fc7d9de 100644 --- a/scm/driver/harness/testdata/pr.json +++ b/scm/driver/harness/testdata/pr.json @@ -1,32 +1,36 @@ { "number": 1, - "created": 1675960384081, - "edited": 1675960384081, + "created": 1710818863810, + "edited": 1710818863810, "state": "open", "is_draft": false, - "title": "pull title", - "description": "pull description", - "source_repo_id": 11, - "source_branch": "bla", - "target_repo_id": 11, + "title": "feat: self as codeowner can be skipped", + "description": "123", + "source_repo_id": 7, + "source_branch": "abhinav/CODE-1508", + "source_sha": "6c4ab583f5201ed0421d0ef93ee5b0925ac08f62", + "target_repo_id": 7, "target_branch": "main", "merged": null, - "merge_strategy": null, - "merge_head_sha": null, - "merge_base_sha": null, + "merge_method": null, + "merge_check_status": "mergeable", + "merge_target_sha": "b772dca15553986cc90fc6254a0fa47f4047526c", + "merge_base_sha": "b772dca15553986cc90fc6254a0fa47f4047526c", + "merge_sha": "ff13c81504ab3b04bd76b6af71e9c368333181a5", "author": { - "id": 14, - "uid": "0Nnoezs6RGa_fOWvG_Ta4w", - "display_name": "thomas.honey", - "email": "thomas.honey@harness.io", + "id": 27, + "uid": "aqm0RQXGQI6v3m_f7u7C5A", + "display_name": "Abhinav Singh", + "email": "abhinav.singh@harness.io", "type": "user", - "created": 1675248918372, - "updated": 1675248918372 + "created": 1681264009453, + "updated": 1681264009453 }, "merger": null, "stats": { - "conversations": 0, "commits": 1, - "files_changed": 1 + "files_changed": 1, + "conversations": 1, + "unresolved_count": 1 } } \ No newline at end of file diff --git a/scm/driver/harness/testdata/pr.json.golden b/scm/driver/harness/testdata/pr.json.golden index 5c4a83864..fcd75843b 100644 --- a/scm/driver/harness/testdata/pr.json.golden +++ b/scm/driver/harness/testdata/pr.json.golden @@ -1,20 +1,33 @@ { "Number": 1, - "Title": "pull title", - "Body": "pull description", - "Sha": "", - "Ref": "refs/pullreq/1/head", - "Source": "bla", - "Target": "main", + "Title": "feat: self as codeowner can be skipped", + "Body": "123", + "Sha": "6c4ab583f5201ed0421d0ef93ee5b0925ac08f62", + "Ref": "refs/pullreq/1/head", + "Source": "abhinav/CODE-1508", + "Target": "main", + "Fork": "fork", + "Closed": false, + "Merged": false, "Fork": "fork", "Link": "", "Diff": "", - "Closed": false, - "Merged": false, + "Base": { + "Sha": "ff13c81504ab3b04bd76b6af71e9c368333181a5", + "Path": "refs/heads/main", + "Name": "main" + }, + "Head": { + "Sha": "6c4ab583f5201ed0421d0ef93ee5b0925ac08f62", + "Path": "refs/heads/abhinav/CODE-1508", + "Name": "abhinav/CODE-1508" + }, "Author": { - "ID": "0Nnoezs6RGa_fOWvG_Ta4w", - "Login": "thomas.honey@harness.io", - "Name": "thomas.honey", - "Email": "thomas.honey@harness.io" - } + "ID": "aqm0RQXGQI6v3m_f7u7C5A", + "Login": "abhinav.singh@harness.io", + "Name": "Abhinav Singh", + "Email": "abhinav.singh@harness.io" + }, + "Created": "2024-03-18T20:27:43.81-07:00", + "Updated": "2024-03-18T20:27:43.81-07:00" } \ No newline at end of file From 70ec412661bda7a22a877b3ae93f4ac2b3e03514 Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Tue, 19 Mar 2024 17:40:42 -0700 Subject: [PATCH 2/6] feat: pr harness parse all fields --- scm/driver/harness/pr.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index 3f22ac5dc..33ac5629a 100644 --- a/scm/driver/harness/pr.go +++ b/scm/driver/harness/pr.go @@ -107,7 +107,7 @@ type ( MergeTargetSHA string `json:"merge_target_sha"` MergeBaseSha string `json:"merge_base_sha"` - Merged int `json:"merged"` + Merged int64 `json:"merged"` MergeMethod string `json:"merge_method"` MergeSHA string `json:"merge_sha"` MergeCheckStatus string `json:"merge_check_status"` @@ -117,16 +117,16 @@ type ( Number int `json:"number"` SourceBranch string `json:"source_branch"` - SourceRepoID int `json:"source_repo_id"` + SourceRepoID int64 `json:"source_repo_id"` SourceSHA string `json:"source_sha"` TargetBranch string `json:"target_branch"` - TargetRepoID int `json:"target_repo_id"` + TargetRepoID int64 `json:"target_repo_id"` State string `json:"state"` Stats struct { - Commits int `json:"commits"` - Conversations int `json:"conversations"` - FilesChanged int `json:"files_changed"` + Commits int `json:"commits,omitempty"` + Conversations int `json:"conversations,omitempty"` + FilesChanged int `json:"files_changed,omitempty"` UnresolvedCount int `json:"unresolved_count,omitempty"` } `json:"stats"` From db98e31e68d65d113b7321547011986611019bf4 Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Tue, 19 Mar 2024 18:00:12 -0700 Subject: [PATCH 3/6] feat: pr harness parse all fields --- scm/driver/harness/pr.go | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index 33ac5629a..3d791d31b 100644 --- a/scm/driver/harness/pr.go +++ b/scm/driver/harness/pr.go @@ -105,16 +105,16 @@ type ( Edited int64 `json:"edited"` IsDraft bool `json:"is_draft"` - MergeTargetSHA string `json:"merge_target_sha"` - MergeBaseSha string `json:"merge_base_sha"` - Merged int64 `json:"merged"` - MergeMethod string `json:"merge_method"` - MergeSHA string `json:"merge_sha"` - MergeCheckStatus string `json:"merge_check_status"` - MergeConflicts []string `json:"merge_conflicts,omitempty"` - Merger principal `json:"merger"` + MergeTargetSHA *string `json:"merge_target_sha"` + MergeBaseSha string `json:"merge_base_sha"` + Merged *int64 `json:"merged"` + MergeMethod string `json:"merge_method"` + MergeSHA *string `json:"merge_sha"` + MergeCheckStatus string `json:"merge_check_status"` + MergeConflicts []string `json:"merge_conflicts,omitempty"` + Merger *principal `json:"merger"` - Number int `json:"number"` + Number int64 `json:"number"` SourceBranch string `json:"source_branch"` SourceRepoID int64 `json:"source_repo_id"` @@ -124,10 +124,10 @@ type ( State string `json:"state"` Stats struct { - Commits int `json:"commits,omitempty"` - Conversations int `json:"conversations,omitempty"` - FilesChanged int `json:"files_changed,omitempty"` - UnresolvedCount int `json:"unresolved_count,omitempty"` + Commits *int64 `json:"commits,omitempty"` + Conversations int `json:"conversations,omitempty"` + FilesChanged *int64 `json:"files_changed,omitempty"` + UnresolvedCount int `json:"unresolved_count,omitempty"` } `json:"stats"` Title string `json:"title"` @@ -216,13 +216,13 @@ func convertPullRequests(src []*pr) []*scm.PullRequest { func convertPullRequest(src *pr) *scm.PullRequest { return &scm.PullRequest{ - Number: src.Number, + Number: int(src.Number), Title: src.Title, Body: src.Description, Sha: src.SourceSHA, Source: src.SourceBranch, Target: src.TargetBranch, - Merged: src.Merged != 0, + Merged: src.Merged != nil, Author: scm.User{ Login: src.Author.Email, Name: src.Author.DisplayName, @@ -237,7 +237,7 @@ func convertPullRequest(src *pr) *scm.PullRequest { Base: scm.Reference{ Name: src.TargetBranch, Path: scm.ExpandRef(src.TargetBranch, "refs/heads"), - Sha: src.MergeSHA, + Sha: src.MergeBaseSha, }, Fork: "fork", Ref: fmt.Sprintf("refs/pullreq/%d/head", src.Number), From fce6a683618cf6b6ccc0ce8b5810ff55a04b8d5c Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Tue, 19 Mar 2024 18:13:21 -0700 Subject: [PATCH 4/6] feat: pr harness parse all fields --- scm/driver/harness/testdata/pr.json.golden | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm/driver/harness/testdata/pr.json.golden b/scm/driver/harness/testdata/pr.json.golden index fcd75843b..ae5dc76da 100644 --- a/scm/driver/harness/testdata/pr.json.golden +++ b/scm/driver/harness/testdata/pr.json.golden @@ -13,7 +13,7 @@ "Link": "", "Diff": "", "Base": { - "Sha": "ff13c81504ab3b04bd76b6af71e9c368333181a5", + "Sha": "b772dca15553986cc90fc6254a0fa47f4047526c", "Path": "refs/heads/main", "Name": "main" }, From 21c6697aed4416f22da383092d8b55daab85bbe9 Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Wed, 20 Mar 2024 14:28:59 -0700 Subject: [PATCH 5/6] feat: pr harness parse all fields --- scm/driver/harness/pr.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index 3d791d31b..43069e40e 100644 --- a/scm/driver/harness/pr.go +++ b/scm/driver/harness/pr.go @@ -7,6 +7,7 @@ package harness import ( "context" "fmt" + "github.com/drone/go-scm/scm/driver/internal/null" "strconv" "strings" "time" @@ -105,14 +106,14 @@ type ( Edited int64 `json:"edited"` IsDraft bool `json:"is_draft"` - MergeTargetSHA *string `json:"merge_target_sha"` - MergeBaseSha string `json:"merge_base_sha"` - Merged *int64 `json:"merged"` - MergeMethod string `json:"merge_method"` - MergeSHA *string `json:"merge_sha"` - MergeCheckStatus string `json:"merge_check_status"` - MergeConflicts []string `json:"merge_conflicts,omitempty"` - Merger *principal `json:"merger"` + MergeTargetSHA null.String `json:"merge_target_sha"` + MergeBaseSha string `json:"merge_base_sha"` + Merged null.Int `json:"merged"` + MergeMethod string `json:"merge_method"` + MergeSHA null.String `json:"merge_sha"` + MergeCheckStatus string `json:"merge_check_status"` + MergeConflicts []string `json:"merge_conflicts,omitempty"` + Merger *principal `json:"merger"` Number int64 `json:"number"` @@ -124,10 +125,10 @@ type ( State string `json:"state"` Stats struct { - Commits *int64 `json:"commits,omitempty"` - Conversations int `json:"conversations,omitempty"` - FilesChanged *int64 `json:"files_changed,omitempty"` - UnresolvedCount int `json:"unresolved_count,omitempty"` + Commits null.Int `json:"commits,omitempty"` + Conversations int `json:"conversations,omitempty"` + FilesChanged null.Int `json:"files_changed,omitempty"` + UnresolvedCount int `json:"unresolved_count,omitempty"` } `json:"stats"` Title string `json:"title"` @@ -222,7 +223,7 @@ func convertPullRequest(src *pr) *scm.PullRequest { Sha: src.SourceSHA, Source: src.SourceBranch, Target: src.TargetBranch, - Merged: src.Merged != nil, + Merged: src.Merged.Valid, Author: scm.User{ Login: src.Author.Email, Name: src.Author.DisplayName, @@ -237,7 +238,7 @@ func convertPullRequest(src *pr) *scm.PullRequest { Base: scm.Reference{ Name: src.TargetBranch, Path: scm.ExpandRef(src.TargetBranch, "refs/heads"), - Sha: src.MergeBaseSha, + Sha: src.MergeTargetSHA.String, }, Fork: "fork", Ref: fmt.Sprintf("refs/pullreq/%d/head", src.Number), From 3ae7c3da6e5b78bdf36f753bcebf3a6c2394d6a2 Mon Sep 17 00:00:00 2001 From: Abhinav Singh Date: Wed, 20 Mar 2024 15:43:51 -0700 Subject: [PATCH 6/6] feat: pr harness parse all fields --- scm/driver/harness/pr.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index 43069e40e..ece3880a9 100644 --- a/scm/driver/harness/pr.go +++ b/scm/driver/harness/pr.go @@ -109,7 +109,7 @@ type ( MergeTargetSHA null.String `json:"merge_target_sha"` MergeBaseSha string `json:"merge_base_sha"` Merged null.Int `json:"merged"` - MergeMethod string `json:"merge_method"` + MergeMethod null.String `json:"merge_method"` MergeSHA null.String `json:"merge_sha"` MergeCheckStatus string `json:"merge_check_status"` MergeConflicts []string `json:"merge_conflicts,omitempty"`