Skip to content

Commit 394f752

Browse files
committed
Change lib deps CLI command output to sorted alphabetically
1 parent 06fb190 commit 394f752

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

Diff for: cli/lib/check_deps.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"context"
2020
"fmt"
2121
"os"
22+
"sort"
2223

2324
"github.com/arduino/arduino-cli/cli/arguments"
2425
"github.com/arduino/arduino-cli/cli/errorcodes"
@@ -81,13 +82,19 @@ func (dr checkDepResult) Data() interface{} {
8182

8283
func (dr checkDepResult) String() string {
8384
res := ""
84-
for _, dep := range dr.deps.GetDependencies() {
85+
deps := dr.deps.Dependencies
86+
sort.Slice(deps, func(i, j int) bool {
87+
return deps[i].Name > deps[j].Name &&
88+
deps[i].VersionInstalled > deps[j].VersionInstalled
89+
})
90+
for _, dep := range deps {
8591
res += outputDep(dep)
8692
}
8793
return res
8894
}
8995

9096
func outputDep(dep *rpc.LibraryDependencyStatus) string {
97+
9198
res := ""
9299
green := color.New(color.FgGreen)
93100
red := color.New(color.FgRed)

Diff for: commands/lib/resolve_deps.go

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package lib
1818
import (
1919
"context"
2020
"errors"
21+
"sort"
2122

2223
"github.com/arduino/arduino-cli/arduino"
2324
"github.com/arduino/arduino-cli/arduino/libraries"
@@ -74,5 +75,8 @@ func LibraryResolveDependencies(ctx context.Context, req *rpc.LibraryResolveDepe
7475
VersionInstalled: installed,
7576
})
7677
}
78+
sort.Slice(res, func(i, j int) bool {
79+
return res[i].Name < res[j].Name
80+
})
7781
return &rpc.LibraryResolveDependenciesResponse{Dependencies: res}, nil
7882
}

Diff for: internal/integrationtest/lib/lib_test.go

+42
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package lib_test
1717

1818
import (
19+
"strings"
1920
"testing"
2021

2122
"github.com/arduino/arduino-cli/internal/integrationtest"
@@ -136,3 +137,44 @@ func TestDuplicateLibInstallDetection(t *testing.T) {
136137
require.Error(t, err)
137138
require.Contains(t, string(stdErr), "The library ArduinoOTA has multiple installations")
138139
}
140+
141+
func TestLibDepsOutput(t *testing.T) {
142+
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
143+
defer env.CleanUp()
144+
145+
// Updates index for cores and libraries
146+
_, _, err := cli.Run("core", "update-index")
147+
require.NoError(t, err)
148+
_, _, err = cli.Run("lib", "update-index")
149+
require.NoError(t, err)
150+
151+
// Install some libraries that are dependencies of another library
152+
_, _, err = cli.Run("lib", "install", "[email protected]")
153+
require.NoError(t, err)
154+
_, _, err = cli.Run("lib", "install", "[email protected]")
155+
require.NoError(t, err)
156+
157+
stdOut, _, err := cli.Run("lib", "deps", "[email protected]", "--no-color")
158+
require.NoError(t, err)
159+
lines := strings.Split(strings.TrimSpace(string(stdOut)), "\n")
160+
require.Len(t, lines, 7)
161+
require.Equal(t, "✓ MKRWAN 1.1.0 is already installed.", lines[0])
162+
require.Equal(t, "✓ WiFi101 0.16.1 is already installed.", lines[1])
163+
require.Equal(t, "✕ Arduino_ConnectionHandler 0.6.6 must be installed.", lines[2])
164+
require.Equal(t, "✕ Arduino_DebugUtils 1.3.0 must be installed.", lines[3])
165+
require.Equal(t, "✕ MKRGSM 1.5.0 must be installed.", lines[4])
166+
require.Equal(t, "✕ MKRNB 1.5.1 must be installed.", lines[5])
167+
require.Equal(t, "✕ WiFiNINA 1.8.13 must be installed.", lines[6])
168+
169+
stdOut, _, err = cli.Run("lib", "deps", "[email protected]", "--format", "json")
170+
require.NoError(t, err)
171+
expectedOutput := `{"dependencies":[
172+
{"name":"Arduino_ConnectionHandler","version_required":"0.6.6"},
173+
{"name":"Arduino_DebugUtils","version_required":"1.3.0"},
174+
{"name":"MKRGSM","version_required":"1.5.0"},
175+
{"name":"MKRNB","version_required":"1.5.1"},
176+
{"name":"MKRWAN","version_required":"1.1.0","version_installed":"1.1.0"},
177+
{"name":"WiFi101","version_required":"0.16.1","version_installed":"0.16.1"},
178+
{"name":"WiFiNINA","version_required":"1.8.13"}]}`
179+
require.JSONEq(t, expectedOutput, string(stdOut))
180+
}

0 commit comments

Comments
 (0)