Skip to content

Commit

Permalink
Fixed 'config dump --format yaml' regression
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Apr 24, 2024
1 parent f586a10 commit b9a88e4
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 8 deletions.
11 changes: 3 additions & 8 deletions internal/cli/config/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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{} {
Expand Down
31 changes: 31 additions & 0 deletions internal/integrationtest/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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) {
Expand Down

0 comments on commit b9a88e4

Please sign in to comment.