(t *testing.T)
| 172 | } |
| 173 | |
| 174 | func Test_RepoView_Web(t *testing.T) { |
| 175 | tests := []struct { |
| 176 | name string |
| 177 | stdoutTTY bool |
| 178 | wantStderr string |
| 179 | wantBrowse string |
| 180 | }{ |
| 181 | { |
| 182 | name: "tty", |
| 183 | stdoutTTY: true, |
| 184 | wantStderr: "Opening https://github.com/OWNER/REPO in your browser.\n", |
| 185 | wantBrowse: "https://github.com/OWNER/REPO", |
| 186 | }, |
| 187 | { |
| 188 | name: "nontty", |
| 189 | stdoutTTY: false, |
| 190 | wantStderr: "", |
| 191 | wantBrowse: "https://github.com/OWNER/REPO", |
| 192 | }, |
| 193 | } |
| 194 | |
| 195 | for _, tt := range tests { |
| 196 | reg := &httpmock.Registry{} |
| 197 | reg.StubRepoInfoResponse("OWNER", "REPO", "main") |
| 198 | |
| 199 | browser := &browser.Stub{} |
| 200 | opts := &ViewOptions{ |
| 201 | Web: true, |
| 202 | HttpClient: func() (*http.Client, error) { |
| 203 | return &http.Client{Transport: reg}, nil |
| 204 | }, |
| 205 | BaseRepo: func() (ghrepo.Interface, error) { |
| 206 | return ghrepo.New("OWNER", "REPO"), nil |
| 207 | }, |
| 208 | Browser: browser, |
| 209 | } |
| 210 | |
| 211 | io, _, stdout, stderr := iostreams.Test() |
| 212 | |
| 213 | opts.IO = io |
| 214 | |
| 215 | t.Run(tt.name, func(t *testing.T) { |
| 216 | io.SetStdoutTTY(tt.stdoutTTY) |
| 217 | |
| 218 | _, teardown := run.Stub() |
| 219 | defer teardown(t) |
| 220 | |
| 221 | if err := viewRun(opts); err != nil { |
| 222 | t.Errorf("viewRun() error = %v", err) |
| 223 | } |
| 224 | assert.Equal(t, "", stdout.String()) |
| 225 | assert.Equal(t, tt.wantStderr, stderr.String()) |
| 226 | reg.Verify(t) |
| 227 | browser.Verify(t, tt.wantBrowse) |
| 228 | }) |
| 229 | } |
| 230 | } |
| 231 |
nothing calls this directly
no test coverage detected