Skip to content

Commit 2624ed9

Browse files
committed
Merge remote-tracking branch 'origin' into bump-survey
2 parents 079542d + 4a7b130 commit 2624ed9

File tree

30 files changed

+1189
-340
lines changed

30 files changed

+1189
-340
lines changed

.github/workflows/releases.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- name: Run GoReleaser
2424
uses: goreleaser/goreleaser-action@v2
2525
with:
26-
version: v0.169.0 # pinning bc our config breaks on latest
26+
version: v0.172.1 # pinning to prevent breaking on latest
2727
args: release --release-notes=CHANGELOG.md
2828
env:
2929
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

.goreleaser.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,6 @@ nfpms:
6464
formats:
6565
- deb
6666
- rpm
67-
files:
68-
"./share/man/man1/gh*.1": "/usr/share/man/man1"
67+
contents:
68+
- src: "/share/man/man1/gh*.1"
69+
dst: "/usr/share/man/man1"

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ require (
1313
github.com/cpuguy83/go-md2man/v2 v2.0.0
1414
github.com/creack/pty v1.1.13
1515
github.com/gabriel-vasile/mimetype v1.1.2
16-
github.com/google/go-cmp v0.5.2
16+
github.com/google/go-cmp v0.5.4
1717
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
1818
github.com/hashicorp/go-version v1.2.1
1919
github.com/henvic/httpretty v0.0.6
20-
github.com/itchyny/gojq v0.12.1
20+
github.com/itchyny/gojq v0.12.4
2121
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
2222
github.com/mattn/go-colorable v0.1.8
23-
github.com/mattn/go-isatty v0.0.12
23+
github.com/mattn/go-isatty v0.0.13
2424
github.com/mattn/go-runewidth v0.0.10
2525
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d
2626
github.com/mitchellh/go-homedir v1.1.0
@@ -33,7 +33,7 @@ require (
3333
github.com/stretchr/testify v1.6.1
3434
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897
3535
golang.org/x/sync v0.0.0-20190423024810-112230192c58
36-
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44
36+
golang.org/x/sys v0.0.0-20210601080250-7ecdf8ef093b
3737
golang.org/x/term v0.0.0-20210503060354-a79de5458b56
3838
golang.org/x/text v0.3.4 // indirect
3939
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b

go.sum

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z
9999
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
100100
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
101101
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
102-
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
103-
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
102+
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
103+
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
104104
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
105105
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
106106
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -145,13 +145,11 @@ github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174 h1:WlZsjVhE8Af9IcZDG
145145
github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A=
146146
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
147147
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
148-
github.com/itchyny/astgen-go v0.0.0-20210113000433-0da0671862a3 h1:l7vogWrq+zj8v5t/G69/eT13nAGs2H7cq+CI2nlnKdk=
149-
github.com/itchyny/astgen-go v0.0.0-20210113000433-0da0671862a3/go.mod h1:296z3W7Xsrp2mlIY88ruDKscuvrkL6zXCNRtaYVshzw=
150148
github.com/itchyny/go-flags v1.5.0/go.mod h1:lenkYuCobuxLBAd/HGFE4LRoW8D3B6iXRQfWYJ+MNbA=
151-
github.com/itchyny/gojq v0.12.1 h1:pQJrG8LXgEbZe9hvpfjKg7UlBfieQQydIw3YQq+7WIA=
152-
github.com/itchyny/gojq v0.12.1/go.mod h1:Y5Lz0qoT54ii+ucY/K3yNDy19qzxZvWNBMBpKUDQR/4=
153-
github.com/itchyny/timefmt-go v0.1.1 h1:rLpnm9xxb39PEEVzO0n4IRp0q6/RmBc7Dy/rE4HrA0U=
154-
github.com/itchyny/timefmt-go v0.1.1/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A=
149+
github.com/itchyny/gojq v0.12.4 h1:8zgOZWMejEWCLjbF/1mWY7hY7QEARm7dtuhC6Bp4R8o=
150+
github.com/itchyny/gojq v0.12.4/go.mod h1:EQUSKgW/YaOxmXpAwGiowFDO4i2Rmtk5+9dFyeiymAg=
151+
github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU=
152+
github.com/itchyny/timefmt-go v0.1.3/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A=
155153
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
156154
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
157155
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
@@ -180,8 +178,9 @@ github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ
180178
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
181179
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
182180
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
183-
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
184181
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
182+
github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA=
183+
github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
185184
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
186185
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
187186
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
@@ -354,10 +353,10 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
354353
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
355354
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
356355
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
357-
golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
358356
golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
359-
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 h1:Bli41pIlzTzf3KEY06n+xnzK/BESIg2ze4Pgfh/aI8c=
360357
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
358+
golang.org/x/sys v0.0.0-20210601080250-7ecdf8ef093b h1:qh4f65QIVFjq9eBURLEYWqaEXmOyqdUyiBSgaXWccWk=
359+
golang.org/x/sys v0.0.0-20210601080250-7ecdf8ef093b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
361360
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
362361
golang.org/x/term v0.0.0-20210503060354-a79de5458b56 h1:b8jxX3zqjpqb2LklXPzKSGJhzyxCOZSz8ncv8Nv+y7w=
363362
golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY=

internal/config/config_file.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ func ConfigDir() string {
4040
path = filepath.Join(d, ".config", "gh")
4141
}
4242

43-
// If the path does not exist try migrating config from default paths
44-
if !dirExists(path) {
43+
// If the path does not exist and the GH_CONFIG_DIR flag is not set try
44+
// migrating config from default paths.
45+
if !dirExists(path) && os.Getenv(GH_CONFIG_DIR) == "" {
4546
_ = autoMigrateConfigDir(path)
4647
}
4748

internal/config/config_map.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,18 @@ func (cm *ConfigMap) FindEntry(key string) (ce *ConfigEntry, err error) {
6868

6969
ce = &ConfigEntry{}
7070

71-
topLevelKeys := cm.Root.Content
72-
for i, v := range topLevelKeys {
71+
// Content slice goes [key1, value1, key2, value2, ...]
72+
topLevelPairs := cm.Root.Content
73+
for i, v := range topLevelPairs {
74+
// Skip every other slice item since we only want to check against keys
75+
if i%2 != 0 {
76+
continue
77+
}
7378
if v.Value == key {
7479
ce.KeyNode = v
7580
ce.Index = i
76-
if i+1 < len(topLevelKeys) {
77-
ce.ValueNode = topLevelKeys[i+1]
81+
if i+1 < len(topLevelPairs) {
82+
ce.ValueNode = topLevelPairs[i+1]
7883
}
7984
return
8085
}

internal/config/config_map_test.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package config
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"gopkg.in/yaml.v3"
9+
)
10+
11+
func TestFindEntry(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
key string
15+
output string
16+
wantErr bool
17+
}{
18+
{
19+
name: "find key",
20+
key: "valid",
21+
output: "present",
22+
},
23+
{
24+
name: "find key that is not present",
25+
key: "invalid",
26+
wantErr: true,
27+
},
28+
{
29+
name: "find key with blank value",
30+
key: "blank",
31+
output: "",
32+
},
33+
{
34+
name: "find key that has same content as a value",
35+
key: "same",
36+
output: "logical",
37+
},
38+
}
39+
40+
for _, tt := range tests {
41+
cm := ConfigMap{Root: testYaml()}
42+
t.Run(tt.name, func(t *testing.T) {
43+
out, err := cm.FindEntry(tt.key)
44+
if tt.wantErr {
45+
assert.EqualError(t, err, "not found")
46+
return
47+
}
48+
assert.NoError(t, err)
49+
fmt.Println(out)
50+
assert.Equal(t, tt.output, out.ValueNode.Value)
51+
})
52+
}
53+
}
54+
55+
func testYaml() *yaml.Node {
56+
var root yaml.Node
57+
var data = `
58+
valid: present
59+
erroneous: same
60+
blank:
61+
same: logical
62+
`
63+
_ = yaml.Unmarshal([]byte(data), &root)
64+
return root.Content[0]
65+
}

pkg/cmd/alias/set/set.go

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,48 +34,36 @@ func NewCmdSet(f *cmdutil.Factory, runF func(*SetOptions) error) *cobra.Command
3434
Use: "set <alias> <expansion>",
3535
Short: "Create a shortcut for a gh command",
3636
Long: heredoc.Doc(`
37-
Declare a word as a command alias that will expand to the specified command(s).
37+
Define a word that will expand to a full gh command when invoked.
3838
39-
The expansion may specify additional arguments and flags. If the expansion
40-
includes positional placeholders such as '$1', '$2', etc., any extra arguments
41-
that follow the invocation of an alias will be inserted appropriately.
42-
Reads from STDIN if '-' is specified as the expansion parameter. This can be useful
43-
for commands with mixed quotes or multiple lines.
39+
The expansion may specify additional arguments and flags. If the expansion includes
40+
positional placeholders such as "$1", extra arguments that follow the alias will be
41+
inserted appropriately. Otherwise, extra arguments will be appended to the expanded
42+
command.
4443
45-
If '--shell' is specified, the alias will be run through a shell interpreter (sh). This allows you
46-
to compose commands with "|" or redirect with ">". Note that extra arguments following the alias
47-
will not be automatically passed to the expanded expression. To have a shell alias receive
48-
arguments, you must explicitly accept them using "$1", "$2", etc., or "$@" to accept all of them.
44+
Use "-" as expansion argument to read the expansion string from standard input. This
45+
is useful to avoid quoting issues when defining expansions.
4946
50-
Platform note: on Windows, shell aliases are executed via "sh" as installed by Git For Windows. If
51-
you have installed git on Windows in some other way, shell aliases may not work for you.
52-
53-
Quotes must always be used when defining a command as in the examples unless you pass '-'
54-
as the expansion parameter and pipe your command to 'gh alias set'.
47+
If the expansion starts with "!" or if "--shell" was given, the expansion is a shell
48+
expression that will be evaluated through the "sh" interpreter when the alias is
49+
invoked. This allows for chaining multiple commands via piping and redirection.
5550
`),
5651
Example: heredoc.Doc(`
52+
# note: Command Prompt on Windows requires using double quotes for arguments
5753
$ gh alias set pv 'pr view'
58-
$ gh pv -w 123
59-
#=> gh pr view -w 123
60-
61-
$ gh alias set bugs 'issue list --label="bugs"'
54+
$ gh pv -w 123 #=> gh pr view -w 123
55+
56+
$ gh alias set bugs 'issue list --label=bugs'
6257
$ gh bugs
6358
6459
$ gh alias set homework 'issue list --assignee @me'
6560
$ gh homework
6661
6762
$ gh alias set epicsBy 'issue list --author="$1" --label="epic"'
68-
$ gh epicsBy vilmibm
69-
#=> gh issue list --author="vilmibm" --label="epic"
70-
71-
$ gh alias set --shell igrep 'gh issue list --label="$1" | grep $2'
72-
$ gh igrep epic foo
73-
#=> gh issue list --label="epic" | grep "foo"
63+
$ gh epicsBy vilmibm #=> gh issue list --author="vilmibm" --label="epic"
7464
75-
# users.txt contains multiline 'api graphql -F name="$1" ...' with mixed quotes
76-
$ gh alias set users - < users.txt
77-
$ gh users octocat
78-
#=> gh api graphql -F name="octocat" ...
65+
$ gh alias set --shell igrep 'gh issue list --label="$1" | grep "$2"'
66+
$ gh igrep epic foo #=> gh issue list --label="epic" | grep "foo"
7967
`),
8068
Args: cobra.ExactArgs(2),
8169
RunE: func(cmd *cobra.Command, args []string) error {

pkg/cmd/browse/browse.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ type BrowseOptions struct {
2626

2727
SelectorArg string
2828

29-
Branch string
30-
ProjectsFlag bool
31-
SettingsFlag bool
32-
WikiFlag bool
29+
Branch string
30+
ProjectsFlag bool
31+
SettingsFlag bool
32+
WikiFlag bool
33+
NoBrowserFlag bool
3334
}
3435

3536
func NewCmdBrowse(f *cmdutil.Factory, runF func(*BrowseOptions) error) *cobra.Command {
@@ -99,6 +100,7 @@ func NewCmdBrowse(f *cmdutil.Factory, runF func(*BrowseOptions) error) *cobra.Co
99100
cmd.Flags().BoolVarP(&opts.ProjectsFlag, "projects", "p", false, "Open repository projects")
100101
cmd.Flags().BoolVarP(&opts.WikiFlag, "wiki", "w", false, "Open repository wiki")
101102
cmd.Flags().BoolVarP(&opts.SettingsFlag, "settings", "s", false, "Open repository settings")
103+
cmd.Flags().BoolVarP(&opts.NoBrowserFlag, "no-browser", "n", false, "Print destination URL instead of opening the browser")
102104
cmd.Flags().StringVarP(&opts.Branch, "branch", "b", "", "Select another branch by passing in the branch name")
103105

104106
return cmd
@@ -151,10 +153,15 @@ func runBrowse(opts *BrowseOptions) error {
151153
}
152154
}
153155

154-
if opts.IO.IsStdoutTTY() {
155-
fmt.Fprintf(opts.IO.Out, "now opening %s in browser\n", url)
156+
if opts.NoBrowserFlag {
157+
fmt.Fprintf(opts.IO.Out, "%s\n", url)
158+
return nil
159+
} else {
160+
if opts.IO.IsStdoutTTY() {
161+
fmt.Fprintf(opts.IO.Out, "now opening %s in browser\n", url)
162+
}
163+
return opts.Browser.Browse(url)
156164
}
157-
return opts.Browser.Browse(url)
158165
}
159166

160167
func parseFileArg(fileArg string) (string, error) {

pkg/cmd/browse/browse_test.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package browse
22

33
import (
4+
"fmt"
45
"net/http"
56
"testing"
67

@@ -49,6 +50,14 @@ func TestNewCmdBrowse(t *testing.T) {
4950
},
5051
wantsErr: false,
5152
},
53+
{
54+
name: "no browser flag",
55+
cli: "--no-browser",
56+
wants: BrowseOptions{
57+
NoBrowserFlag: true,
58+
},
59+
wantsErr: false,
60+
},
5261
{
5362
name: "branch flag",
5463
cli: "--branch main",
@@ -118,6 +127,7 @@ func TestNewCmdBrowse(t *testing.T) {
118127
assert.Equal(t, tt.wants.SelectorArg, opts.SelectorArg)
119128
assert.Equal(t, tt.wants.ProjectsFlag, opts.ProjectsFlag)
120129
assert.Equal(t, tt.wants.WikiFlag, opts.WikiFlag)
130+
assert.Equal(t, tt.wants.NoBrowserFlag, opts.NoBrowserFlag)
121131
assert.Equal(t, tt.wants.SettingsFlag, opts.SettingsFlag)
122132
})
123133
}
@@ -233,6 +243,17 @@ func Test_runBrowse(t *testing.T) {
233243
wantsErr: false,
234244
expectedURL: "https://github.com/github/ThankYouGitHub/tree/first-browse-pull/browse.go#L32",
235245
},
246+
{
247+
name: "no browser with branch file and line number",
248+
opts: BrowseOptions{
249+
Branch: "3-0-stable",
250+
SelectorArg: "init.rb:6",
251+
NoBrowserFlag: true,
252+
},
253+
baseRepo: ghrepo.New("mislav", "will_paginate"),
254+
wantsErr: false,
255+
expectedURL: "https://github.com/mislav/will_paginate/tree/3-0-stable/init.rb#L6",
256+
},
236257
}
237258

238259
for _, tt := range tests {
@@ -263,9 +284,15 @@ func Test_runBrowse(t *testing.T) {
263284
assert.NoError(t, err)
264285
}
265286

266-
assert.Equal(t, "", stdout.String())
267-
assert.Equal(t, "", stderr.String())
268-
browser.Verify(t, tt.expectedURL)
287+
if opts.NoBrowserFlag {
288+
assert.Equal(t, fmt.Sprintf("%s\n", tt.expectedURL), stdout.String())
289+
assert.Equal(t, "", stderr.String())
290+
browser.Verify(t, "")
291+
} else {
292+
assert.Equal(t, "", stdout.String())
293+
assert.Equal(t, "", stderr.String())
294+
browser.Verify(t, tt.expectedURL)
295+
}
269296
})
270297
}
271298
}

0 commit comments

Comments
 (0)