From 5475d4a1ddddfb682602ddc97c6e436d66719dd9 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 2 May 2024 15:01:23 +0200 Subject: [PATCH] Improved handling of incomplete configs array --- internal/go-configmap/configuration.go | 2 +- internal/integrationtest/config/config_test.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/go-configmap/configuration.go b/internal/go-configmap/configuration.go index 5ea74eac983..ad0f41bdb1a 100644 --- a/internal/go-configmap/configuration.go +++ b/internal/go-configmap/configuration.go @@ -97,7 +97,7 @@ func tryConversion(current any, desiredType reflect.Type) (any, error) { } case reflect.Array, reflect.Slice: currentArray, ok := current.([]any) - if !ok { + if !ok && current != nil { break } for i, elem := range currentArray { diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index d180ea5699e..a539919af7c 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -893,4 +893,12 @@ build.unk: 123 out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String()) require.NoError(t, err) require.Equal(t, "en", strings.TrimSpace(string(out))) + + // Run "config get" with a configuration contatinng a null array + nullArrayConfig := paths.New(filepath.Join(tmp, "null_array.yaml")) + nullArrayConfig.WriteFile([]byte(`board_manager.additional_urls:`)) + t.Cleanup(func() { nullArrayConfig.Remove() }) + out, _, err = cli.Run("config", "get", "locale", "--config-file", invalidConfig.String()) + require.NoError(t, err) + require.Equal(t, "en", strings.TrimSpace(string(out))) }