cli/pkg/i18n/detect_language_test.go
Snider 4e02d5bc97 refactor: bring external packages home and restructure
- Imported packages from separate repos:
  - github.com/Snider/config -> pkg/config
  - github.com/Snider/display -> pkg/display
  - github.com/Snider/help -> pkg/help
  - github.com/Snider/i18n -> pkg/i18n
  - github.com/Snider/updater -> pkg/updater
- Moved core code from root to pkg/core
- Flattened nested package structures
- Updated all import paths to github.com/Snider/Core/pkg/*
- Added Display interface to Core
- Updated go.work for workspace modules

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 15:30:43 +00:00

84 lines
1.7 KiB
Go

package i18n
import (
"testing"
"github.com/stretchr/testify/assert"
"golang.org/x/text/language"
)
func TestDetectLanguage(t *testing.T) {
supported := []language.Tag{
language.English,
language.French,
language.Spanish,
}
tests := []struct {
name string
langEnv string
supported []language.Tag
expectedLang string
expectedError string
}{
{
name: "Exact match",
langEnv: "fr",
supported: supported,
expectedLang: "fr",
},
{
name: "Match with region",
langEnv: "fr_CA.UTF-8",
supported: supported,
expectedLang: "fr",
},
{
name: "Unsupported language",
langEnv: "de",
supported: supported,
expectedLang: "",
},
{
name: "Empty LANG",
langEnv: "",
supported: supported,
expectedLang: "",
},
{
name: "Invalid LANG",
langEnv: "invalid-lang-tag",
supported: supported,
expectedLang: "",
expectedError: "failed to parse language tag 'invalid-lang-tag': language: tag is not well-formed",
},
{
name: "Empty supported languages",
langEnv: "en",
supported: []language.Tag{},
expectedLang: "",
},
{
name: "Match with low confidence",
langEnv: "it", // Italian is not supported, confidence should be No or Low?
supported: supported,
expectedLang: "",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Setenv("LANG", tt.langEnv)
lang, err := detectLanguage(tt.supported)
if tt.expectedError != "" {
assert.Error(t, err)
assert.Contains(t, err.Error(), tt.expectedError)
} else {
assert.NoError(t, err)
assert.Equal(t, tt.expectedLang, lang)
}
})
}
}