1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-14 11:02:27 +03:00

Construct arg vector manually rather than parse string

By constructing an arg vector manually, we no longer need to quote arguments

Mandate that args must be passed when building a command

Now you need to provide an args array when building a command.
There are a handful of places where we need to deal with a string,
such as with user-defined custom commands, and for those we now require
that at the callsite they use str.ToArgv to do that. I don't want
to provide a method out of the box for it because I want to discourage its
use.

For some reason we were invoking a command through a shell when amending a
commit, and I don't believe we needed to do that as there was nothing user-
supplied about the command. So I've switched to using a regular command out-
side the shell there
This commit is contained in:
Jesse Duffield
2023-05-21 17:00:29 +10:00
parent 70e473b25d
commit 63dc07fded
221 changed files with 1050 additions and 885 deletions

View File

@ -12,13 +12,13 @@ func TestStartCmdObj(t *testing.T) {
testName string
branchType string
name string
expected string
expected []string
}{
{
testName: "basic",
branchType: "feature",
name: "test",
expected: "git flow feature start test",
expected: []string{"git", "flow", "feature", "start", "test"},
},
}
@ -28,7 +28,7 @@ func TestStartCmdObj(t *testing.T) {
instance := buildFlowCommands(commonDeps{})
assert.Equal(t,
instance.StartCmdObj(s.branchType, s.name).ToString(),
instance.StartCmdObj(s.branchType, s.name).Args(),
s.expected,
)
})
@ -39,28 +39,28 @@ func TestFinishCmdObj(t *testing.T) {
scenarios := []struct {
testName string
branchName string
expected string
expected []string
expectedError string
gitConfigMockResponses map[string]string
}{
{
testName: "not a git flow branch",
branchName: "mybranch",
expected: "",
expected: nil,
expectedError: "This does not seem to be a git flow branch",
gitConfigMockResponses: nil,
},
{
testName: "feature branch without config",
branchName: "feature/mybranch",
expected: "",
expected: nil,
expectedError: "This does not seem to be a git flow branch",
gitConfigMockResponses: nil,
},
{
testName: "feature branch with config",
branchName: "feature/mybranch",
expected: "git flow feature finish mybranch",
expected: []string{"git", "flow", "feature", "finish", "mybranch"},
expectedError: "",
gitConfigMockResponses: map[string]string{
"--local --get-regexp gitflow.prefix": "gitflow.prefix.feature feature/",
@ -85,7 +85,7 @@ func TestFinishCmdObj(t *testing.T) {
}
} else {
assert.NoError(t, err)
assert.Equal(t, cmd.ToString(), s.expected)
assert.Equal(t, cmd.Args(), s.expected)
}
})
}