Skip to content

Commit

Permalink
cli/config: improve error when failing to parse config file
Browse files Browse the repository at this point in the history
The format had a stray colon and space included. While fixing that, also
updating the error message to clarify the error happened while parsing
the file (not so much "loading" it).

Before:

    WARNING: Error loading config file: /root/.docker/config.json: : json: cannot unmarshal bool into Go struct field ConfigFile.features of type string

After:

    WARNING: Error parsing config file (/root/.docker/config.json): json: cannot unmarshal bool into Go struct field ConfigFile.features of type string

Signed-off-by: Sebastiaan van Stijn <[email protected]>
  • Loading branch information
thaJeztah committed Oct 21, 2024
1 parent 062eecf commit d96f8b7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
2 changes: 1 addition & 1 deletion cli/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func load(configDir string) (*configfile.ConfigFile, error) {
defer file.Close()
err = configFile.LoadFromReader(file)
if err != nil {
err = errors.Wrapf(err, "loading config file: %s: ", filename)
err = errors.Wrapf(err, "parsing config file (%s)", filename)
}
return configFile, err
}
Expand Down
11 changes: 11 additions & 0 deletions cli/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,17 @@ func TestEmptyJSON(t *testing.T) {
saveConfigAndValidateNewFormat(t, config, tmpHome)
}

func TestMalformedJSON(t *testing.T) {
tmpHome := t.TempDir()

fn := filepath.Join(tmpHome, ConfigFileName)
err := os.WriteFile(fn, []byte("{"), 0o600)
assert.NilError(t, err)

_, err = Load(tmpHome)
assert.Check(t, is.ErrorContains(err, fmt.Sprintf(`parsing config file (%s):`, fn)))
}

func TestNewJSON(t *testing.T) {
tmpHome := t.TempDir()

Expand Down

0 comments on commit d96f8b7

Please sign in to comment.