summaryrefslogtreecommitdiffstats
path: root/pkg/commands/rebasing_test.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-04-10 11:40:42 +1000
committerJesse Duffield <jessedduffield@gmail.com>2021-04-10 11:54:38 +1000
commite42e7e5cbd9d075ee24ae8f91ba9e12bdd42fafc (patch)
tree61d65a544c056b3bf0384cf6954b81b292eb4b07 /pkg/commands/rebasing_test.go
parent93fac1f3124f87009091230f61cc13b5e5473cb5 (diff)
fix commit amend
Diffstat (limited to 'pkg/commands/rebasing_test.go')
-rw-r--r--pkg/commands/rebasing_test.go96
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")
+}