@@ -310,3 +310,61 @@ func TestUpgradeLibraryWithDependencies(t *testing.T) {
310
310
dependency := jsonOut .Query (`.dependencies[] | select(.name=="MKRWAN")` )
311
311
require .Equal (t , dependency .Query (".version_required" ), dependency .Query (".version_installed" ))
312
312
}
313
+
314
+ func TestList (t * testing.T ) {
315
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
316
+ defer env .CleanUp ()
317
+
318
+ // Init the environment explicitly
319
+ _ , _ , err := cli .Run ("core" , "update-index" )
320
+ require .NoError (t , err )
321
+
322
+ // When output is empty, nothing is printed out, no matter the output format
323
+ stdout , stderr , err := cli .Run ("lib" , "list" )
324
+ require .NoError (t , err )
325
+ require .Empty (t , stderr )
326
+ require .Contains (t , strings .TrimSpace (string (stdout )), "No libraries installed." )
327
+ stdout , stderr , err = cli .Run ("lib" , "list" , "--format" , "json" )
328
+ require .NoError (t , err )
329
+ require .Empty (t , stderr )
330
+ requirejson .Empty (t , stdout )
331
+
332
+ // Install something we can list at a version older than latest
333
+ _ , _ , err = cli .Run ("lib" , "install" , "ArduinoJson@6.11.0" )
334
+ require .NoError (t , err )
335
+
336
+ // Look at the plain text output
337
+ stdout , stderr , err = cli .Run ("lib" , "list" )
338
+ require .NoError (t , err )
339
+ require .Empty (t , stderr )
340
+ lines := strings .Split (strings .TrimSpace (string (stdout )), "\n " )
341
+ require .Equal (t , 2 , len (lines ))
342
+ lines [1 ] = strings .Join (strings .Fields (lines [1 ]), " " )
343
+ toks := strings .SplitN (lines [1 ], " " , 5 )
344
+ // Verifies the expected number of field
345
+ require .Equal (t , 5 , len (toks ))
346
+ // be sure line contain the current version AND the available version
347
+ require .NotEmpty (t , toks [1 ])
348
+ require .NotEmpty (t , toks [2 ])
349
+ // Verifies library sentence
350
+ require .Contains (t , toks [4 ], "An efficient and elegant JSON library..." )
351
+
352
+ // Look at the JSON output
353
+ stdout , stderr , err = cli .Run ("lib" , "list" , "--format" , "json" )
354
+ require .NoError (t , err )
355
+ require .Empty (t , stderr )
356
+ requirejson .Len (t , stdout , 1 )
357
+ // be sure data contains the available version
358
+ requirejson .Query (t , stdout , ".[0] | .release | .version != \" \" " , "true" )
359
+
360
+ // Install something we can list without provides_includes field given in library.properties
361
+ _ , _ , err = cli .Run ("lib" , "install" , "Arduino_APDS9960@1.0.3" )
362
+ require .NoError (t , err )
363
+ // Look at the JSON output
364
+ stdout , stderr , err = cli .Run ("lib" , "list" , "Arduino_APDS9960" , "--format" , "json" )
365
+ require .NoError (t , err )
366
+ require .Empty (t , stderr )
367
+ requirejson .Len (t , stdout , 1 )
368
+ // be sure data contains the correct provides_includes field
369
+ requirejson .Query (t , stdout , ".[0] | .library | .provides_includes | .[0]" , "\" Arduino_APDS9960.h\" " )
370
+ }
0 commit comments