Skip to content

Commit

Permalink
Add test that demonstrates bug with language auto-detection
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanhaller committed Jul 13, 2024
1 parent e1d973d commit da86096
Showing 1 changed file with 84 additions and 0 deletions.
84 changes: 84 additions & 0 deletions pkg/i18n/i18n_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ package i18n

import (
"fmt"
"io"
"runtime"
"testing"

"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
)

Expand Down Expand Up @@ -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)
}
})
}
}

0 comments on commit da86096

Please sign in to comment.