@@ -199,3 +199,48 @@ func TestLibDepsOutput(t *testing.T) {
199199 require .Equal (t , "WiFiNINA" , jsonDeps .Dependencies [6 ].Name )
200200 require .Equal (t , jsonDeps .Dependencies [6 ].VersionInstalled , jsonDeps .Dependencies [6 ].VersionRequired )
201201}
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" , "Arduino_ConnectionHandler@0.3.3" )
215+ require .NoError (t , err )
216+ stdOut , _ , err := cli .Run ("lib" , "deps" , "Arduino_ConnectionHandler@0.3.3" , "--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