fix: error msg for missing env variables in config (#10681)

This commit is contained in:
Sebastian Spaink 2022-02-22 12:51:07 -06:00 committed by GitHub
parent 855e23d978
commit 063ef6d517
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -1025,6 +1025,7 @@ func parseConfig(contents []byte) (*ast.Table, error) {
contents = trimBOM(contents)
parameters := envVarRe.FindAllSubmatch(contents, -1)
var missingEnvVars []string
for _, parameter := range parameters {
if len(parameter) != 3 {
continue
@ -1043,9 +1044,21 @@ func parseConfig(contents []byte) (*ast.Table, error) {
if ok {
envVal = escapeEnv(envVal)
contents = bytes.Replace(contents, parameter[0], []byte(envVal), 1)
} else {
missingEnvVars = append(missingEnvVars, string(envVar))
}
}
// Report all missing environment variables to the user
if len(missingEnvVars) > 0 {
errorMsg := "environment variable(s) not set:"
for _, e := range missingEnvVars {
errorMsg += e + " "
}
return nil, fmt.Errorf(errorMsg)
}
return toml.Parse(contents)
}

View File

@ -264,13 +264,15 @@ func TestConfig_WrongFieldType(t *testing.T) {
func TestConfig_InlineTables(t *testing.T) {
// #4098
c := NewConfig()
require.NoError(t, os.Setenv("TOKEN", "test"))
require.NoError(t, c.LoadConfig("./testdata/inline_table.toml"))
require.Len(t, c.Outputs, 2)
output, ok := c.Outputs[1].Output.(*MockupOuputPlugin)
require.True(t, ok)
require.Equal(t, map[string]string{"Authorization": "Token $TOKEN", "Content-Type": "application/json"}, output.Headers)
require.Equal(t, map[string]string{"Authorization": "Token test", "Content-Type": "application/json"}, output.Headers)
require.Equal(t, []string{"org_id"}, c.Outputs[0].Config.Filter.TagInclude)
require.NoError(t, os.Unsetenv("TOKEN"))
}
func TestConfig_SliceComment(t *testing.T) {