mirror of https://gitlab.com/gitlab-org/cli.git
Merge branch 'main' into 'main'
chore: Sync canonical repo See merge request https://gitlab.com/gitlab-org/cli/-/merge_requests/1301 Merged-by: Gary Holtz <gholtz@gitlab.com> Approved-by: Gary Holtz <gholtz@gitlab.com> Co-authored-by: Jay McCure <jmccure@gitlab.com>
This commit is contained in:
commit
1f8464b403
|
@ -0,0 +1,111 @@
|
|||
package clone
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitlab.com/gitlab-org/cli/pkg/iostreams"
|
||||
|
||||
"gitlab.com/gitlab-org/cli/commands/cmdutils"
|
||||
"gitlab.com/gitlab-org/cli/internal/config"
|
||||
"gitlab.com/gitlab-org/cli/test"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func Test_repoClone_Integration(t *testing.T) {
|
||||
glTestHost := test.GetHostOrSkip(t)
|
||||
t.Setenv("GITLAB_HOST", glTestHost)
|
||||
|
||||
io, stdin, stdout, stderr := iostreams.Test()
|
||||
fac := &cmdutils.Factory{
|
||||
IO: io,
|
||||
Config: func() (config.Config, error) {
|
||||
return config.NewBlankConfig(), nil
|
||||
},
|
||||
}
|
||||
|
||||
cs, restore := test.InitCmdStubber()
|
||||
// git clone
|
||||
cs.Stub("")
|
||||
// git remote add
|
||||
cs.Stub("")
|
||||
defer restore()
|
||||
|
||||
cmd := NewCmdClone(fac, nil)
|
||||
out, err := runCommand(cmd, "test", stdin, stdout, stderr)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %q", err)
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "", out.String())
|
||||
assert.Equal(t, "", out.Stderr())
|
||||
assert.Equal(t, 1, cs.Count)
|
||||
assert.Equal(t, "git clone git@gitlab.com:clemsbot/test.git", strings.Join(cs.Calls[0].Args, " "))
|
||||
}
|
||||
|
||||
func Test_repoClone_group_Integration(t *testing.T) {
|
||||
names := []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
repoCloneTest(t, names, urls, 0, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_single_Integration(t *testing.T) {
|
||||
names := []string{"glab-cli/test"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git"}
|
||||
repoCloneTest(t, names, urls, 1, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_paginate_Integration(t *testing.T) {
|
||||
names := []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
repoCloneTest(t, names, urls, 1, true)
|
||||
}
|
||||
|
||||
func repoCloneTest(t *testing.T, expectedRepoNames []string, expectedRepoUrls []string, perPage int, paginate bool) {
|
||||
assert.Equal(t, len(expectedRepoNames), len(expectedRepoUrls))
|
||||
|
||||
glTestHost := test.GetHostOrSkip(t)
|
||||
t.Setenv("GITLAB_HOST", glTestHost)
|
||||
|
||||
io, stdin, stdout, stderr := iostreams.Test()
|
||||
fac := &cmdutils.Factory{
|
||||
IO: io,
|
||||
Config: func() (config.Config, error) {
|
||||
return config.NewBlankConfig(), nil
|
||||
},
|
||||
}
|
||||
|
||||
cs, restore := test.InitCmdStubber()
|
||||
for i := 0; i < len(expectedRepoUrls); i++ {
|
||||
cs.Stub("")
|
||||
}
|
||||
|
||||
defer restore()
|
||||
|
||||
cmd := NewCmdClone(fac, nil)
|
||||
cli := "-g glab-cli"
|
||||
if perPage != 0 {
|
||||
cli += fmt.Sprintf(" --per-page %d", perPage)
|
||||
}
|
||||
if paginate {
|
||||
cli += " --paginate"
|
||||
}
|
||||
|
||||
// TODO: stub api.ListGroupProjects endpoint
|
||||
out, err := runCommand(cmd, cli, stdin, stdout, stderr)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %q", err)
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "✓ "+strings.Join(expectedRepoNames, "\n✓ ")+"\n", out.String())
|
||||
assert.Equal(t, "", out.Stderr())
|
||||
assert.Equal(t, len(expectedRepoUrls), cs.Count)
|
||||
|
||||
for i := 0; i < len(expectedRepoUrls); i++ {
|
||||
assert.Equal(t, fmt.Sprintf("git clone %s", expectedRepoUrls[i]), strings.Join(cs.Calls[i].Args, " "))
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ package clone
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitlab.com/gitlab-org/cli/pkg/iostreams"
|
||||
|
@ -13,7 +11,6 @@ import (
|
|||
"github.com/google/shlex"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gitlab.com/gitlab-org/cli/commands/cmdutils"
|
||||
"gitlab.com/gitlab-org/cli/internal/config"
|
||||
"gitlab.com/gitlab-org/cli/test"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -145,107 +142,3 @@ func TestNewCmdClone(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_repoClone(t *testing.T) {
|
||||
defer config.StubConfig(`
|
||||
hosts:
|
||||
gitlab.com:
|
||||
token: qRC87Xg9Wd46RhB8J8sp
|
||||
`, "")()
|
||||
t.Setenv("GITLAB_TOKEN", "")
|
||||
|
||||
io, stdin, stdout, stderr := iostreams.Test()
|
||||
fac := &cmdutils.Factory{
|
||||
IO: io,
|
||||
Config: func() (config.Config, error) {
|
||||
return config.ParseConfig("config.yml")
|
||||
},
|
||||
}
|
||||
|
||||
cs, restore := test.InitCmdStubber()
|
||||
// git clone
|
||||
cs.Stub("")
|
||||
// git remote add
|
||||
cs.Stub("")
|
||||
defer restore()
|
||||
|
||||
cmd := NewCmdClone(fac, nil)
|
||||
out, err := runCommand(cmd, "test", stdin, stdout, stderr)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %q", err)
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "", out.String())
|
||||
assert.Equal(t, "", out.Stderr())
|
||||
assert.Equal(t, 1, cs.Count)
|
||||
assert.Equal(t, "git clone git@gitlab.com:clemsbot/test.git", strings.Join(cs.Calls[0].Args, " "))
|
||||
}
|
||||
|
||||
func Test_repoClone_group(t *testing.T) {
|
||||
names := []string{"cli-automated-testing/test", "cli-automated-testing/homebrew-testing"}
|
||||
urls := []string{"git@gitlab.com:cli-automated-testing/test.git", "git@gitlab.com:cli-automated-testing/homebrew-testing.git"}
|
||||
repoCloneTest(t, names, urls, 0, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_single(t *testing.T) {
|
||||
names := []string{"cli-automated-testing/test"}
|
||||
urls := []string{"git@gitlab.com:cli-automated-testing/test.git"}
|
||||
repoCloneTest(t, names, urls, 1, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_paginate(t *testing.T) {
|
||||
names := []string{"cli-automated-testing/test", "cli-automated-testing/homebrew-testing"}
|
||||
urls := []string{"git@gitlab.com:cli-automated-testing/test.git", "git@gitlab.com:cli-automated-testing/homebrew-testing.git"}
|
||||
repoCloneTest(t, names, urls, 1, true)
|
||||
}
|
||||
|
||||
func repoCloneTest(t *testing.T, expectedRepoNames []string, expectedRepoUrls []string, perPage int, paginate bool) {
|
||||
assert.Equal(t, len(expectedRepoNames), len(expectedRepoUrls))
|
||||
|
||||
defer config.StubConfig(`
|
||||
hosts:
|
||||
gitlab.com:
|
||||
token: qRC87Xg9Wd46RhB8J8sp
|
||||
`, "")()
|
||||
t.Setenv("GITLAB_TOKEN", "")
|
||||
|
||||
io, stdin, stdout, stderr := iostreams.Test()
|
||||
fac := &cmdutils.Factory{
|
||||
IO: io,
|
||||
Config: func() (config.Config, error) {
|
||||
return config.ParseConfig("config.yml")
|
||||
},
|
||||
}
|
||||
|
||||
cs, restore := test.InitCmdStubber()
|
||||
for i := 0; i < len(expectedRepoUrls); i++ {
|
||||
cs.Stub("")
|
||||
}
|
||||
|
||||
defer restore()
|
||||
|
||||
cmd := NewCmdClone(fac, nil)
|
||||
cli := "-g cli-automated-testing"
|
||||
if perPage != 0 {
|
||||
cli += fmt.Sprintf(" --per-page %d", perPage)
|
||||
}
|
||||
if paginate {
|
||||
cli += " --paginate"
|
||||
}
|
||||
|
||||
// TODO: stub api.ListGroupProjects endpoint
|
||||
out, err := runCommand(cmd, cli, stdin, stdout, stderr)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %q", err)
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, "✓ "+strings.Join(expectedRepoNames, "\n✓ ")+"\n", out.String())
|
||||
assert.Equal(t, "", out.Stderr())
|
||||
assert.Equal(t, len(expectedRepoUrls), cs.Count)
|
||||
|
||||
for i := 0; i < len(expectedRepoUrls); i++ {
|
||||
assert.Equal(t, fmt.Sprintf("git clone %s", expectedRepoUrls[i]), strings.Join(cs.Calls[i].Args, " "))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue