|
16 | 16 | package lib_test
|
17 | 17 |
|
18 | 18 | import (
|
| 19 | + "encoding/json" |
| 20 | + "strings" |
19 | 21 | "testing"
|
20 | 22 |
|
21 | 23 | "github.com/arduino/arduino-cli/internal/integrationtest"
|
@@ -136,3 +138,64 @@ func TestDuplicateLibInstallDetection(t *testing.T) {
|
136 | 138 | require.Error(t, err)
|
137 | 139 | require.Contains(t, string(stdErr), "The library ArduinoOTA has multiple installations")
|
138 | 140 | }
|
| 141 | + |
| 142 | +func TestLibDepsOutput(t *testing.T) { |
| 143 | + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) |
| 144 | + defer env.CleanUp() |
| 145 | + |
| 146 | + // Updates index for cores and libraries |
| 147 | + _, _, err := cli.Run("core", "update-index") |
| 148 | + require.NoError(t, err) |
| 149 | + _, _, err = cli.Run("lib", "update-index") |
| 150 | + require.NoError(t, err) |
| 151 | + |
| 152 | + // Install some libraries that are dependencies of another library |
| 153 | + _, _, err = cli.Run("lib", "install", "Arduino_DebugUtils") |
| 154 | + require.NoError(t, err) |
| 155 | + _, _, err = cli.Run("lib", "install", "MKRGSM") |
| 156 | + require.NoError(t, err) |
| 157 | + _, _, err = cli.Run("lib", "install", "MKRNB") |
| 158 | + require.NoError(t, err) |
| 159 | + _, _, err = cli.Run("lib", "install", "WiFiNINA") |
| 160 | + require.NoError(t, err) |
| 161 | + |
| 162 | + stdOut, _, err := cli.Run("lib", "deps", "Arduino_ConnectionHandler@0.6.6", "--no-color") |
| 163 | + require.NoError(t, err) |
| 164 | + lines := strings.Split(strings.TrimSpace(string(stdOut)), "\n") |
| 165 | + require.Len(t, lines, 7) |
| 166 | + require.Regexp(t, `^✓ Arduino_DebugUtils \d+\.\d+\.\d+ is already installed\.$`, lines[0]) |
| 167 | + require.Regexp(t, `^✓ MKRGSM \d+\.\d+\.\d+ is already installed\.$`, lines[1]) |
| 168 | + require.Regexp(t, `^✓ MKRNB \d+\.\d+\.\d+ is already installed\.$`, lines[2]) |
| 169 | + require.Regexp(t, `^✓ WiFiNINA \d+\.\d+\.\d+ is already installed\.$`, lines[3]) |
| 170 | + require.Regexp(t, `^✕ Arduino_ConnectionHandler \d+\.\d+\.\d+ must be installed\.$`, lines[4]) |
| 171 | + require.Regexp(t, `^✕ MKRWAN \d+\.\d+\.\d+ must be installed\.$`, lines[5]) |
| 172 | + require.Regexp(t, `^✕ WiFi101 \d+\.\d+\.\d+ must be installed\.$`, lines[6]) |
| 173 | + |
| 174 | + stdOut, _, err = cli.Run("lib", "deps", "Arduino_ConnectionHandler@0.6.6", "--format", "json") |
| 175 | + require.NoError(t, err) |
| 176 | + |
| 177 | + var jsonDeps struct { |
| 178 | + Dependencies []struct { |
| 179 | + Name string `json:"name"` |
| 180 | + VersionRequired string `json:"version_required"` |
| 181 | + VersionInstalled string `json:"version_installed"` |
| 182 | + } `json:"dependencies"` |
| 183 | + } |
| 184 | + err = json.Unmarshal(stdOut, &jsonDeps) |
| 185 | + require.NoError(t, err) |
| 186 | + |
| 187 | + require.Equal(t, "Arduino_ConnectionHandler", jsonDeps.Dependencies[0].Name) |
| 188 | + require.Empty(t, jsonDeps.Dependencies[0].VersionInstalled) |
| 189 | + require.Equal(t, "Arduino_DebugUtils", jsonDeps.Dependencies[1].Name) |
| 190 | + require.Equal(t, jsonDeps.Dependencies[1].VersionInstalled, jsonDeps.Dependencies[1].VersionRequired) |
| 191 | + require.Equal(t, "MKRGSM", jsonDeps.Dependencies[2].Name) |
| 192 | + require.Equal(t, jsonDeps.Dependencies[2].VersionInstalled, jsonDeps.Dependencies[2].VersionRequired) |
| 193 | + require.Equal(t, "MKRNB", jsonDeps.Dependencies[3].Name) |
| 194 | + require.Equal(t, jsonDeps.Dependencies[3].VersionInstalled, jsonDeps.Dependencies[3].VersionRequired) |
| 195 | + require.Equal(t, "MKRWAN", jsonDeps.Dependencies[4].Name) |
| 196 | + require.Empty(t, jsonDeps.Dependencies[4].VersionInstalled) |
| 197 | + require.Equal(t, "WiFi101", jsonDeps.Dependencies[5].Name) |
| 198 | + require.Empty(t, jsonDeps.Dependencies[5].VersionInstalled) |
| 199 | + require.Equal(t, "WiFiNINA", jsonDeps.Dependencies[6].Name) |
| 200 | + require.Equal(t, jsonDeps.Dependencies[6].VersionInstalled, jsonDeps.Dependencies[6].VersionRequired) |
| 201 | +} |
0 commit comments