mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-04 22:34:39 +02:00
In go 1.22, loop variables are redeclared with each iteration of the loop, rather than simple updated on each iteration. This means that we no longer need to manually redeclare variables when they're closed over by a function.
119 lines
2.5 KiB
Go
119 lines
2.5 KiB
Go
package git_config
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGetBool(t *testing.T) {
|
|
type scenario struct {
|
|
testName string
|
|
mockResponses map[string]string
|
|
expected bool
|
|
}
|
|
|
|
scenarios := []scenario{
|
|
{
|
|
"Option global and local config commit.gpgsign is not set",
|
|
map[string]string{},
|
|
false,
|
|
},
|
|
{
|
|
"Some other random key is set",
|
|
map[string]string{"blah": "blah"},
|
|
false,
|
|
},
|
|
{
|
|
"Option commit.gpgsign is true",
|
|
map[string]string{"commit.gpgsign": "True"},
|
|
true,
|
|
},
|
|
{
|
|
"Option commit.gpgsign is on",
|
|
map[string]string{"commit.gpgsign": "ON"},
|
|
true,
|
|
},
|
|
{
|
|
"Option commit.gpgsign is yes",
|
|
map[string]string{"commit.gpgsign": "YeS"},
|
|
true,
|
|
},
|
|
{
|
|
"Option commit.gpgsign is 1",
|
|
map[string]string{"commit.gpgsign": "1"},
|
|
true,
|
|
},
|
|
}
|
|
|
|
for _, s := range scenarios {
|
|
t.Run(s.testName, func(t *testing.T) {
|
|
fake := NewFakeGitConfig(s.mockResponses)
|
|
real := NewCachedGitConfig(
|
|
func(cmd *exec.Cmd) (string, error) {
|
|
assert.Equal(t, "config --get --null commit.gpgsign", strings.Join(cmd.Args[1:], " "))
|
|
return fake.Get("commit.gpgsign"), nil
|
|
},
|
|
utils.NewDummyLog(),
|
|
)
|
|
result := real.GetBool("commit.gpgsign")
|
|
assert.Equal(t, s.expected, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGet(t *testing.T) {
|
|
type scenario struct {
|
|
testName string
|
|
mockResponses map[string]string
|
|
expected string
|
|
}
|
|
|
|
scenarios := []scenario{
|
|
{
|
|
"not set",
|
|
map[string]string{},
|
|
"",
|
|
},
|
|
{
|
|
"is set",
|
|
map[string]string{"commit.gpgsign": "blah"},
|
|
"blah",
|
|
},
|
|
}
|
|
|
|
for _, s := range scenarios {
|
|
t.Run(s.testName, func(t *testing.T) {
|
|
fake := NewFakeGitConfig(s.mockResponses)
|
|
real := NewCachedGitConfig(
|
|
func(cmd *exec.Cmd) (string, error) {
|
|
assert.Equal(t, "config --get --null commit.gpgsign", strings.Join(cmd.Args[1:], " "))
|
|
return fake.Get("commit.gpgsign"), nil
|
|
},
|
|
utils.NewDummyLog(),
|
|
)
|
|
result := real.Get("commit.gpgsign")
|
|
assert.Equal(t, s.expected, result)
|
|
})
|
|
}
|
|
|
|
// verifying that the cache is used
|
|
count := 0
|
|
real := NewCachedGitConfig(
|
|
func(cmd *exec.Cmd) (string, error) {
|
|
count++
|
|
assert.Equal(t, "config --get --null commit.gpgsign", strings.Join(cmd.Args[1:], " "))
|
|
return "blah", nil
|
|
},
|
|
utils.NewDummyLog(),
|
|
)
|
|
result := real.Get("commit.gpgsign")
|
|
assert.Equal(t, "blah", result)
|
|
result = real.Get("commit.gpgsign")
|
|
assert.Equal(t, "blah", result)
|
|
assert.Equal(t, 1, count)
|
|
}
|