1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-17 01:42:45 +02:00

Add test that demonstrates bug with language auto-detection

This commit is contained in:
Stefan Haller
2024-07-13 11:35:15 +02:00
parent e1d973d62a
commit da86096e19

View File

@ -2,8 +2,11 @@ package i18n
import (
"fmt"
"io"
"runtime"
"testing"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
)
@ -33,3 +36,84 @@ func TestDetectLanguage(t *testing.T) {
assert.EqualValues(t, s.expected, detectLanguage(s.langDetector))
}
}
// Can't use utils.NewDummyLog() because of a cyclic dependency
func newDummyLog() *logrus.Entry {
log := logrus.New()
log.Out = io.Discard
return log.WithField("test", "test")
}
func TestNewTranslationSetFromConfig(t *testing.T) {
if runtime.GOOS == "windows" {
// These tests are based on setting the LANG environment variable, which
// isn't respected on Windows.
t.Skip("Skipping test on Windows")
}
scenarios := []struct {
name string
configLanguage string
envLanguage string
expected string
expectedErr bool
}{
{
name: "configLanguage is nl",
configLanguage: "nl",
envLanguage: "en_US",
expected: "nl",
expectedErr: false,
},
{
name: "configLanguage is an unsupported language",
configLanguage: "xy",
envLanguage: "en_US",
expectedErr: true,
},
{
name: "auto-detection without LANG set",
configLanguage: "auto",
envLanguage: "",
expected: "en",
expectedErr: false,
},
{
name: "auto-detection with LANG set to nl_NL",
configLanguage: "auto",
envLanguage: "nl_NL",
expected: "nl",
expectedErr: true, // Demonstrates the bug, this should be false
},
{
name: "auto-detection with LANG set to zh-CN",
configLanguage: "auto",
envLanguage: "zh-CN",
expected: "zh-CN",
expectedErr: false,
},
{
name: "auto-detection with LANG set to an unsupported language",
configLanguage: "auto",
envLanguage: "xy_XY",
expected: "en",
expectedErr: false,
},
}
for _, s := range scenarios {
t.Run(s.name, func(t *testing.T) {
log := newDummyLog()
t.Setenv("LANG", s.envLanguage)
actualTranslationSet, err := NewTranslationSetFromConfig(log, s.configLanguage)
if s.expectedErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
expectedTranslationSet, _ := newTranslationSet(log, s.expected)
assert.Equal(t, expectedTranslationSet, actualTranslationSet)
}
})
}
}