Skip to content

Commit b64488f

Browse files
committed
Changed parsefileArg to return a string, reformatted testing, polished up browse.go
1 parent 679d396 commit b64488f

File tree

2 files changed

+30
-40
lines changed

2 files changed

+30
-40
lines changed

pkg/cmd/browse/browse.go

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,12 @@ func NewCmdBrowse(f *cmdutil.Factory, runF func(*BrowseOptions) error) *cobra.Co
107107
func runBrowse(opts *BrowseOptions) error {
108108
baseRepo, err := opts.BaseRepo()
109109
if err != nil {
110-
return fmt.Errorf("unable to determine base repository: %w\nUse 'gh browse --help' for more information about browse\n", err)
110+
return fmt.Errorf("unable to determine base repository: %w\n", err)
111111
}
112112

113113
httpClient, err := opts.HttpClient()
114114
if err != nil {
115-
return fmt.Errorf("unable to create an http client: %w\nUse 'gh browse --help' for more information about browse\n", err)
115+
return fmt.Errorf("unable to create an http client: %w\n", err)
116116
}
117117
url := ghrepo.GenerateRepoURL(baseRepo, "")
118118

@@ -133,7 +133,7 @@ func runBrowse(opts *BrowseOptions) error {
133133
if isNumber(opts.SelectorArg) {
134134
url += "/issues/" + opts.SelectorArg
135135
} else {
136-
arr, err := parseFileArg(opts.SelectorArg)
136+
fileArg, err := parseFileArg(opts.SelectorArg)
137137
if err != nil {
138138
return err
139139
}
@@ -147,33 +147,28 @@ func runBrowse(opts *BrowseOptions) error {
147147
}
148148
url += "/tree/" + branchName + "/"
149149
}
150-
if opts.SelectorArg != "" {
151-
if len(arr) > 1 {
152-
url += arr[0] + "#L" + arr[1]
153-
} else {
154-
url += arr[0]
155-
}
156-
}
150+
url += fileArg
157151
}
158152
}
159153

160-
err = opts.Browser.Browse(url)
161-
if opts.IO.IsStdoutTTY() && err == nil {
154+
if opts.IO.IsStdoutTTY() {
162155
fmt.Fprintf(opts.IO.Out, "now opening %s in browser\n", url)
163156
}
164-
165-
return err
157+
return opts.Browser.Browse(url)
166158
}
167159

168-
func parseFileArg(fileArg string) ([]string, error) {
160+
func parseFileArg(fileArg string) (string, error) {
169161
arr := strings.Split(fileArg, ":")
170162
if len(arr) > 2 {
171-
return arr, fmt.Errorf("invalid use of colon\nUse 'gh browse --help' for more information about browse\n")
163+
return "", fmt.Errorf("invalid use of colon\nUse 'gh browse --help' for more information about browse\n")
172164
}
173-
if len(arr) > 1 && !isNumber(arr[1]) {
174-
return arr, fmt.Errorf("invalid line number after colon\nUse 'gh browse --help' for more information about browse\n")
165+
if len(arr) > 1 {
166+
if !isNumber(arr[1]) {
167+
return "", fmt.Errorf("invalid line number after colon\nUse 'gh browse --help' for more information about browse\n")
168+
}
169+
return arr[0] + "#L" + arr[1], nil
175170
}
176-
return arr, nil
171+
return arr[0], nil
177172
}
178173

179174
func isNumber(arg string) bool {

pkg/cmd/browse/browse_test.go

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -271,27 +271,25 @@ func Test_runBrowse(t *testing.T) {
271271
}
272272
}
273273

274-
func TestFileArgParsing(t *testing.T) {
274+
func Test_parseFileArg(t *testing.T) {
275275
tests := []struct {
276-
name string
277-
arg string
278-
errorExpected bool
279-
fileArg string
280-
lineArg string
281-
stderrExpected string
276+
name string
277+
arg string
278+
errorExpected bool
279+
expectedFileArg string
280+
stderrExpected string
282281
}{
283282
{
284-
name: "non line number",
285-
arg: "main.go",
286-
errorExpected: false,
287-
fileArg: "main.go",
283+
name: "non line number",
284+
arg: "main.go",
285+
errorExpected: false,
286+
expectedFileArg: "main.go",
288287
},
289288
{
290-
name: "line number",
291-
arg: "main.go:32",
292-
errorExpected: false,
293-
fileArg: "main.go",
294-
lineArg: "32",
289+
name: "line number",
290+
arg: "main.go:32",
291+
errorExpected: false,
292+
expectedFileArg: "main.go#L32",
295293
},
296294
{
297295
name: "non line number error",
@@ -301,15 +299,12 @@ func TestFileArgParsing(t *testing.T) {
301299
},
302300
}
303301
for _, tt := range tests {
304-
arr, err := parseFileArg(tt.arg)
302+
fileArg, err := parseFileArg(tt.arg)
305303
if tt.errorExpected {
306304
assert.Equal(t, err.Error(), tt.stderrExpected)
307305
} else {
308306
assert.Equal(t, err, nil)
309-
if len(arr) > 1 {
310-
assert.Equal(t, tt.lineArg, arr[1])
311-
}
312-
assert.Equal(t, tt.fileArg, arr[0])
307+
assert.Equal(t, tt.expectedFileArg, fileArg)
313308
}
314309
}
315310
}

0 commit comments

Comments
 (0)