@@ -311,3 +311,122 @@ func TestBoardDetailsListProgrammersFlag(t *testing.T) {
311
311
require .Contains (t , lines , "atmel_ice Atmel-ICE" )
312
312
require .Contains (t , lines , "sam_ice Atmel SAM-ICE" )
313
313
}
314
+
315
+ func TestBoardSearch (t * testing.T ) {
316
+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
317
+ defer env .CleanUp ()
318
+
319
+ _ , _ , err := cli .Run ("update" )
320
+ require .NoError (t , err )
321
+
322
+ stdout , _ , err := cli .Run ("board" , "search" , "--format" , "json" )
323
+ require .NoError (t , err )
324
+ // Verifies boards are returned
325
+ requirejson .NotEmpty (t , stdout )
326
+ // Verifies no board has FQBN set since no platform is installed
327
+ requirejson .Query (t , stdout , "[ .[] | select(.fqbn) ] | length" , "0" )
328
+ requirejson .Contains (t , stdout , `[
329
+ {"name": "Arduino Uno"},
330
+ {"name": "Arduino Yún"},
331
+ {"name": "Arduino Zero"},
332
+ {"name": "Arduino Nano 33 BLE"},
333
+ {"name": "Arduino Portenta H7"}
334
+ ]` )
335
+
336
+ // Search in non installed boards
337
+ stdout , _ , err = cli .Run ("board" , "search" , "--format" , "json" , "nano" , "33" )
338
+ require .NoError (t , err )
339
+ // Verifies boards are returned
340
+ requirejson .NotEmpty (t , stdout )
341
+ // Verifies no board has FQBN set since no platform is installed
342
+ requirejson .Query (t , stdout , "[ .[] | select(.fqbn) ] | length" , "0" )
343
+ requirejson .Contains (t , stdout , `[
344
+ {"name": "Arduino Nano 33 BLE"},
345
+ {"name": "Arduino Nano 33 IoT"}
346
+ ]` )
347
+
348
+ // Install a platform from index
349
+ _ ,
_ ,
err = cli .
Run (
"core" ,
"install" ,
"arduino:[email protected] " )
350
+ require .NoError (t , err )
351
+
352
+ stdout , _ , err = cli .Run ("board" , "search" , "--format" , "json" )
353
+ require .NoError (t , err )
354
+ requirejson .NotEmpty (t , stdout )
355
+ // Verifies some FQBNs are now returned after installing a platform
356
+ requirejson .Query (t , stdout , "[ .[] | select(.fqbn) ] | length" , "26" )
357
+ requirejson .Contains (t , stdout , `[
358
+ {
359
+ "name": "Arduino Yún",
360
+ "fqbn": "arduino:avr:yun"
361
+ },
362
+ {
363
+ "name": "Arduino Uno",
364
+ "fqbn": "arduino:avr:uno"
365
+ }
366
+ ]` )
367
+
368
+ stdout , _ , err = cli .Run ("board" , "search" , "--format" , "json" , "arduino" , "yun" )
369
+ require .NoError (t , err )
370
+ requirejson .NotEmpty (t , stdout )
371
+ requirejson .Contains (t , stdout , `[
372
+ {
373
+ "name": "Arduino Yún",
374
+ "fqbn": "arduino:avr:yun"
375
+ }
376
+ ]` )
377
+
378
+ // Manually installs a core in sketchbooks hardware folder
379
+ gitUrl := "https://github.com/arduino/ArduinoCore-samd.git"
380
+ repoDir := cli .SketchbookDir ().Join ("hardware" , "arduino-beta-development" , "samd" )
381
+ _ , err = git .PlainClone (repoDir .String (), false , & git.CloneOptions {
382
+ URL : gitUrl ,
383
+ ReferenceName : plumbing .NewTagReferenceName ("1.8.11" ),
384
+ })
385
+ require .NoError (t , err )
386
+
387
+ stdout , _ , err = cli .Run ("board" , "search" , "--format" , "json" )
388
+ require .NoError (t , err )
389
+ requirejson .NotEmpty (t , stdout )
390
+ // Verifies some FQBNs are now returned after installing a platform
391
+ requirejson .Query (t , stdout , "[ .[] | select(.fqbn) ] | length" , "43" )
392
+ requirejson .Contains (t , stdout , `[
393
+ {
394
+ "name": "Arduino Uno",
395
+ "fqbn": "arduino:avr:uno"
396
+ },
397
+ {
398
+ "name": "Arduino Yún",
399
+ "fqbn": "arduino:avr:yun"
400
+ },
401
+ {
402
+ "name": "Arduino MKR WiFi 1010",
403
+ "fqbn": "arduino-beta-development:samd:mkrwifi1010"
404
+ },
405
+ {
406
+ "name": "Arduino MKR1000",
407
+ "fqbn": "arduino-beta-development:samd:mkr1000"
408
+ },
409
+ {
410
+ "name": "Arduino MKRZERO",
411
+ "fqbn": "arduino-beta-development:samd:mkrzero"
412
+ },
413
+ {
414
+ "name": "Arduino NANO 33 IoT",
415
+ "fqbn": "arduino-beta-development:samd:nano_33_iot"
416
+ },
417
+ {
418
+ "fqbn": "arduino-beta-development:samd:arduino_zero_native"
419
+ }
420
+ ]` )
421
+
422
+ stdout , _ , err = cli .Run ("board" , "search" , "--format" , "json" , "mkr1000" )
423
+ require .NoError (t , err )
424
+ requirejson .NotEmpty (t , stdout )
425
+ // Verifies some FQBNs are now returned after installing a platform
426
+ requirejson .Contains (t , stdout , `[
427
+ {
428
+ "name": "Arduino MKR1000",
429
+ "fqbn": "arduino-beta-development:samd:mkr1000"
430
+ }
431
+ ]` )
432
+ }
0 commit comments