Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 49 additions & 41 deletions scm/driver/harness/pr.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package harness
import (
"context"
"fmt"
"github.com/drone/go-scm/scm/driver/internal/null"
"strconv"
"strings"
"time"
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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),
}
}

Expand Down
40 changes: 22 additions & 18 deletions scm/driver/harness/testdata/pr.json
Original file line number Diff line number Diff line change
@@ -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
}
}
39 changes: 26 additions & 13 deletions scm/driver/harness/testdata/pr.json.golden
Original file line number Diff line number Diff line change
@@ -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": "[email protected]",
"Name": "thomas.honey",
"Email": "[email protected]"
}
"ID": "aqm0RQXGQI6v3m_f7u7C5A",
"Login": "[email protected]",
"Name": "Abhinav Singh",
"Email": "[email protected]"
},
"Created": "2024-03-18T20:27:43.81-07:00",
"Updated": "2024-03-18T20:27:43.81-07:00"
}