diff --git a/internal/cli/core/upgrade.go b/internal/cli/core/upgrade.go index 3884bdd8129..54ce8e5bfc8 100644 --- a/internal/cli/core/upgrade.go +++ b/internal/cli/core/upgrade.go @@ -110,8 +110,9 @@ func Upgrade(inst *rpc.Instance, args []string, skipPostInstall bool) { response, err := core.PlatformUpgrade(context.Background(), r, feedback.ProgressBar(), feedback.TaskProgress()) warningMissingIndex(response) if err != nil { - if errors.Is(err, &arduino.PlatformAlreadyAtTheLatestVersionError{}) { - feedback.Print(err.Error()) + var alreadyAtLatestVersionErr *arduino.PlatformAlreadyAtTheLatestVersionError + if errors.As(err, &alreadyAtLatestVersionErr) { + feedback.Warning(err.Error()) continue } @@ -122,4 +123,19 @@ func Upgrade(inst *rpc.Instance, args []string, skipPostInstall bool) { if hasBadArguments { feedback.Fatal(tr("Some upgrades failed, please check the output for details."), feedback.ErrBadArgument) } + + feedback.PrintResult(&platformUpgradeResult{}) +} + +// This is needed so we can print warning messages in case users use --format json +type platformUpgradeResult struct{} + +// Data implements feedback.Result. +func (r *platformUpgradeResult) Data() interface{} { + return r +} + +// String implements feedback.Result. +func (r *platformUpgradeResult) String() string { + return "" } diff --git a/internal/integrationtest/core/core_test.go b/internal/integrationtest/core/core_test.go index da13160ee1e..b2b68dd366e 100644 --- a/internal/integrationtest/core/core_test.go +++ b/internal/integrationtest/core/core_test.go @@ -1041,8 +1041,8 @@ func TestCoreUpgradeWarningWithPackageInstalledButNotIndexed(t *testing.T) { _, _, err = cli.Run("core", "install", "test:x86@1.0.0", "--additional-urls="+url) require.NoError(t, err) //upgrade without index fires a warning - _, jsonStderr, _ := cli.Run("core", "upgrade", "test:x86", "--format", "json") - requirejson.Query(t, jsonStderr, ".warnings[]", `"missing package index for test:x86, future updates cannot be guaranteed"`) + jsonStdout, _, _ := cli.Run("core", "upgrade", "test:x86", "--format", "json") + requirejson.Query(t, jsonStdout, ".warnings[]", `"missing package index for test:x86, future updates cannot be guaranteed"`) }) // removing installed.json @@ -1050,7 +1050,7 @@ func TestCoreUpgradeWarningWithPackageInstalledButNotIndexed(t *testing.T) { require.NoError(t, os.Remove(installedJson.String())) t.Run("missing both installed.json and additional-urls", func(t *testing.T) { - _, jsonStderr, _ := cli.Run("core", "upgrade", "test:x86", "--format", "json") - requirejson.Query(t, jsonStderr, ".warnings[]", `"missing package index for test:x86, future updates cannot be guaranteed"`) + jsonStdout, _, _ := cli.Run("core", "upgrade", "test:x86", "--format", "json") + requirejson.Query(t, jsonStdout, ".warnings[]", `"missing package index for test:x86, future updates cannot be guaranteed"`) }) }