diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2021-04-10 11:40:42 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-04-10 11:54:38 +1000 |
commit | e42e7e5cbd9d075ee24ae8f91ba9e12bdd42fafc (patch) | |
tree | 61d65a544c056b3bf0384cf6954b81b292eb4b07 /pkg/commands/rebasing_test.go | |
parent | 93fac1f3124f87009091230f61cc13b5e5473cb5 (diff) |
fix commit amend
Diffstat (limited to 'pkg/commands/rebasing_test.go')
-rw-r--r-- | pkg/commands/rebasing_test.go | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/pkg/commands/rebasing_test.go b/pkg/commands/rebasing_test.go new file mode 100644 index 000000000..7c4a954c9 --- /dev/null +++ b/pkg/commands/rebasing_test.go @@ -0,0 +1,96 @@ +package commands + +import ( + "os/exec" + "regexp" + "testing" + + "github.com/jesseduffield/lazygit/pkg/test" + "github.com/stretchr/testify/assert" +) + +// TestGitCommandRebaseBranch is a function. +func TestGitCommandRebaseBranch(t *testing.T) { + type scenario struct { + testName string + arg string + command func(string, ...string) *exec.Cmd + test func(error) + } + + scenarios := []scenario{ + { + "successful rebase", + "master", + test.CreateMockCommand(t, []*test.CommandSwapper{ + { + Expect: "git rebase --interactive --autostash --keep-empty master", + Replace: "echo", + }, + }), + func(err error) { + assert.NoError(t, err) + }, + }, + { + "unsuccessful rebase", + "master", + test.CreateMockCommand(t, []*test.CommandSwapper{ + { + Expect: "git rebase --interactive --autostash --keep-empty master", + Replace: "test", + }, + }), + func(err error) { + assert.Error(t, err) + }, + }, + } + + gitCmd := NewDummyGitCommand() + + for _, s := range scenarios { + t.Run(s.testName, func(t *testing.T) { + gitCmd.OSCommand.Command = s.command + s.test(gitCmd.RebaseBranch(s.arg)) + }) + } +} + +// TestGitCommandSkipEditorCommand confirms that SkipEditorCommand injects +// environment variables that suppress an interactive editor +func TestGitCommandSkipEditorCommand(t *testing.T) { + cmd := NewDummyGitCommand() + + cmd.OSCommand.SetBeforeExecuteCmd(func(cmd *exec.Cmd) { + test.AssertContainsMatch( + t, + cmd.Env, + regexp.MustCompile("^VISUAL="), + "expected VISUAL to be set for a non-interactive external command", + ) + + test.AssertContainsMatch( + t, + cmd.Env, + regexp.MustCompile("^EDITOR="), + "expected EDITOR to be set for a non-interactive external command", + ) + + test.AssertContainsMatch( + t, + cmd.Env, + regexp.MustCompile("^GIT_EDITOR="), + "expected GIT_EDITOR to be set for a non-interactive external command", + ) + + test.AssertContainsMatch( + t, + cmd.Env, + regexp.MustCompile("^LAZYGIT_CLIENT_COMMAND=EXIT_IMMEDIATELY$"), + "expected LAZYGIT_CLIENT_COMMAND to be set for a non-interactive external command", + ) + }) + + _ = cmd.runSkipEditorCommand("true") +} |