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:
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user