diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2021-12-31 10:24:53 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-01-04 09:07:15 +1100 |
commit | ad9b2df104737499ae8c2f7099f12d6c3a129628 (patch) | |
tree | c78eb0f9a39a6bea283c714967c070d0980dabdc /pkg/commands/rebasing_test.go | |
parent | 9c4a8196834d40c9b054d957dcfb69851edcb61f (diff) |
more test refactoring
Diffstat (limited to 'pkg/commands/rebasing_test.go')
-rw-r--r-- | pkg/commands/rebasing_test.go | 105 |
1 files changed, 43 insertions, 62 deletions
diff --git a/pkg/commands/rebasing_test.go b/pkg/commands/rebasing_test.go index af786f515..3091da9ee 100644 --- a/pkg/commands/rebasing_test.go +++ b/pkg/commands/rebasing_test.go @@ -1,95 +1,76 @@ package commands import ( - "os/exec" + "regexp" "testing" - "github.com/jesseduffield/lazygit/pkg/test" + "github.com/go-errors/errors" + "github.com/jesseduffield/lazygit/pkg/commands/oscommands" + "github.com/jesseduffield/lazygit/pkg/utils" "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 + runner *oscommands.FakeCmdObjRunner 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) { + testName: "successful rebase", + arg: "master", + runner: oscommands.NewFakeRunner(t). + Expect(`git rebase --interactive --autostash --keep-empty master`, "", nil), + test: 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) { + testName: "unsuccessful rebase", + arg: "master", + runner: oscommands.NewFakeRunner(t). + Expect(`git rebase --interactive --autostash --keep-empty master`, "", errors.New("error")), + 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 + gitCmd := NewDummyGitCommandWithRunner(s.runner) 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(cmdObj oscommands.ICmdObj) { -// test.AssertContainsMatch( -// t, -// cmdObj.GetEnvVars(), -// regexp.MustCompile("^VISUAL="), -// "expected VISUAL to be set for a non-interactive external command", -// ) - -// test.AssertContainsMatch( -// t, -// cmdObj.GetEnvVars(), -// regexp.MustCompile("^EDITOR="), -// "expected EDITOR to be set for a non-interactive external command", -// ) - -// test.AssertContainsMatch( -// t, -// cmdObj.GetEnvVars(), -// regexp.MustCompile("^GIT_EDITOR="), -// "expected GIT_EDITOR to be set for a non-interactive external command", -// ) - -// test.AssertContainsMatch( -// t, -// cmdObj.GetEnvVars(), -// regexp.MustCompile("^LAZYGIT_CLIENT_COMMAND=EXIT_IMMEDIATELY$"), -// "expected LAZYGIT_CLIENT_COMMAND to be set for a non-interactive external command", -// ) -// }) - -// _ = cmd.runSkipEditorCommand("true") -// } +// TestGitCommandSkipEditorCommand confirms that SkipEditorCommand injects +// environment variables that suppress an interactive editor +func TestGitCommandSkipEditorCommand(t *testing.T) { + commandStr := "git blah" + runner := oscommands.NewFakeRunner(t).ExpectFunc(func(cmdObj oscommands.ICmdObj) (string, error) { + assert.Equal(t, commandStr, cmdObj.ToString()) + envVars := cmdObj.GetEnvVars() + for _, regexStr := range []string{ + `^VISUAL=.*$`, + `^EDITOR=.*$`, + `^GIT_EDITOR=.*$`, + "^LAZYGIT_CLIENT_COMMAND=EXIT_IMMEDIATELY$", + } { + foundMatch := utils.IncludesStringFunc(envVars, func(envVar string) bool { + return regexp.MustCompile(regexStr).MatchString(envVar) + }) + if !foundMatch { + t.Errorf("expected environment variable %s to be set", regexStr) + } + } + return "", nil + }) + gitCmd := NewDummyGitCommandWithRunner(runner) + err := gitCmd.runSkipEditorCommand(commandStr) + assert.NoError(t, err) + runner.CheckForMissingCalls() +} |