149 lines
3.4 KiB
Go
149 lines
3.4 KiB
Go
package command
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/cli/cli/context"
|
|
"github.com/cli/cli/utils"
|
|
)
|
|
|
|
func TestRepoClone(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
args string
|
|
want string
|
|
}{
|
|
{
|
|
name: "shorthand",
|
|
args: "repo clone OWNER/REPO",
|
|
want: "git clone https://github.com/OWNER/REPO.git",
|
|
},
|
|
{
|
|
name: "clone arguments",
|
|
args: "repo clone OWNER/REPO -- -o upstream --depth 1",
|
|
want: "git clone -o upstream --depth 1 https://github.com/OWNER/REPO.git",
|
|
},
|
|
{
|
|
name: "HTTPS URL",
|
|
args: "repo clone https://github.com/OWNER/REPO",
|
|
want: "git clone https://github.com/OWNER/REPO",
|
|
},
|
|
{
|
|
name: "SSH URL",
|
|
args: "repo clone git@github.com:OWNER/REPO.git",
|
|
want: "git clone git@github.com:OWNER/REPO.git",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var seenCmd *exec.Cmd
|
|
restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable {
|
|
seenCmd = cmd
|
|
return &outputStub{}
|
|
})
|
|
defer restoreCmd()
|
|
|
|
output, err := RunCommand(repoViewCmd, tt.args)
|
|
if err != nil {
|
|
t.Fatalf("error running command `repo clone`: %v", err)
|
|
}
|
|
|
|
eq(t, output.String(), "")
|
|
eq(t, output.Stderr(), "")
|
|
|
|
if seenCmd == nil {
|
|
t.Fatal("expected a command to run")
|
|
}
|
|
eq(t, strings.Join(seenCmd.Args, " "), tt.want)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRepoView(t *testing.T) {
|
|
initBlankContext("OWNER/REPO", "master")
|
|
http := initFakeHTTP()
|
|
http.StubRepoResponse("OWNER", "REPO")
|
|
|
|
var seenCmd *exec.Cmd
|
|
restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable {
|
|
seenCmd = cmd
|
|
return &outputStub{}
|
|
})
|
|
defer restoreCmd()
|
|
|
|
output, err := RunCommand(repoViewCmd, "repo view")
|
|
if err != nil {
|
|
t.Errorf("error running command `repo view`: %v", err)
|
|
}
|
|
|
|
eq(t, output.String(), "")
|
|
eq(t, output.Stderr(), "Opening github.com/OWNER/REPO 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")
|
|
}
|
|
|
|
func TestRepoView_ownerRepo(t *testing.T) {
|
|
ctx := context.NewBlank()
|
|
ctx.SetBranch("master")
|
|
initContext = func() context.Context {
|
|
return ctx
|
|
}
|
|
initFakeHTTP()
|
|
|
|
var seenCmd *exec.Cmd
|
|
restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable {
|
|
seenCmd = cmd
|
|
return &outputStub{}
|
|
})
|
|
defer restoreCmd()
|
|
|
|
output, err := RunCommand(repoViewCmd, "repo view cli/cli")
|
|
if err != nil {
|
|
t.Errorf("error running command `repo view`: %v", err)
|
|
}
|
|
|
|
eq(t, output.String(), "")
|
|
eq(t, output.Stderr(), "Opening github.com/cli/cli 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/cli/cli")
|
|
}
|
|
|
|
func TestRepoView_fullURL(t *testing.T) {
|
|
ctx := context.NewBlank()
|
|
ctx.SetBranch("master")
|
|
initContext = func() context.Context {
|
|
return ctx
|
|
}
|
|
initFakeHTTP()
|
|
|
|
var seenCmd *exec.Cmd
|
|
restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable {
|
|
seenCmd = cmd
|
|
return &outputStub{}
|
|
})
|
|
defer restoreCmd()
|
|
|
|
output, err := RunCommand(repoViewCmd, "repo view https://github.com/cli/cli")
|
|
if err != nil {
|
|
t.Errorf("error running command `repo view`: %v", err)
|
|
}
|
|
|
|
eq(t, output.String(), "")
|
|
eq(t, output.Stderr(), "Opening github.com/cli/cli 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/cli/cli")
|
|
}
|