@@ -17,6 +17,7 @@ package lib_test
1717
1818import (
1919 "encoding/json"
20+ "fmt"
2021 "io"
2122 "net/http"
2223 "strings"
@@ -718,3 +719,48 @@ func TestLibOpsCaseInsensitive(t *testing.T) {
718719 require .NoError (t , err )
719720 requirejson .Len (t , stdout , 0 )
720721}
722+
723+ func TestSearch (t * testing.T ) {
724+ env , cli := integrationtest .CreateArduinoCLIWithEnvironment (t )
725+ defer env .CleanUp ()
726+
727+ stdout , _ , err := cli .Run ("lib" , "search" , "--names" )
728+ require .NoError (t , err )
729+ lines := strings .Split (strings .TrimSpace (string (stdout )), "\n " )
730+ var libs []string
731+ for i , v := range lines {
732+ lines [i ] = strings .TrimSpace (v )
733+ if strings .Contains (v , "Name:" ) {
734+ libs = append (libs , strings .Trim (strings .SplitN (v , " " , 2 )[1 ], "\" " ))
735+ }
736+ }
737+
738+ expected := []string {"WiFi101" , "WiFi101OTA" , "Firebase Arduino based on WiFi101" , "WiFi101_Generic" }
739+ require .Subset (t , libs , expected )
740+
741+ stdout , _ , err = cli .Run ("lib" , "search" , "--names" , "--format" , "json" )
742+ require .NoError (t , err )
743+ requirejson .Query (t , stdout , ".libraries | length" , fmt .Sprint (len (libs )))
744+
745+ runSearch := func (args string , expectedLibs []string ) {
746+ stdout , _ , err = cli .Run ("lib" , "search" , "--names" , "--format" , "json" , args )
747+ require .NoError (t , err )
748+ libraries := requirejson .Parse (t , stdout ).Query ("[ .libraries | .[] | .name ]" ).String ()
749+ for _ , l := range expectedLibs {
750+ require .Contains (t , libraries , l )
751+ }
752+ }
753+ runSearch ("Arduino_MKRIoTCarrier" , []string {"Arduino_MKRIoTCarrier" })
754+ runSearch ("Arduino mkr iot carrier" , []string {"Arduino_MKRIoTCarrier" })
755+ runSearch ("mkr iot carrier" , []string {"Arduino_MKRIoTCarrier" })
756+ runSearch ("mkriotcarrier" , []string {"Arduino_MKRIoTCarrier" })
757+ runSearch ("dht" , []string {"DHT sensor library" , "DHT sensor library for ESPx" , "DHT12" , "SimpleDHT" , "TinyDHT sensor library" , "SDHT" })
758+ runSearch ("dht11" , []string {"DHT sensor library" , "DHT sensor library for ESPx" , "SimpleDHT" , "SDHT" })
759+ runSearch ("dht12" , []string {"DHT12" , "DHT12 sensor library" , "SDHT" })
760+ runSearch ("dht22" , []string {"DHT sensor library" , "DHT sensor library for ESPx" , "SimpleDHT" , "SDHT" })
761+ runSearch ("dht sensor" , []string {"DHT sensor library" , "DHT sensor library for ESPx" , "SimpleDHT" , "SDHT" })
762+ runSearch ("sensor dht" , []string {})
763+ runSearch ("arduino json" , []string {"ArduinoJson" , "Arduino_JSON" })
764+ runSearch ("arduinojson" , []string {"ArduinoJson" })
765+ runSearch ("json" , []string {"ArduinoJson" , "Arduino_JSON" })
766+ }
0 commit comments