1616package core
1717
1818import (
19+ "os"
1920 "testing"
2021
22+ "github.com/arduino/arduino-cli/cli/instance"
23+ "github.com/arduino/arduino-cli/configuration"
24+ "github.com/arduino/arduino-cli/rpc/commands"
25+ "github.com/arduino/go-paths-helper"
2126 "github.com/stretchr/testify/assert"
27+ "github.com/stretchr/testify/require"
2228)
2329
2430func TestMatch (t * testing.T ) {
@@ -27,3 +33,184 @@ func TestMatch(t *testing.T) {
2733 assert .True (t , match ("this is platform Foo" , "" ))
2834 assert .False (t , match ("this is platform Foo" , "Bar" ))
2935}
36+
37+ func TestPlatformSearch (t * testing.T ) {
38+
39+ dataDir := paths .TempDir ().Join ("test" , "data_dir" )
40+ downloadDir := paths .TempDir ().Join ("test" , "staging" )
41+ os .Setenv ("ARDUINO_DATA_DIR" , dataDir .String ())
42+ os .Setenv ("ARDUINO_DOWNLOADS_DIR" , downloadDir .String ())
43+ dataDir .MkdirAll ()
44+ downloadDir .MkdirAll ()
45+ defer paths .TempDir ().Join ("test" ).RemoveAll ()
46+ err := paths .New ("testdata" ).Join ("package_index.json" ).CopyTo (dataDir .Join ("package_index.json" ))
47+ require .Nil (t , err )
48+
49+ configuration .Init (paths .TempDir ().Join ("test" , "arduino-cli.yaml" ).String ())
50+
51+ inst , err := instance .CreateInstance ()
52+ require .Nil (t , err )
53+ require .NotNil (t , inst )
54+
55+ res , err := PlatformSearch (inst .GetId (), "retrokit" , true )
56+ require .Nil (t , err )
57+ require .NotNil (t , res )
58+
59+ require .Len (t , res .SearchOutput , 2 )
60+ require .Contains (t , res .SearchOutput , & commands.Platform {
61+ ID : "Retrokits-RK002:arm" ,
62+ Installed : "" ,
63+ Latest : "1.0.5" ,
64+ Name : "RK002" ,
65+ Maintainer : "Retrokits (www.retrokits.com)" ,
66+ Website : "https://www.retrokits.com" ,
67+ Email : "info@retrokits.com" ,
68+ Boards : []* commands.Board {{Name : "RK002" }},
69+ })
70+ require .Contains (t , res .SearchOutput , & commands.Platform {
71+ ID : "Retrokits-RK002:arm" ,
72+ Installed : "" ,
73+ Latest : "1.0.6" ,
74+ Name : "RK002" ,
75+ Maintainer : "Retrokits (www.retrokits.com)" ,
76+ Website : "https://www.retrokits.com" ,
77+ Email : "info@retrokits.com" ,
78+ Boards : []* commands.Board {{Name : "RK002" }},
79+ })
80+
81+ res , err = PlatformSearch (inst .GetId (), "retrokit" , false )
82+ require .Nil (t , err )
83+ require .NotNil (t , res )
84+ require .Len (t , res .SearchOutput , 1 )
85+ require .Contains (t , res .SearchOutput , & commands.Platform {
86+ ID : "Retrokits-RK002:arm" ,
87+ Installed : "" ,
88+ Latest : "1.0.6" ,
89+ Name : "RK002" ,
90+ Maintainer : "Retrokits (www.retrokits.com)" ,
91+ Website : "https://www.retrokits.com" ,
92+ Email : "info@retrokits.com" ,
93+ Boards : []* commands.Board {{Name : "RK002" }},
94+ })
95+
96+ // Search the Package Maintainer
97+ res , err = PlatformSearch (inst .GetId (), "Retrokits (www.retrokits.com)" , true )
98+ require .Nil (t , err )
99+ require .NotNil (t , res )
100+ require .Len (t , res .SearchOutput , 2 )
101+ require .Contains (t , res .SearchOutput , & commands.Platform {
102+ ID : "Retrokits-RK002:arm" ,
103+ Installed : "" ,
104+ Latest : "1.0.5" ,
105+ Name : "RK002" ,
106+ Maintainer : "Retrokits (www.retrokits.com)" ,
107+ Website : "https://www.retrokits.com" ,
108+ Email : "info@retrokits.com" ,
109+ Boards : []* commands.Board {{Name : "RK002" }},
110+ })
111+ require .Contains (t , res .SearchOutput , & commands.Platform {
112+ ID : "Retrokits-RK002:arm" ,
113+ Installed : "" ,
114+ Latest : "1.0.6" ,
115+ Name : "RK002" ,
116+ Maintainer : "Retrokits (www.retrokits.com)" ,
117+ Website : "https://www.retrokits.com" ,
118+ Email : "info@retrokits.com" ,
119+ Boards : []* commands.Board {{Name : "RK002" }},
120+ })
121+
122+ // Search using the Package name
123+ res , err = PlatformSearch (inst .GetId (), "Retrokits-RK002" , true )
124+ require .Nil (t , err )
125+ require .NotNil (t , res )
126+ require .Len (t , res .SearchOutput , 2 )
127+ require .Contains (t , res .SearchOutput , & commands.Platform {
128+ ID : "Retrokits-RK002:arm" ,
129+ Installed : "" ,
130+ Latest : "1.0.5" ,
131+ Name : "RK002" ,
132+ Maintainer : "Retrokits (www.retrokits.com)" ,
133+ Website : "https://www.retrokits.com" ,
134+ Email : "info@retrokits.com" ,
135+ Boards : []* commands.Board {{Name : "RK002" }},
136+ })
137+ require .Contains (t , res .SearchOutput , & commands.Platform {
138+ ID : "Retrokits-RK002:arm" ,
139+ Installed : "" ,
140+ Latest : "1.0.6" ,
141+ Name : "RK002" ,
142+ Maintainer : "Retrokits (www.retrokits.com)" ,
143+ Website : "https://www.retrokits.com" ,
144+ Email : "info@retrokits.com" ,
145+ Boards : []* commands.Board {{Name : "RK002" }},
146+ })
147+
148+ // Search using the Platform name
149+ res , err = PlatformSearch (inst .GetId (), "rk002" , true )
150+ require .Nil (t , err )
151+ require .NotNil (t , res )
152+ require .Len (t , res .SearchOutput , 2 )
153+ require .Contains (t , res .SearchOutput , & commands.Platform {
154+ ID : "Retrokits-RK002:arm" ,
155+ Installed : "" ,
156+ Latest : "1.0.5" ,
157+ Name : "RK002" ,
158+ Maintainer : "Retrokits (www.retrokits.com)" ,
159+ Website : "https://www.retrokits.com" ,
160+ Email : "info@retrokits.com" ,
161+ Boards : []* commands.Board {{Name : "RK002" }},
162+ })
163+ require .Contains (t , res .SearchOutput , & commands.Platform {
164+ ID : "Retrokits-RK002:arm" ,
165+ Installed : "" ,
166+ Latest : "1.0.6" ,
167+ Name : "RK002" ,
168+ Maintainer : "Retrokits (www.retrokits.com)" ,
169+ Website : "https://www.retrokits.com" ,
170+ Email : "info@retrokits.com" ,
171+ Boards : []* commands.Board {{Name : "RK002" }},
172+ })
173+
174+ // Search using a board name
175+ res , err = PlatformSearch (inst .GetId (), "Yún" , true )
176+ require .Nil (t , err )
177+ require .NotNil (t , res )
178+ require .Len (t , res .SearchOutput , 1 )
179+ require .Contains (t , res .SearchOutput , & commands.Platform {
180+ ID : "arduino:avr" ,
181+ Installed : "" ,
182+ Latest : "1.8.3" ,
183+ Name : "Arduino AVR Boards" ,
184+ Maintainer : "Arduino" ,
185+ Website : "https://www.arduino.cc/" ,
186+ Email : "packages@arduino.cc" ,
187+ Boards : []* commands.Board {
188+ {Name : "Arduino Yún" },
189+ {Name : "Arduino Uno" },
190+ {Name : "Arduino Uno WiFi" },
191+ {Name : "Arduino Diecimila" },
192+ {Name : "Arduino Nano" },
193+ {Name : "Arduino Mega" },
194+ {Name : "Arduino MegaADK" },
195+ {Name : "Arduino Leonardo" },
196+ {Name : "Arduino Leonardo Ethernet" },
197+ {Name : "Arduino Micro" },
198+ {Name : "Arduino Esplora" },
199+ {Name : "Arduino Mini" },
200+ {Name : "Arduino Ethernet" },
201+ {Name : "Arduino Fio" },
202+ {Name : "Arduino BT" },
203+ {Name : "Arduino LilyPadUSB" },
204+ {Name : "Arduino Lilypad" },
205+ {Name : "Arduino Pro" },
206+ {Name : "Arduino ATMegaNG" },
207+ {Name : "Arduino Robot Control" },
208+ {Name : "Arduino Robot Motor" },
209+ {Name : "Arduino Gemma" },
210+ {Name : "Adafruit Circuit Playground" },
211+ {Name : "Arduino Yún Mini" },
212+ {Name : "Arduino Industrial 101" },
213+ {Name : "Linino One" },
214+ },
215+ })
216+ }
0 commit comments