@@ -199,3 +199,48 @@ func TestLibDepsOutput(t *testing.T) {
199
199
require .Equal (t , "WiFiNINA" , jsonDeps .Dependencies [6 ].Name )
200
200
require .Equal (t , jsonDeps .Dependencies [6 ].VersionInstalled , jsonDeps .Dependencies [6 ].VersionRequired )
201
201
}
202
+
203
+ func TestUpgradeLibraryWithDependencies (t * testing.T ) {
204
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
205
+ defer env .CleanUp ()
206
+
207
+ // Updates index for cores and libraries
208
+ _ , _ , err := cli .Run ("core" , "update-index" )
209
+ require .NoError (t , err )
210
+ _ , _ , err = cli .Run ("lib" , "update-index" )
211
+ require .NoError (t , err )
212
+
213
+ // Install library
214
+ _ ,
_ ,
err = cli .
Run (
"lib" ,
"install" ,
"[email protected] " )
215
+ require .NoError (t , err )
216
+ stdOut ,
_ ,
err := cli .
Run (
"lib" ,
"deps" ,
"[email protected] " ,
"--format" ,
"json" )
217
+ require .NoError (t , err )
218
+
219
+ var jsonDeps struct {
220
+ Dependencies []struct {
221
+ Name string `json:"name"`
222
+ VersionRequired string `json:"version_required"`
223
+ VersionInstalled string `json:"version_installed"`
224
+ } `json:"dependencies"`
225
+ }
226
+ err = json .Unmarshal (stdOut , & jsonDeps )
227
+ require .NoError (t , err )
228
+
229
+ require .Len (t , jsonDeps .Dependencies , 6 )
230
+ require .Equal (t , "Arduino_ConnectionHandler" , jsonDeps .Dependencies [0 ].Name )
231
+ require .Equal (t , "Arduino_DebugUtils" , jsonDeps .Dependencies [1 ].Name )
232
+ require .Equal (t , "MKRGSM" , jsonDeps .Dependencies [2 ].Name )
233
+ require .Equal (t , "MKRNB" , jsonDeps .Dependencies [3 ].Name )
234
+ require .Equal (t , "WiFi101" , jsonDeps .Dependencies [4 ].Name )
235
+ require .Equal (t , "WiFiNINA" , jsonDeps .Dependencies [5 ].Name )
236
+
237
+ // Test lib upgrade also install new dependencies of already installed library
238
+ _ , _ , err = cli .Run ("lib" , "upgrade" , "Arduino_ConnectionHandler" )
239
+ require .NoError (t , err )
240
+ stdOut , _ , err = cli .Run ("lib" , "deps" , "Arduino_ConnectionHandler" , "--format" , "json" )
241
+ require .NoError (t , err )
242
+
243
+ jsonOut := requirejson .Parse (t , stdOut )
244
+ dependency := jsonOut .Query (`.dependencies[] | select(.name=="MKRWAN")` )
245
+ require .Equal (t , dependency .Query (".version_required" ), dependency .Query (".version_installed" ))
246
+ }
0 commit comments