Include auto-merge information in gh pr view (#7385)
This commit is contained in:
parent
83aaa76141
commit
0da0de4022
3 changed files with 121 additions and 1 deletions
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
"data": {
|
||||
"repository": {
|
||||
"pullRequest": {
|
||||
"number": 12,
|
||||
"title": "Blueberries are from a fork",
|
||||
"state": "OPEN",
|
||||
"body": "**blueberries taste good**",
|
||||
"url": "https://github.com/OWNER/REPO/pull/12",
|
||||
"author": {
|
||||
"login": "nobody"
|
||||
},
|
||||
"autoMergeRequest": {
|
||||
"authorEmail": null,
|
||||
"commitBody": null,
|
||||
"commitHeadline": null,
|
||||
"mergeMethod": "SQUASH",
|
||||
"enabledAt": "2020-08-27T19:00:12Z",
|
||||
"enabledBy": {
|
||||
"login": "hubot"
|
||||
}
|
||||
},
|
||||
"additions": 100,
|
||||
"deletions": 10,
|
||||
"reviewRequests": {
|
||||
"nodes": [],
|
||||
"totalcount": 0
|
||||
},
|
||||
"assignees": {
|
||||
"nodes": [],
|
||||
"totalcount": 0
|
||||
},
|
||||
"labels": {
|
||||
"nodes": [],
|
||||
"totalcount": 0
|
||||
},
|
||||
"projectcards": {
|
||||
"nodes": [],
|
||||
"totalcount": 0
|
||||
},
|
||||
"milestone": {},
|
||||
"commits": {
|
||||
"totalCount": 12
|
||||
},
|
||||
"baseRefName": "master",
|
||||
"headRefName": "blueberries",
|
||||
"headRepositoryOwner": {
|
||||
"login": "hubot"
|
||||
},
|
||||
"isCrossRepository": true,
|
||||
"isDraft": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -77,7 +77,7 @@ func NewCmdView(f *cmdutil.Factory, runF func(*ViewOptions) error) *cobra.Comman
|
|||
}
|
||||
|
||||
var defaultFields = []string{
|
||||
"url", "number", "title", "state", "body", "author",
|
||||
"url", "number", "title", "state", "body", "author", "autoMergeRequest",
|
||||
"isDraft", "maintainerCanModify", "mergeable", "additions", "deletions", "commitsCount",
|
||||
"baseRefName", "headRefName", "headRepositoryOwner", "headRepository", "isCrossRepository",
|
||||
"reviewRequests", "reviews", "assignees", "labels", "projectCards", "milestone",
|
||||
|
|
@ -157,6 +157,15 @@ func printRawPrPreview(io *iostreams.IOStreams, pr *api.PullRequest) error {
|
|||
fmt.Fprintf(out, "url:\t%s\n", pr.URL)
|
||||
fmt.Fprintf(out, "additions:\t%s\n", cs.Green(strconv.Itoa(pr.Additions)))
|
||||
fmt.Fprintf(out, "deletions:\t%s\n", cs.Red(strconv.Itoa(pr.Deletions)))
|
||||
var autoMerge string
|
||||
if pr.AutoMergeRequest == nil {
|
||||
autoMerge = "disabled"
|
||||
} else {
|
||||
autoMerge = fmt.Sprintf("enabled\t%s\t%s",
|
||||
pr.AutoMergeRequest.EnabledBy.Login,
|
||||
strings.ToLower(pr.AutoMergeRequest.MergeMethod))
|
||||
}
|
||||
fmt.Fprintf(out, "auto-merge:\t%s\n", autoMerge)
|
||||
|
||||
fmt.Fprintln(out, "--")
|
||||
fmt.Fprintln(out, pr.Body)
|
||||
|
|
@ -223,6 +232,29 @@ func printHumanPrPreview(opts *ViewOptions, pr *api.PullRequest) error {
|
|||
fmt.Fprintln(out, pr.Milestone.Title)
|
||||
}
|
||||
|
||||
// Auto-Merge status
|
||||
autoMerge := pr.AutoMergeRequest
|
||||
if autoMerge != nil {
|
||||
var mergeMethod string
|
||||
switch autoMerge.MergeMethod {
|
||||
case "MERGE":
|
||||
mergeMethod = "a merge commit"
|
||||
case "REBASE":
|
||||
mergeMethod = "rebase and merge"
|
||||
case "SQUASH":
|
||||
mergeMethod = "squash and merge"
|
||||
default:
|
||||
mergeMethod = fmt.Sprintf("an unknown merge method (%s)", autoMerge.MergeMethod)
|
||||
}
|
||||
fmt.Fprintf(out,
|
||||
"%s %s by %s, using %s\n",
|
||||
cs.Bold("Auto-merge:"),
|
||||
cs.Green("enabled"),
|
||||
autoMerge.EnabledBy.Login,
|
||||
mergeMethod,
|
||||
)
|
||||
}
|
||||
|
||||
// Body
|
||||
var md string
|
||||
var err error
|
||||
|
|
|
|||
|
|
@ -314,6 +314,25 @@ func TestPRView_Preview_nontty(t *testing.T) {
|
|||
`\*\*blueberries taste good\*\*`,
|
||||
},
|
||||
},
|
||||
"PR with auto-merge enabled": {
|
||||
branch: "master",
|
||||
args: "12",
|
||||
fixtures: map[string]string{
|
||||
"PullRequestByNumber": "./fixtures/prViewPreviewWithAutoMergeEnabled.json",
|
||||
},
|
||||
expectedOutputs: []string{
|
||||
`title:\tBlueberries are from a fork\n`,
|
||||
`state:\tOPEN\n`,
|
||||
`author:\tnobody\n`,
|
||||
`labels:\t\n`,
|
||||
`assignees:\t\n`,
|
||||
`projects:\t\n`,
|
||||
`milestone:\t\n`,
|
||||
`additions:\t100\n`,
|
||||
`deletions:\t10\n`,
|
||||
`auto-merge:\tenabled\thubot\tsquash\n`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range tests {
|
||||
|
|
@ -504,6 +523,20 @@ func TestPRView_Preview(t *testing.T) {
|
|||
`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
|
||||
},
|
||||
},
|
||||
"PR with auto-merge enabled": {
|
||||
branch: "master",
|
||||
args: "12",
|
||||
fixtures: map[string]string{
|
||||
"PullRequestByNumber": "./fixtures/prViewPreviewWithAutoMergeEnabled.json",
|
||||
},
|
||||
expectedOutputs: []string{
|
||||
`Blueberries are from a fork #12\n`,
|
||||
`Open.*nobody wants to merge 12 commits into master from blueberries . about X years ago`,
|
||||
`Auto-merge:.*enabled.* by hubot, using squash and merge`,
|
||||
`blueberries taste good`,
|
||||
`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range tests {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue