From b9a88e490284d64c61c0664d25eaca5eb21aa800 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 24 Apr 2024 12:12:27 +0200 Subject: [PATCH] Fixed 'config dump --format yaml' regression --- internal/cli/config/dump.go | 11 ++----- .../integrationtest/config/config_test.go | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/internal/cli/config/dump.go b/internal/cli/config/dump.go index 46a58b20dc3..2aec73707db 100644 --- a/internal/cli/config/dump.go +++ b/internal/cli/config/dump.go @@ -35,13 +35,13 @@ func initDumpCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command { logrus.Info("Executing `arduino-cli config dump`") res := &rawResult{} switch feedback.GetFormat() { - case feedback.JSON, feedback.MinifiedJSON: + case feedback.JSON, feedback.MinifiedJSON, feedback.YAML: resp, err := srv.ConfigurationSave(cmd.Context(), &rpc.ConfigurationSaveRequest{SettingsFormat: "json"}) if err != nil { logrus.Fatalf("Error creating configuration: %v", err) } res.rawJSON = []byte(resp.GetEncodedSettings()) - case feedback.YAML, feedback.Text: + case feedback.Text: resp, err := srv.ConfigurationSave(cmd.Context(), &rpc.ConfigurationSaveRequest{SettingsFormat: "yaml"}) if err != nil { logrus.Fatalf("Error creating configuration: %v", err) @@ -66,13 +66,8 @@ func (r *rawResult) MarshalJSON() ([]byte, error) { return r.rawJSON, nil } -func (r *rawResult) MarshalYAML() (interface{}, error) { - // it is already encoded in rawYAML field - return r.rawYAML, nil -} - type dumpResult struct { - Config *rawResult `json:"config" yaml:"config"` + Config *rawResult `json:"config"` } func (dr dumpResult) Data() interface{} { diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index ce62cf33a00..f3b2f28b6cd 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -207,6 +207,21 @@ func TestDump(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".config | .board_manager | .additional_urls", "[]") + stdout, _, err = cli.Run("config", "dump", "--config-file", configFile.String(), "--format", "yaml") + require.NoError(t, err) + require.NoError(t, err) + require.YAMLEq(t, string(stdout), ` +config: + board_manager: + additional_urls: [] + directories: + data: `+cli.DataDir().String()+` + downloads: `+cli.DownloadDir().String()+` + user: `+cli.SketchbookDir().String()+` + build_cache: + compilations_before_purge: 0 +`) + stdout, _, err = cli.Run("config", "init", "--additional-urls", "https://example.com") require.NoError(t, err) configFile = cli.DataDir().Join("arduino-cli.yaml") @@ -216,6 +231,22 @@ func TestDump(t *testing.T) { stdout, _, err = cli.Run("config", "dump", "--format", "json") require.NoError(t, err) requirejson.Query(t, stdout, ".config | .board_manager | .additional_urls", "[\"https://example.com\"]") + + stdout, _, err = cli.Run("config", "dump", "--config-file", configFile.String(), "--format", "yaml") + require.NoError(t, err) + require.NoError(t, err) + require.YAMLEq(t, string(stdout), ` +config: + board_manager: + additional_urls: + - https://example.com + directories: + data: `+cli.DataDir().String()+` + downloads: `+cli.DownloadDir().String()+` + user: `+cli.SketchbookDir().String()+` + build_cache: + compilations_before_purge: 0 +`) } func TestDumpWithConfigFileFlag(t *testing.T) {