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/api/agent_test.go b/api/agent_test.go index 92b7b5c32..e5eecb11c 100644 --- a/api/agent_test.go +++ b/api/agent_test.go @@ -7,6 +7,9 @@ import ( "testing" "time" + "os" + "path/filepath" + "github.com/hashicorp/consul/testutil" "github.com/hashicorp/serf/serf" ) @@ -57,11 +60,14 @@ func TestAPI_AgentReload(t *testing.T) { t.Parallel() // Create our initial empty config file, to be overwritten later - configFile := testutil.TempFile(t, "reload") - if _, err := configFile.Write([]byte("{}")); err != nil { - t.Fatalf("err: %s", err) + cfgDir := testutil.TempDir(t, "consul-config") + defer os.RemoveAll(cfgDir) + + cfgFilePath := filepath.Join(cfgDir, "reload.json") + configFile, err := os.Create(cfgFilePath) + if err != nil { + t.Fatalf("Unable to create file %v, got error:%v", cfgFilePath, err) } - configFile.Close() c, s := makeClientWithConfig(t, nil, func(conf *testutil.TestServerConfig) { conf.Args = []string{"-config-file", configFile.Name()} @@ -72,7 +78,7 @@ func TestAPI_AgentReload(t *testing.T) { // Update the config file with a service definition config := `{"service":{"name":"redis", "port":1234}}` - err := ioutil.WriteFile(configFile.Name(), []byte(config), 0644) + err = ioutil.WriteFile(configFile.Name(), []byte(config), 0644) if err != nil { t.Fatalf("err: %v", 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) }