Skip to content

Commit 18e4225

Browse files
committed
Improved handling of incomplete configs array
1 parent 4146fe9 commit 18e4225

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

Diff for: internal/go-configmap/configuration.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func tryConversion(current any, desiredType reflect.Type) (any, error) {
9797
}
9898
case reflect.Array, reflect.Slice:
9999
currentArray, ok := current.([]any)
100-
if !ok {
100+
if !ok && current != nil {
101101
break
102102
}
103103
for i, elem := range currentArray {
@@ -108,6 +108,8 @@ func tryConversion(current any, desiredType reflect.Type) (any, error) {
108108
currentArray[i] = newElem
109109
}
110110
return currentArray, nil
111+
default:
112+
panic("unhandled type in conversion: " + desiredType.Kind().String())
111113
}
112114

113115
currentTypeString := currentType.String()

Diff for: internal/integrationtest/config/config_test.go

+8
Original file line numberDiff line numberDiff line change
@@ -925,4 +925,12 @@ build.unk: 123
925925
out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String())
926926
require.NoError(t, err)
927927
require.Equal(t, "en", strings.TrimSpace(string(out)))
928+
929+
// Run "config get" with a configuration contatinng a null array
930+
nullArrayConfig := paths.New(filepath.Join(tmp, "null_array.yaml"))
931+
nullArrayConfig.WriteFile([]byte(`board_manager.additional_urls:`))
932+
t.Cleanup(func() { nullArrayConfig.Remove() })
933+
out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String())
934+
require.NoError(t, err)
935+
require.Equal(t, "en", strings.TrimSpace(string(out)))
928936
}

0 commit comments

Comments
 (0)