cli/config: improve error when failing to parse config file

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 <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2024-10-21 18:15:49 +02:00
parent 062eecf14a
commit d96f8b7f91
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
2 changed files with 12 additions and 1 deletions

View File

@ -143,7 +143,7 @@ func load(configDir string) (*configfile.ConfigFile, error) {
defer file.Close() defer file.Close()
err = configFile.LoadFromReader(file) err = configFile.LoadFromReader(file)
if err != nil { if err != nil {
err = errors.Wrapf(err, "loading config file: %s: ", filename) err = errors.Wrapf(err, "parsing config file (%s)", filename)
} }
return configFile, err return configFile, err
} }

View File

@ -118,6 +118,17 @@ func TestEmptyJSON(t *testing.T) {
saveConfigAndValidateNewFormat(t, config, tmpHome) 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) { func TestNewJSON(t *testing.T) {
tmpHome := t.TempDir() tmpHome := t.TempDir()