mirror of
https://github.com/foomo/contentserver.git
synced 2026-10-03 13:38:09 +00:00
81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/spf13/pflag"
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/require"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
func TestRepositoryLogLevelFlags(t *testing.T) {
|
|
for _, flag := range []struct {
|
|
name string
|
|
env string
|
|
defaultLevel zapcore.Level
|
|
add func(*pflag.FlagSet, *viper.Viper)
|
|
get func(*viper.Viper) (zapcore.Level, error)
|
|
}{
|
|
{"log-level-missing-node", "LOG_LEVEL_MISSING_NODE", zapcore.ErrorLevel, addLogLevelMissingNodeFlag, logLevelMissingNodeFlag},
|
|
{"log-level-resolved", "LOG_LEVEL_RESOLVED", zapcore.InfoLevel, addLogLevelResolvedFlag, logLevelResolvedFlag},
|
|
} {
|
|
t.Run(flag.name, func(t *testing.T) {
|
|
t.Setenv(flag.env, "")
|
|
|
|
v := viper.New()
|
|
flags := pflag.NewFlagSet("test", pflag.ContinueOnError)
|
|
flag.add(flags, v)
|
|
level, err := flag.get(v)
|
|
require.NoError(t, err)
|
|
require.Equal(t, flag.defaultLevel, level)
|
|
|
|
for _, tc := range []struct {
|
|
value string
|
|
level zapcore.Level
|
|
}{
|
|
{"DEBUG", zapcore.DebugLevel}, {"debug", zapcore.DebugLevel}, {"DeBuG", zapcore.DebugLevel},
|
|
{"INFO", zapcore.InfoLevel}, {"info", zapcore.InfoLevel}, {"InFo", zapcore.InfoLevel},
|
|
{"WARN", zapcore.WarnLevel}, {"warn", zapcore.WarnLevel}, {"WaRn", zapcore.WarnLevel},
|
|
{"ERROR", zapcore.ErrorLevel}, {"error", zapcore.ErrorLevel}, {"ErRoR", zapcore.ErrorLevel},
|
|
} {
|
|
t.Run(tc.value, func(t *testing.T) {
|
|
require.NoError(t, flags.Set(flag.name, tc.value))
|
|
level, err := flag.get(v)
|
|
require.NoError(t, err)
|
|
require.Equal(t, tc.level, level)
|
|
})
|
|
}
|
|
|
|
for _, value := range []string{"", "invalid", "WARNING", "DPANIC", "PANIC", "FATAL", "-1", " INFO "} {
|
|
t.Run("invalid_"+value, func(t *testing.T) {
|
|
require.NoError(t, flags.Set(flag.name, value))
|
|
_, err := flag.get(v)
|
|
require.ErrorContains(t, err, "invalid --"+flag.name+" value")
|
|
require.ErrorContains(t, err, "expected DEBUG, INFO, WARN or ERROR")
|
|
})
|
|
}
|
|
})
|
|
|
|
t.Run(flag.name+"_environment_precedence", func(t *testing.T) {
|
|
t.Setenv(flag.env, "WaRn")
|
|
|
|
v := viper.New()
|
|
flags := pflag.NewFlagSet("test", pflag.ContinueOnError)
|
|
flag.add(flags, v)
|
|
level, err := flag.get(v)
|
|
require.NoError(t, err)
|
|
require.Equal(t, zapcore.WarnLevel, level)
|
|
|
|
t.Setenv(flag.env, "FATAL")
|
|
_, err = flag.get(v)
|
|
require.Error(t, err)
|
|
|
|
require.NoError(t, flags.Set(flag.name, flag.defaultLevel.CapitalString()))
|
|
level, err = flag.get(v)
|
|
require.NoError(t, err)
|
|
require.Equal(t, flag.defaultLevel, level)
|
|
})
|
|
}
|
|
}
|