diff --git a/scm/driver/harness/pr.go b/scm/driver/harness/pr.go index f84012655..ece3880a9 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" @@ -99,44 +100,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 null.String `json:"merge_target_sha"` + MergeBaseSha string `json:"merge_base_sha"` + Merged null.Int `json:"merged"` + MergeMethod null.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"` + 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"` + SourceRepoID int64 `json:"source_repo_id"` + SourceSHA string `json:"source_sha"` TargetBranch string `json:"target_branch"` - TargetRepoID int `json:"target_repo_id"` - Title string `json:"title"` + TargetRepoID int64 `json:"target_repo_id"` + + State string `json:"state"` + Stats struct { + 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"` } reference struct { @@ -222,21 +217,34 @@ 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.Valid, Author: scm.User{ Login: src.Author.Email, Name: src.Author.DisplayName, 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.MergeTargetSHA.String, + }, + 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..ae5dc76da 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": "b772dca15553986cc90fc6254a0fa47f4047526c", + "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