diff --git a/command/issue.go b/command/issue.go index 11e5bc6c2..a024c75e0 100644 --- a/command/issue.go +++ b/command/issue.go @@ -38,7 +38,7 @@ func init() { issueListCmd.Flags().StringP("author", "A", "", "Filter by author") issueCmd.AddCommand(issueViewCmd) - issueViewCmd.Flags().BoolP("preview", "p", false, "Display preview of issue content") + issueViewCmd.Flags().BoolP("web", "w", false, "Open issue in browser") } var issueCmd = &cobra.Command{ @@ -73,7 +73,7 @@ var issueViewCmd = &cobra.Command{ } return nil }, - Short: "View an issue in the browser", + Short: "View an issue", RunE: issueView, } @@ -213,17 +213,17 @@ func issueView(cmd *cobra.Command, args []string) error { } openURL := issue.URL - preview, err := cmd.Flags().GetBool("preview") + web, err := cmd.Flags().GetBool("web") if err != nil { return err } - if preview { - out := colorableOut(cmd) - return printIssuePreview(out, issue) - } else { + if web { fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", openURL) return utils.OpenInBrowser(openURL) + } else { + out := colorableOut(cmd) + return printIssuePreview(out, issue) } } diff --git a/command/issue_test.go b/command/issue_test.go index 2f5875653..982cf69eb 100644 --- a/command/issue_test.go +++ b/command/issue_test.go @@ -216,79 +216,79 @@ func TestIssueList_disabledIssues(t *testing.T) { } } +func TestIssueView_web(t *testing.T) { + initBlankContext("OWNER/REPO", "master") + http := initFakeHTTP() + http.StubRepoResponse("OWNER", "REPO") + + http.StubResponse(200, bytes.NewBufferString(` + { "data": { "repository": { "hasIssuesEnabled": true, "issue": { + "number": 123, + "url": "https://github.com/OWNER/REPO/issues/123" + } } } } + `)) + + var seenCmd *exec.Cmd + restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable { + seenCmd = cmd + return &test.OutputStub{} + }) + defer restoreCmd() + + output, err := RunCommand(issueViewCmd, "issue view -w 123") + if err != nil { + t.Errorf("error running command `issue view`: %v", err) + } + + eq(t, output.String(), "") + eq(t, output.Stderr(), "Opening https://github.com/OWNER/REPO/issues/123 in your browser.\n") + + if seenCmd == nil { + t.Fatal("expected a command to run") + } + url := seenCmd.Args[len(seenCmd.Args)-1] + eq(t, url, "https://github.com/OWNER/REPO/issues/123") +} + +func TestIssueView_web_numberArgWithHash(t *testing.T) { + initBlankContext("OWNER/REPO", "master") + http := initFakeHTTP() + http.StubRepoResponse("OWNER", "REPO") + + http.StubResponse(200, bytes.NewBufferString(` + { "data": { "repository": { "hasIssuesEnabled": true, "issue": { + "number": 123, + "url": "https://github.com/OWNER/REPO/issues/123" + } } } } + `)) + + var seenCmd *exec.Cmd + restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable { + seenCmd = cmd + return &test.OutputStub{} + }) + defer restoreCmd() + + output, err := RunCommand(issueViewCmd, "issue view -w \"#123\"") + if err != nil { + t.Errorf("error running command `issue view`: %v", err) + } + + eq(t, output.String(), "") + eq(t, output.Stderr(), "Opening https://github.com/OWNER/REPO/issues/123 in your browser.\n") + + if seenCmd == nil { + t.Fatal("expected a command to run") + } + url := seenCmd.Args[len(seenCmd.Args)-1] + eq(t, url, "https://github.com/OWNER/REPO/issues/123") +} + func TestIssueView(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") - http.StubResponse(200, bytes.NewBufferString(` - { "data": { "repository": { "hasIssuesEnabled": true, "issue": { - "number": 123, - "url": "https://github.com/OWNER/REPO/issues/123" - } } } } - `)) - - var seenCmd *exec.Cmd - restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable { - seenCmd = cmd - return &test.OutputStub{} - }) - defer restoreCmd() - - output, err := RunCommand(issueViewCmd, "issue view 123") - if err != nil { - t.Errorf("error running command `issue view`: %v", err) - } - - eq(t, output.String(), "") - eq(t, output.Stderr(), "Opening https://github.com/OWNER/REPO/issues/123 in your browser.\n") - - if seenCmd == nil { - t.Fatal("expected a command to run") - } - url := seenCmd.Args[len(seenCmd.Args)-1] - eq(t, url, "https://github.com/OWNER/REPO/issues/123") -} - -func TestIssueView_numberArgWithHash(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - - http.StubResponse(200, bytes.NewBufferString(` - { "data": { "repository": { "hasIssuesEnabled": true, "issue": { - "number": 123, - "url": "https://github.com/OWNER/REPO/issues/123" - } } } } - `)) - - var seenCmd *exec.Cmd - restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable { - seenCmd = cmd - return &test.OutputStub{} - }) - defer restoreCmd() - - output, err := RunCommand(issueViewCmd, "issue view \"#123\"") - if err != nil { - t.Errorf("error running command `issue view`: %v", err) - } - - eq(t, output.String(), "") - eq(t, output.Stderr(), "Opening https://github.com/OWNER/REPO/issues/123 in your browser.\n") - - if seenCmd == nil { - t.Fatal("expected a command to run") - } - url := seenCmd.Args[len(seenCmd.Args)-1] - eq(t, url, "https://github.com/OWNER/REPO/issues/123") -} - -func TestIssueView_preview(t *testing.T) { - initBlankContext("OWNER/REPO", "master") - http := initFakeHTTP() - http.StubRepoResponse("OWNER", "REPO") - http.StubResponse(200, bytes.NewBufferString(` { "data": { "repository": { "hasIssuesEnabled": true, "issue": { "number": 123, @@ -309,7 +309,7 @@ func TestIssueView_preview(t *testing.T) { } } } } `)) - output, err := RunCommand(issueViewCmd, "issue view -p 123") + output, err := RunCommand(issueViewCmd, "issue view 123") if err != nil { t.Errorf("error running command `issue view`: %v", err) } @@ -323,7 +323,7 @@ func TestIssueView_preview(t *testing.T) { "View this issue on GitHub: https://github.com/OWNER/REPO/issues/123") } -func TestIssueView_previewWithEmptyBody(t *testing.T) { +func TestIssueView_WithEmptyBody(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -348,7 +348,7 @@ func TestIssueView_previewWithEmptyBody(t *testing.T) { } } } } `)) - output, err := RunCommand(issueViewCmd, "issue view -p 123") + output, err := RunCommand(issueViewCmd, "issue view 123") if err != nil { t.Errorf("error running command `issue view`: %v", err) } @@ -361,7 +361,7 @@ func TestIssueView_previewWithEmptyBody(t *testing.T) { "View this issue on GitHub: https://github.com/OWNER/REPO/issues/123") } -func TestIssueView_notFound(t *testing.T) { +func TestIssueView_web_notFound(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() @@ -378,7 +378,7 @@ func TestIssueView_notFound(t *testing.T) { }) defer restoreCmd() - _, err := RunCommand(issueViewCmd, "issue view 9999") + _, err := RunCommand(issueViewCmd, "issue view -w 9999") if err == nil || err.Error() != "graphql error: 'Could not resolve to an Issue with the number of 9999.'" { t.Errorf("error running command `issue view`: %v", err) } @@ -406,7 +406,7 @@ func TestIssueView_disabledIssues(t *testing.T) { } } -func TestIssueView_urlArg(t *testing.T) { +func TestIssueView_web_urlArg(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -425,7 +425,7 @@ func TestIssueView_urlArg(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(issueViewCmd, "issue view https://github.com/OWNER/REPO/issues/123") + output, err := RunCommand(issueViewCmd, "issue view -w https://github.com/OWNER/REPO/issues/123") if err != nil { t.Errorf("error running command `issue view`: %v", err) } diff --git a/command/pr.go b/command/pr.go index b65f7009f..31cff1126 100644 --- a/command/pr.go +++ b/command/pr.go @@ -31,7 +31,7 @@ func init() { prListCmd.Flags().StringSliceP("label", "l", nil, "Filter by label") prListCmd.Flags().StringP("assignee", "a", "", "Filter by assignee") - prViewCmd.Flags().BoolP("preview", "p", false, "Display preview of pull request content") + prViewCmd.Flags().BoolP("web", "w", false, "Open pull request in browser") } var prCmd = &cobra.Command{ @@ -57,10 +57,10 @@ var prStatusCmd = &cobra.Command{ var prViewCmd = &cobra.Command{ Use: "view [{ | | }]", Short: "View a pull request in the browser", - Long: `View a pull request specified by the argument in the browser. + Long: `View a pull request specified by the argument. Without an argument, the pull request that belongs to the current -branch is opened.`, +branch is displayed.`, RunE: prView, } @@ -272,7 +272,7 @@ func prView(cmd *cobra.Command, args []string) error { } } - preview, err := cmd.Flags().GetBool("preview") + web, err := cmd.Flags().GetBool("web") if err != nil { return err } @@ -293,7 +293,7 @@ func prView(cmd *cobra.Command, args []string) error { if prNumber > 0 { openURL = fmt.Sprintf("https://github.com/%s/pull/%d", ghrepo.FullName(baseRepo), prNumber) - if preview { + if !web { pr, err = api.PullRequestByNumber(apiClient, baseRepo, prNumber) if err != nil { return err @@ -309,12 +309,12 @@ func prView(cmd *cobra.Command, args []string) error { } } - if preview { - out := colorableOut(cmd) - return printPrPreview(out, pr) - } else { + if web { fmt.Fprintf(cmd.ErrOrStderr(), "Opening %s in your browser.\n", openURL) return utils.OpenInBrowser(openURL) + } else { + out := colorableOut(cmd) + return printPrPreview(out, pr) } } diff --git a/command/pr_test.go b/command/pr_test.go index 780bc886a..fab9e51ae 100644 --- a/command/pr_test.go +++ b/command/pr_test.go @@ -409,7 +409,7 @@ func TestPRView_preview(t *testing.T) { defer jsonFile.Close() http.StubResponse(200, jsonFile) - output, err := RunCommand(prViewCmd, "pr view -p 12") + output, err := RunCommand(prViewCmd, "pr view 12") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -437,7 +437,7 @@ func TestPRView_previewCurrentBranch(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view -p") + output, err := RunCommand(prViewCmd, "pr view") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -465,7 +465,7 @@ func TestPRView_previewCurrentBranchWithEmptyBody(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view -p") + output, err := RunCommand(prViewCmd, "pr view") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -478,7 +478,7 @@ func TestPRView_previewCurrentBranchWithEmptyBody(t *testing.T) { "View this pull request on GitHub: https://github.com/OWNER/REPO/pull/10") } -func TestPRView_currentBranch(t *testing.T) { +func TestPRView_web_currentBranch(t *testing.T) { initBlankContext("OWNER/REPO", "blueberries") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -499,7 +499,7 @@ func TestPRView_currentBranch(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view") + output, err := RunCommand(prViewCmd, "pr view -w") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -516,7 +516,7 @@ func TestPRView_currentBranch(t *testing.T) { } } -func TestPRView_noResultsForBranch(t *testing.T) { +func TestPRView_web_noResultsForBranch(t *testing.T) { initBlankContext("OWNER/REPO", "blueberries") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -537,7 +537,7 @@ func TestPRView_noResultsForBranch(t *testing.T) { }) defer restoreCmd() - _, err := RunCommand(prViewCmd, "pr view") + _, err := RunCommand(prViewCmd, "pr view -w") if err == nil || err.Error() != `no open pull requests found for branch "blueberries"` { t.Errorf("error running command `pr view`: %v", err) } @@ -547,7 +547,7 @@ func TestPRView_noResultsForBranch(t *testing.T) { } } -func TestPRView_numberArg(t *testing.T) { +func TestPRView_web_numberArg(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -565,7 +565,7 @@ func TestPRView_numberArg(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view 23") + output, err := RunCommand(prViewCmd, "pr view -w 23") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -579,7 +579,7 @@ func TestPRView_numberArg(t *testing.T) { eq(t, url, "https://github.com/OWNER/REPO/pull/23") } -func TestPRView_numberArgWithHash(t *testing.T) { +func TestPRView_web_numberArgWithHash(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -597,7 +597,7 @@ func TestPRView_numberArgWithHash(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view \"#23\"") + output, err := RunCommand(prViewCmd, "pr view -w \"#23\"") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -611,7 +611,7 @@ func TestPRView_numberArgWithHash(t *testing.T) { eq(t, url, "https://github.com/OWNER/REPO/pull/23") } -func TestPRView_urlArg(t *testing.T) { +func TestPRView_web_urlArg(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() @@ -628,7 +628,7 @@ func TestPRView_urlArg(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view https://github.com/OWNER/REPO/pull/23/files") + output, err := RunCommand(prViewCmd, "pr view -w https://github.com/OWNER/REPO/pull/23/files") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -642,7 +642,7 @@ func TestPRView_urlArg(t *testing.T) { eq(t, url, "https://github.com/OWNER/REPO/pull/23") } -func TestPRView_branchArg(t *testing.T) { +func TestPRView_web_branchArg(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -662,7 +662,7 @@ func TestPRView_branchArg(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view blueberries") + output, err := RunCommand(prViewCmd, "pr view -w blueberries") if err != nil { t.Errorf("error running command `pr view`: %v", err) } @@ -676,7 +676,7 @@ func TestPRView_branchArg(t *testing.T) { eq(t, url, "https://github.com/OWNER/REPO/pull/23") } -func TestPRView_branchWithOwnerArg(t *testing.T) { +func TestPRView_web_branchWithOwnerArg(t *testing.T) { initBlankContext("OWNER/REPO", "master") http := initFakeHTTP() http.StubRepoResponse("OWNER", "REPO") @@ -697,7 +697,7 @@ func TestPRView_branchWithOwnerArg(t *testing.T) { }) defer restoreCmd() - output, err := RunCommand(prViewCmd, "pr view hubot:blueberries") + output, err := RunCommand(prViewCmd, "pr view -w hubot:blueberries") if err != nil { t.Errorf("error running command `pr view`: %v", err) }