diff --git a/agent/config/builder.go b/agent/config/builder.go index 9f7c0e005..73c067811 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -174,6 +174,9 @@ func (b *Builder) ReadPath(path string) error { // ReadFile parses a JSON or HCL config file and appends it to the list of // config sources. func (b *Builder) ReadFile(path string) error { + if !strings.HasSuffix(path, ".json") && !strings.HasSuffix(path, ".hcl") { + return fmt.Errorf(`Missing or invalid file extension for %q. Please use ".json" or ".hcl".`, path) + } data, err := ioutil.ReadFile(path) if err != nil { return fmt.Errorf("config: ReadFile failed on %s: %s", path, err) diff --git a/command/agent_test.go b/command/agent_test.go index 431fff7e6..2ab73e35e 100644 --- a/command/agent_test.go +++ b/command/agent_test.go @@ -229,11 +229,17 @@ func TestProtectDataDir(t *testing.T) { t.Fatalf("err: %v", err) } - cfgFile := testutil.TempFile(t, "consul") - defer os.Remove(cfgFile.Name()) + cfgDir := testutil.TempDir(t, "consul-config") + defer os.RemoveAll(cfgDir) + + cfgFilePath := filepath.Join(cfgDir, "consul.json") + cfgFile, err := os.Create(cfgFilePath) + if err != nil { + t.Fatalf("Unable to create file %v, got error:%v", cfgFilePath, err) + } content := fmt.Sprintf(`{"server": true, "bind_addr" : "10.0.0.1", "data_dir": "%s"}`, dir) - _, err := cfgFile.Write([]byte(content)) + _, err = cfgFile.Write([]byte(content)) if err != nil { t.Fatalf("err: %v", err) }