From 060dfec4ad1d88128686b783125ed1c2dca2dfa3 Mon Sep 17 00:00:00 2001 From: Shaun Duncan Date: Sun, 29 May 2022 18:40:17 -0400 Subject: [PATCH 1/6] feat(mr): show approval/approver status in mr view - Added the output of mr approvers to the mr view command - Modified the mr approvers command to default to whatever the current branch mr would be Delivers #1015 --- commands/mr/approvers/mr_approvers.go | 48 +++--------------------- commands/mr/mrutils/mrutils.go | 53 ++++++++++++++++++++++++--- commands/mr/view/mr_view.go | 19 ++++++++-- commands/mr/view/mr_view_test.go | 13 ++++--- 4 files changed, 76 insertions(+), 57 deletions(-) diff --git a/commands/mr/approvers/mr_approvers.go b/commands/mr/approvers/mr_approvers.go index 70f836413..63ab4ce7c 100644 --- a/commands/mr/approvers/mr_approvers.go +++ b/commands/mr/approvers/mr_approvers.go @@ -5,28 +5,26 @@ import ( "github.com/profclems/glab/api" "github.com/profclems/glab/commands/mr/mrutils" - "github.com/profclems/glab/pkg/tableprinter" - "github.com/profclems/glab/commands/cmdutils" "github.com/spf13/cobra" - "github.com/xanzy/go-gitlab" + + "github.com/profclems/glab/commands/cmdutils" ) func NewCmdApprovers(f *cmdutils.Factory) *cobra.Command { - var mrApproversCmd = &cobra.Command{ + mrApproversCmd := &cobra.Command{ Use: "approvers [ | ] [flags]", Short: `List merge request eligible approvers`, Long: ``, Aliases: []string{}, - Args: cobra.ExactArgs(1), + Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - c := f.IO.Color() apiClient, err := f.HttpClient() if err != nil { return err } - mr, repo, err := mrutils.MRFromArgs(f, args, "opened") + mr, repo, err := mrutils.MRFromArgs(f, args, "any") if err != nil { return err } @@ -37,43 +35,9 @@ func NewCmdApprovers(f *cmdutils.Factory) *cobra.Command { if err != nil { return err } - if mrApprovals.ApprovalRulesOverwritten { - fmt.Fprintln(f.IO.StdOut, c.Yellow("Approval rules overwritten")) - } - for _, rule := range mrApprovals.Rules { - table := tableprinter.NewTablePrinter() - if rule.Approved { - fmt.Fprintln(f.IO.StdOut, c.Green(fmt.Sprintf("Rule %q sufficient approvals (%d/%d required):", rule.Name, len(rule.ApprovedBy), rule.ApprovalsRequired))) - } else { - fmt.Fprintln(f.IO.StdOut, c.Yellow(fmt.Sprintf("Rule %q insufficient approvals (%d/%d required):", rule.Name, len(rule.ApprovedBy), rule.ApprovalsRequired))) - } - eligibleApprovers := rule.EligibleApprovers + mrutils.PrintMRApprovalState(f.IO, mrApprovals) - approvedBy := map[string]*gitlab.BasicUser{} - for _, by := range rule.ApprovedBy { - approvedBy[by.Username] = by - } - - for _, eligibleApprover := range eligibleApprovers { - approved := "-" - source := "" - if _, exists := approvedBy[eligibleApprover.Username]; exists { - approved = "👍" - } - if rule.SourceRule != nil { - source = rule.SourceRule.RuleType - } - table.AddRow(eligibleApprover.Name, eligibleApprover.Username, approved, source) - delete(approvedBy, eligibleApprover.Username) - } - - for _, approver := range approvedBy { - approved := "👍" - table.AddRow(approver.Name, approver.Username, approved, "") - } - fmt.Fprintln(f.IO.StdOut, table) - } return nil }, } diff --git a/commands/mr/mrutils/mrutils.go b/commands/mr/mrutils/mrutils.go index 04ef79db4..67497a7ad 100644 --- a/commands/mr/mrutils/mrutils.go +++ b/commands/mr/mrutils/mrutils.go @@ -9,13 +9,14 @@ import ( "github.com/profclems/glab/pkg/iostreams" + "github.com/xanzy/go-gitlab" + "golang.org/x/sync/errgroup" + "github.com/profclems/glab/api" "github.com/profclems/glab/commands/cmdutils" "github.com/profclems/glab/internal/glrepo" "github.com/profclems/glab/pkg/prompt" "github.com/profclems/glab/pkg/tableprinter" - "github.com/xanzy/go-gitlab" - "golang.org/x/sync/errgroup" ) type MRCheckErrOptions struct { @@ -117,12 +118,12 @@ func DisplayAllMRs(streams *iostreams.IOStreams, mrs []*gitlab.MergeRequest, pro return table.Render() } -//MRFromArgs is wrapper around MRFromArgsWithOpts without any custom options +// MRFromArgs is wrapper around MRFromArgsWithOpts without any custom options func MRFromArgs(f *cmdutils.Factory, args []string, state string) (*gitlab.MergeRequest, glrepo.Interface, error) { return MRFromArgsWithOpts(f, args, &gitlab.GetMergeRequestsOptions{}, state) } -//MRFromArgsWithOpts gets MR with custom request options passed down to it +// MRFromArgsWithOpts gets MR with custom request options passed down to it func MRFromArgsWithOpts( f *cmdutils.Factory, args []string, @@ -216,7 +217,6 @@ func MRsFromArgs(f *cmdutils.Factory, args []string, state string) ([]*gitlab.Me return nil, nil, err } return mrs, baseRepo, nil - } var getMRForBranch = func(apiClient *gitlab.Client, baseRepo glrepo.Interface, arg string, state string) (*gitlab.MergeRequest, error) { @@ -328,3 +328,46 @@ func RebaseMR(ios *iostreams.IOStreams, apiClient *gitlab.Client, repo glrepo.In fmt.Fprintln(ios.StdOut, ios.Color().GreenCheck(), "Rebase successful") return nil } + +// PrintMRApprovalState renders an output to summarize the approval state of a merge request +func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeRequestApprovalState) { + c := ios.Color() + + if mrApprovals.ApprovalRulesOverwritten { + fmt.Fprintln(ios.StdOut, c.Yellow("Approval rules overwritten")) + } + for _, rule := range mrApprovals.Rules { + table := tableprinter.NewTablePrinter() + if rule.Approved { + fmt.Fprintln(ios.StdOut, c.Green(fmt.Sprintf("Rule %q sufficient approvals (%d/%d required):", rule.Name, len(rule.ApprovedBy), rule.ApprovalsRequired))) + } else { + fmt.Fprintln(ios.StdOut, c.Yellow(fmt.Sprintf("Rule %q insufficient approvals (%d/%d required):", rule.Name, len(rule.ApprovedBy), rule.ApprovalsRequired))) + } + + eligibleApprovers := rule.EligibleApprovers + + approvedBy := map[string]*gitlab.BasicUser{} + for _, by := range rule.ApprovedBy { + approvedBy[by.Username] = by + } + + for _, eligibleApprover := range eligibleApprovers { + approved := "-" + source := "" + if _, exists := approvedBy[eligibleApprover.Username]; exists { + approved = "👍" + } + if rule.SourceRule != nil { + source = rule.SourceRule.RuleType + } + table.AddRow(eligibleApprover.Name, eligibleApprover.Username, approved, source) + delete(approvedBy, eligibleApprover.Username) + } + + for _, approver := range approvedBy { + approved := "👍" + table.AddRow(approver.Name, approver.Username, approved, "") + } + fmt.Fprintln(ios.StdOut, table) + } +} diff --git a/commands/mr/view/mr_view.go b/commands/mr/view/mr_view.go index 2b0ac54fe..9994eae4c 100644 --- a/commands/mr/view/mr_view.go +++ b/commands/mr/view/mr_view.go @@ -31,7 +31,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command { opts := &ViewOpts{ IO: f.IO, } - var mrViewCmd = &cobra.Command{ + mrViewCmd := &cobra.Command{ Use: "view { | }", Short: `Display the title, body, and other information about a merge request.`, Long: ``, @@ -51,9 +51,15 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command { if err != nil { return err } + + mrApprovals, err := api.GetMRApprovalState(apiClient, baseRepo.FullName(), mr.IID) + if err != nil { + return err + } + cfg, _ := f.Config() - if opts.OpenInBrowser { //open in browser if --web flag is specified + if opts.OpenInBrowser { // open in browser if --web flag is specified if f.IO.IsOutputTTY() { fmt.Fprintf(f.IO.StdErr, "Opening %s in your browser.\n", utils.DisplayURL(mr.WebURL)) } @@ -85,7 +91,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command { defer f.IO.StopPager() if f.IO.IsOutputTTY() { - return printTTYMRPreview(opts, mr, notes) + return printTTYMRPreview(opts, mr, mrApprovals, notes) } return printRawMRPreview(opts, mr) }, @@ -136,7 +142,7 @@ func mrState(c *iostreams.ColorPalette, mr *gitlab.MergeRequest) (mrState string return mrState } -func printTTYMRPreview(opts *ViewOpts, mr *gitlab.MergeRequest, notes []*gitlab.Note) error { +func printTTYMRPreview(opts *ViewOpts, mr *gitlab.MergeRequest, mrApprovals *gitlab.MergeRequestApprovalState, notes []*gitlab.Note) error { c := opts.IO.Color() out := opts.IO.StdOut mrTimeAgo := utils.TimeToPrettyTimeAgo(*mr.CreatedAt) @@ -192,6 +198,11 @@ func printTTYMRPreview(opts *ViewOpts, mr *gitlab.MergeRequest, notes []*gitlab. fmt.Fprintf(out, "%s Requires pipeline to succeed before merging\n", c.WarnIcon()) } } + if mrApprovals != nil { + fmt.Fprintln(out) + fmt.Fprintln(out, c.Bold("Approvals Status:")) + mrutils.PrintMRApprovalState(opts.IO, mrApprovals) + } fmt.Fprintf(out, "%s This merge request has %s changes\n", c.GreenCheck(), c.Yellow(mr.ChangesCount)) if mr.State == "merged" && mr.MergedBy != nil { fmt.Fprintf(out, "%s The changes were merged into %s by %s %s\n", c.GreenCheck(), mr.TargetBranch, mr.MergedBy.Name, utils.TimeToPrettyTimeAgo(*mr.MergedAt)) diff --git a/commands/mr/view/mr_view_test.go b/commands/mr/view/mr_view_test.go index 15f4c2826..e94489ec5 100644 --- a/commands/mr/view/mr_view_test.go +++ b/commands/mr/view/mr_view_test.go @@ -11,16 +11,18 @@ import ( "github.com/profclems/glab/pkg/iostreams" "github.com/acarl005/stripansi" + "github.com/stretchr/testify/require" + "github.com/xanzy/go-gitlab" + "github.com/profclems/glab/api" "github.com/profclems/glab/commands/cmdutils" "github.com/profclems/glab/internal/config" - "github.com/stretchr/testify/require" - "github.com/xanzy/go-gitlab" + + "github.com/stretchr/testify/assert" "github.com/profclems/glab/commands/cmdtest" "github.com/profclems/glab/internal/run" mainTest "github.com/profclems/glab/test" - "github.com/stretchr/testify/assert" ) var ( @@ -103,7 +105,7 @@ func TestMRView_web_numberArg(t *testing.T) { }) defer restoreCmd() - _, err := cmdtest.RunCommand(cmd, "225 -w -R glab-cli/test") + _, err := cmdtest.RunCommand(cmd, "2 -w -R glab-cli/test") if err != nil { t.Error(err) return @@ -114,7 +116,7 @@ func TestMRView_web_numberArg(t *testing.T) { stdout.Reset() stderr.Reset() - assert.Contains(t, outErr, "Opening gitlab.com/glab-cli/test/-/merge_requests/225 in your browser.") + assert.Contains(t, outErr, "Opening gitlab.com/glab-cli/test/-/merge_requests/2 in your browser.") assert.Equal(t, out, "") if seenCmd == nil { @@ -164,7 +166,6 @@ func TestMRView(t *testing.T) { cmdutils.EnableRepoOverride(cmd, stubFactory) _, err := cmdtest.RunCommand(cmd, "13 -c -s -R glab-cli/test") - if err != nil { t.Error(err) return -- GitLab From 3f0e1d3ea7b32cc260520fe3f345e4c893a7f0c4 Mon Sep 17 00:00:00 2001 From: Lucas Charles Date: Mon, 6 Jun 2022 20:18:11 +0000 Subject: [PATCH 2/6] Apply 1 suggestion(s) to 1 file(s) --- commands/mr/mrutils/mrutils.go | 1 + 1 file changed, 1 insertion(+) diff --git a/commands/mr/mrutils/mrutils.go b/commands/mr/mrutils/mrutils.go index 67497a7ad..034adccdc 100644 --- a/commands/mr/mrutils/mrutils.go +++ b/commands/mr/mrutils/mrutils.go @@ -369,5 +369,6 @@ func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeReq table.AddRow(approver.Name, approver.Username, approved, "") } fmt.Fprintln(ios.StdOut, table) + return nil } } -- GitLab From be6df0489e1e7176d55a9e28b323526b92ec96cf Mon Sep 17 00:00:00 2001 From: Shaun Duncan Date: Mon, 6 Jun 2022 17:02:37 -0500 Subject: [PATCH 3/6] add test coverage and address merge request feedback --- commands/mr/approvers/mr_approvers.go | 10 +- commands/mr/mrutils/mrutils.go | 11 +- commands/mr/mrutils/mrutils_test.go | 151 ++++++++++++++++++++++++++ commands/mr/view/mr_view.go | 1 - 4 files changed, 162 insertions(+), 11 deletions(-) diff --git a/commands/mr/approvers/mr_approvers.go b/commands/mr/approvers/mr_approvers.go index 63ab4ce7c..4ab7382cf 100644 --- a/commands/mr/approvers/mr_approvers.go +++ b/commands/mr/approvers/mr_approvers.go @@ -4,17 +4,15 @@ import ( "fmt" "github.com/profclems/glab/api" + "github.com/profclems/glab/commands/cmdutils" "github.com/profclems/glab/commands/mr/mrutils" - "github.com/spf13/cobra" - - "github.com/profclems/glab/commands/cmdutils" ) func NewCmdApprovers(f *cmdutils.Factory) *cobra.Command { - mrApproversCmd := &cobra.Command{ + var mrApproversCmd = &cobra.Command{ Use: "approvers [ | ] [flags]", - Short: `List merge request eligible approvers`, + Short: `List eligible approvers for merge requests in any state`, Long: ``, Aliases: []string{}, Args: cobra.MaximumNArgs(1), @@ -24,6 +22,8 @@ func NewCmdApprovers(f *cmdutils.Factory) *cobra.Command { return err } + // Obtain the MR from the positional arguments, but allow users to find approvers for + // merge requests in any valid state mr, repo, err := mrutils.MRFromArgs(f, args, "any") if err != nil { return err diff --git a/commands/mr/mrutils/mrutils.go b/commands/mr/mrutils/mrutils.go index 67497a7ad..c29a773b1 100644 --- a/commands/mr/mrutils/mrutils.go +++ b/commands/mr/mrutils/mrutils.go @@ -9,14 +9,13 @@ import ( "github.com/profclems/glab/pkg/iostreams" - "github.com/xanzy/go-gitlab" - "golang.org/x/sync/errgroup" - "github.com/profclems/glab/api" "github.com/profclems/glab/commands/cmdutils" "github.com/profclems/glab/internal/glrepo" "github.com/profclems/glab/pkg/prompt" "github.com/profclems/glab/pkg/tableprinter" + "github.com/xanzy/go-gitlab" + "golang.org/x/sync/errgroup" ) type MRCheckErrOptions struct { @@ -331,6 +330,8 @@ func RebaseMR(ios *iostreams.IOStreams, apiClient *gitlab.Client, repo glrepo.In // PrintMRApprovalState renders an output to summarize the approval state of a merge request func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeRequestApprovalState) { + const approvedIcon = "👍" + c := ios.Color() if mrApprovals.ApprovalRulesOverwritten { @@ -355,7 +356,7 @@ func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeReq approved := "-" source := "" if _, exists := approvedBy[eligibleApprover.Username]; exists { - approved = "👍" + approved = approvedIcon } if rule.SourceRule != nil { source = rule.SourceRule.RuleType @@ -365,7 +366,7 @@ func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeReq } for _, approver := range approvedBy { - approved := "👍" + approved := approvedIcon table.AddRow(approver.Name, approver.Username, approved, "") } fmt.Fprintln(ios.StdOut, table) diff --git a/commands/mr/mrutils/mrutils_test.go b/commands/mr/mrutils/mrutils_test.go index 6c2daa826..cc33c3d43 100644 --- a/commands/mr/mrutils/mrutils_test.go +++ b/commands/mr/mrutils/mrutils_test.go @@ -543,3 +543,154 @@ func Test_DisplayAllMRs(t *testing.T) { got := DisplayAllMRs(streams, mrs, "unused") assert.Equal(t, expected, got) } + +func Test_PrintMRApprovalState(t *testing.T) { + scenarios := []struct { + name string + approvalState *gitlab.MergeRequestApprovalState + expected string + }{ + { + name: "approved, min approvers met", + approvalState: &gitlab.MergeRequestApprovalState{ + Rules: []*gitlab.MergeRequestApprovalRule{ + { + ID: 1, + Name: "rule 1", + ApprovalsRequired: 2, + ApprovedBy: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + { + ID: 2, + Username: "user2", + Name: "User Two", + }, + }, + Approved: true, + }, + }, + }, + expected: `Rule "rule 1" sufficient approvals (2/2 required): +User One user1 👍 +User Two user2 👍 + +`, + }, + { + name: "not-approved, min approvers not met", + approvalState: &gitlab.MergeRequestApprovalState{ + Rules: []*gitlab.MergeRequestApprovalRule{ + { + ID: 1, + Name: "rule 1", + ApprovalsRequired: 2, + ApprovedBy: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + }, + Approved: false, + }, + }, + }, + expected: `Rule "rule 1" insufficient approvals (1/2 required): +User One user1 👍 + +`, + }, + { + name: "approved, eligible approvers", + approvalState: &gitlab.MergeRequestApprovalState{ + Rules: []*gitlab.MergeRequestApprovalRule{ + { + ID: 1, + Name: "rule 1", + ApprovalsRequired: 2, + EligibleApprovers: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + { + ID: 2, + Username: "user2", + Name: "User Two", + }, + }, + ApprovedBy: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + { + ID: 2, + Username: "user2", + Name: "User Two", + }, + }, + Approved: true, + }, + }, + }, + expected: `Rule "rule 1" sufficient approvals (2/2 required): +User One user1 👍 +User Two user2 👍 + +`, + }, + { + name: "not approved, missing eligible approver", + approvalState: &gitlab.MergeRequestApprovalState{ + Rules: []*gitlab.MergeRequestApprovalRule{ + { + ID: 1, + Name: "rule 1", + ApprovalsRequired: 2, + EligibleApprovers: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + { + ID: 2, + Username: "user2", + Name: "User Two", + }, + }, + ApprovedBy: []*gitlab.BasicUser{ + { + ID: 1, + Username: "user1", + Name: "User One", + }, + }, + Approved: false, + }, + }, + }, + expected: `Rule "rule 1" insufficient approvals (1/2 required): +User One user1 👍 +User Two user2 - + +`, + }, + } + + for _, scenario := range scenarios { + t.Run(scenario.name, func(t *testing.T) { + streams, _, stdout, _ := iostreams.Test() + + PrintMRApprovalState(streams, scenario.approvalState) + assert.Equal(t, scenario.expected, stdout.String()) + }) + } +} diff --git a/commands/mr/view/mr_view.go b/commands/mr/view/mr_view.go index 9994eae4c..48313fde2 100644 --- a/commands/mr/view/mr_view.go +++ b/commands/mr/view/mr_view.go @@ -199,7 +199,6 @@ func printTTYMRPreview(opts *ViewOpts, mr *gitlab.MergeRequest, mrApprovals *git } } if mrApprovals != nil { - fmt.Fprintln(out) fmt.Fprintln(out, c.Bold("Approvals Status:")) mrutils.PrintMRApprovalState(opts.IO, mrApprovals) } -- GitLab From 9427893f52895e6a3f9dba2e6380b4f9c665ed26 Mon Sep 17 00:00:00 2001 From: Shaun Duncan Date: Mon, 6 Jun 2022 17:07:38 -0500 Subject: [PATCH 4/6] revert some of the vim-go gopls changes --- commands/mr/view/mr_view.go | 2 +- commands/mr/view/mr_view_test.go | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/commands/mr/view/mr_view.go b/commands/mr/view/mr_view.go index 48313fde2..0f68b7591 100644 --- a/commands/mr/view/mr_view.go +++ b/commands/mr/view/mr_view.go @@ -31,7 +31,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command { opts := &ViewOpts{ IO: f.IO, } - mrViewCmd := &cobra.Command{ + var mrViewCmd = &cobra.Command{ Use: "view { | }", Short: `Display the title, body, and other information about a merge request.`, Long: ``, diff --git a/commands/mr/view/mr_view_test.go b/commands/mr/view/mr_view_test.go index e94489ec5..aead00121 100644 --- a/commands/mr/view/mr_view_test.go +++ b/commands/mr/view/mr_view_test.go @@ -11,18 +11,16 @@ import ( "github.com/profclems/glab/pkg/iostreams" "github.com/acarl005/stripansi" - "github.com/stretchr/testify/require" - "github.com/xanzy/go-gitlab" - "github.com/profclems/glab/api" "github.com/profclems/glab/commands/cmdutils" "github.com/profclems/glab/internal/config" - - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/xanzy/go-gitlab" "github.com/profclems/glab/commands/cmdtest" "github.com/profclems/glab/internal/run" mainTest "github.com/profclems/glab/test" + "github.com/stretchr/testify/assert" ) var ( -- GitLab From 25d3ac2507682dfeb2ac336010fbe5260363c807 Mon Sep 17 00:00:00 2001 From: Lucas Charles Date: Mon, 13 Jun 2022 19:34:40 +0000 Subject: [PATCH 5/6] Apply 1 suggestion(s) to 1 file(s) --- commands/mr/mrutils/mrutils.go | 1 - 1 file changed, 1 deletion(-) diff --git a/commands/mr/mrutils/mrutils.go b/commands/mr/mrutils/mrutils.go index 6afe6e21d..c29a773b1 100644 --- a/commands/mr/mrutils/mrutils.go +++ b/commands/mr/mrutils/mrutils.go @@ -370,6 +370,5 @@ func PrintMRApprovalState(ios *iostreams.IOStreams, mrApprovals *gitlab.MergeReq table.AddRow(approver.Name, approver.Username, approved, "") } fmt.Fprintln(ios.StdOut, table) - return nil } } -- GitLab From b9a6920aa286dd589dfd2dbe805234966ad9a4ef Mon Sep 17 00:00:00 2001 From: Shaun Duncan Date: Mon, 13 Jun 2022 15:39:01 -0400 Subject: [PATCH 6/6] Revert changes to mr_view_test.go --- commands/mr/view/mr_view_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commands/mr/view/mr_view_test.go b/commands/mr/view/mr_view_test.go index aead00121..15f4c2826 100644 --- a/commands/mr/view/mr_view_test.go +++ b/commands/mr/view/mr_view_test.go @@ -103,7 +103,7 @@ func TestMRView_web_numberArg(t *testing.T) { }) defer restoreCmd() - _, err := cmdtest.RunCommand(cmd, "2 -w -R glab-cli/test") + _, err := cmdtest.RunCommand(cmd, "225 -w -R glab-cli/test") if err != nil { t.Error(err) return @@ -114,7 +114,7 @@ func TestMRView_web_numberArg(t *testing.T) { stdout.Reset() stderr.Reset() - assert.Contains(t, outErr, "Opening gitlab.com/glab-cli/test/-/merge_requests/2 in your browser.") + assert.Contains(t, outErr, "Opening gitlab.com/glab-cli/test/-/merge_requests/225 in your browser.") assert.Equal(t, out, "") if seenCmd == nil { @@ -164,6 +164,7 @@ func TestMRView(t *testing.T) { cmdutils.EnableRepoOverride(cmd, stubFactory) _, err := cmdtest.RunCommand(cmd, "13 -c -s -R glab-cli/test") + if err != nil { t.Error(err) return -- GitLab