diff --git a/envconfig.go b/envconfig.go index 3985882..4e5602e 100644 --- a/envconfig.go +++ b/envconfig.go @@ -194,11 +194,7 @@ func Process(prefix string, spec interface{}) error { req := info.Tags.Get("required") if value == "" { if isTrue(req) { - key := info.Key - if info.Alt != "" { - key = info.Alt - } - return fmt.Errorf("required key %s missing value", key) + return fmt.Errorf("required key %s missing value", info.Key) } continue } diff --git a/envconfig_test.go b/envconfig_test.go index 56954b9..eaf569c 100644 --- a/envconfig_test.go +++ b/envconfig_test.go @@ -834,11 +834,47 @@ func TestErrorMessageForRequiredAltVar(t *testing.T) { t.Error("no failure when missing required variable") } + if !strings.Contains(err.Error(), " ENV_CONFIG_BAR ") { + t.Errorf("expected error message to contain ENV_CONFIG_BAR, got \"%v\"", err) + } +} + +func TestErrorMessageForRequiredAltVarNoPrefix(t *testing.T) { + var s struct { + Foo string `envconfig:"BAR" required:"true"` + } + + os.Clearenv() + err := Process("", &s) + + if err == nil { + t.Error("no failure when missing required variable") + } + if !strings.Contains(err.Error(), " BAR ") { t.Errorf("expected error message to contain BAR, got \"%v\"", err) } } +func TestErrorMessageForRequiredAltVarNestedStruct(t *testing.T) { + var s struct { + Foo struct { + Bar string `envconfig:"BAR" required:"true"` + } `envconfig:"FOO" required:"true"` + } + + os.Clearenv() + err := Process("ENV_CONFIG", &s) + + if err == nil { + t.Error("no failure when missing required variable") + } + + if !strings.Contains(err.Error(), " ENV_CONFIG_FOO_BAR ") { + t.Errorf("expected error message to contain ENV_CONFIG_FOO_BAR, got \"%v\"", err) + } +} + func TestNonTaggedFields(t *testing.T) { var s struct { Foo string `envconfig:"FOO"`