diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2021-10-19 22:41:19 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-10-20 09:29:17 +1100 |
commit | 5ee559b89660cb850040ce41fee242514a09ba8b (patch) | |
tree | dbcbb0d5452294bb813ec0c002ca47bd86f5bed3 /pkg/commands/sync_test.go | |
parent | ca7252ef8ee26affdc2c74f05c9c20196a8d571b (diff) |
fix issue where upstream origin and branch were quoted together
fix issue where upstream origin and branch were quoted together
Diffstat (limited to 'pkg/commands/sync_test.go')
-rw-r--r-- | pkg/commands/sync_test.go | 168 |
1 files changed, 160 insertions, 8 deletions
diff --git a/pkg/commands/sync_test.go b/pkg/commands/sync_test.go index 9f7ed1b01..2f67f91fc 100644 --- a/pkg/commands/sync_test.go +++ b/pkg/commands/sync_test.go @@ -14,10 +14,14 @@ func TestGitCommandPush(t *testing.T) { testName string getGitConfigValue func(string) (string, error) command func(string, ...string) *exec.Cmd - forcePush bool + opts PushOpts test func(error) } + prompt := func(passOrUname string) string { + return "\n" + } + scenarios := []scenario{ { "Push with force disabled, follow-tags on", @@ -30,7 +34,7 @@ func TestGitCommandPush(t *testing.T) { return secureexec.Command("echo") }, - false, + PushOpts{Force: false, PromptUserForCredential: prompt}, func(err error) { assert.NoError(t, err) }, @@ -46,7 +50,7 @@ func TestGitCommandPush(t *testing.T) { return secureexec.Command("echo") }, - true, + PushOpts{Force: true, PromptUserForCredential: prompt}, func(err error) { assert.NoError(t, err) }, @@ -62,7 +66,7 @@ func TestGitCommandPush(t *testing.T) { return secureexec.Command("echo") }, - false, + PushOpts{Force: false, PromptUserForCredential: prompt}, func(err error) { assert.NoError(t, err) }, @@ -77,11 +81,161 @@ func TestGitCommandPush(t *testing.T) { assert.EqualValues(t, []string{"push", "--follow-tags"}, args) return secureexec.Command("test") }, - false, + PushOpts{Force: false, PromptUserForCredential: prompt}, func(err error) { assert.Error(t, err) }, }, + { + "Push with force disabled, follow-tags off, upstream supplied", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: false, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + }, + func(err error) { + assert.NoError(t, err) + }, + }, + { + "Push with force disabled, follow-tags off, setting upstream", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "--set-upstream", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: false, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + SetUpstream: true, + }, + func(err error) { + assert.NoError(t, err) + }, + }, + { + "Push with force enabled, follow-tags off, setting upstream", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "--force-with-lease", "--set-upstream", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: true, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + SetUpstream: true, + }, + func(err error) { + assert.NoError(t, err) + }, + }, + { + "Push with remote branch but no origin", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + return nil + }, + PushOpts{ + Force: true, + UpstreamRemote: "", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + SetUpstream: true, + }, + func(err error) { + assert.Error(t, err) + assert.EqualValues(t, "Must specify a remote if specifying a branch", err.Error()) + }, + }, + { + "Push with force disabled, follow-tags off, upstream supplied", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: false, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + }, + func(err error) { + assert.NoError(t, err) + }, + }, + { + "Push with force disabled, follow-tags off, setting upstream", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "--set-upstream", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: false, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + SetUpstream: true, + }, + func(err error) { + assert.NoError(t, err) + }, + }, + { + "Push with force enabled, follow-tags off, setting upstream", + func(string) (string, error) { + return "false", nil + }, + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"push", "--force-with-lease", "--set-upstream", "origin", "master"}, args) + + return secureexec.Command("echo") + }, + PushOpts{ + Force: true, + UpstreamRemote: "origin", + UpstreamBranch: "master", + PromptUserForCredential: prompt, + SetUpstream: true, + }, + func(err error) { + assert.NoError(t, err) + }, + }, } for _, s := range scenarios { @@ -89,9 +243,7 @@ func TestGitCommandPush(t *testing.T) { gitCmd := NewDummyGitCommand() gitCmd.OSCommand.Command = s.command gitCmd.getGitConfigValue = s.getGitConfigValue - err := gitCmd.Push("test", s.forcePush, "", "", func(passOrUname string) string { - return "\n" - }) + err := gitCmd.Push(s.opts) s.test(err) }) } |