From ae85cc4070cf0fa94232a017aacc004d984a6c99 Mon Sep 17 00:00:00 2001 From: James Phillips Date: Fri, 10 Nov 2017 18:06:07 -0800 Subject: [PATCH] Skips files with unknown extensions when not forcing a format. Fixes #3685 --- agent/config/builder.go | 11 +++++++++++ agent/config/runtime_test.go | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/agent/config/builder.go b/agent/config/builder.go index 974028284..b058d7f22 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -231,6 +231,17 @@ func (b *Builder) Build() (rt RuntimeConfig, err error) { src.Format = FormatFrom(src.Name) if configFormat != "" { src.Format = configFormat + } else { + // If they haven't forced things to a specific format, + // then skip anything we don't understand, which is the + // behavior before we added the -config-format option. + switch src.Format { + case "json", "hcl": + // OK + default: + // SKIP + continue + } } if src.Format == "" { return RuntimeConfig{}, fmt.Errorf(`config: Missing or invalid file extension for %q. Please use ".json" or ".hcl".`, src.Name) diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 0776b4383..79deb645b 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -361,6 +361,21 @@ func TestConfigFlagsAndEdgecases(t *testing.T) { rt.DataDir = dataDir }, }, + { + desc: "-config-format disabled, skip unknown files", + args: []string{ + `-data-dir=` + dataDir, + `-config-dir`, filepath.Join(dataDir, "conf"), + }, + patch: func(rt *RuntimeConfig) { + rt.Datacenter = "a" + rt.DataDir = dataDir + }, + pre: func() { + writeFile(filepath.Join(dataDir, "conf", "valid.json"), []byte(`{"datacenter":"a"}`)) + writeFile(filepath.Join(dataDir, "conf", "invalid.skip"), []byte(`NOPE`)) + }, + }, { desc: "-config-format=json", args: []string{