|
16 | 16 | package core
|
17 | 17 |
|
18 | 18 | import (
|
| 19 | + "context" |
19 | 20 | "os"
|
20 | 21 | "testing"
|
21 | 22 |
|
22 |
| - "github.com/arduino/arduino-cli/cli/instance" |
23 |
| - "github.com/arduino/arduino-cli/configuration" |
24 |
| - "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" |
| 23 | + "github.com/arduino/arduino-cli/commands" |
| 24 | + "github.com/arduino/arduino-cli/httpclient" |
25 | 25 | rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
|
26 | 26 | "github.com/arduino/go-paths-helper"
|
27 | 27 | "github.com/stretchr/testify/require"
|
28 | 28 | )
|
29 | 29 |
|
30 | 30 | func TestPlatformSearch(t *testing.T) {
|
31 |
| - |
32 |
| - dataDir := paths.TempDir().Join("test", "data_dir") |
33 |
| - downloadDir := paths.TempDir().Join("test", "staging") |
| 31 | + testDir := paths.TempDir().Join("test", t.Name()) |
| 32 | + dataDir := testDir.Join("data_dir") |
| 33 | + downloadDir := testDir.Join("staging") |
34 | 34 | os.Setenv("ARDUINO_DATA_DIR", dataDir.String())
|
35 | 35 | os.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String())
|
36 | 36 | dataDir.MkdirAll()
|
37 | 37 | downloadDir.MkdirAll()
|
38 |
| - defer paths.TempDir().Join("test").RemoveAll() |
| 38 | + defer testDir.RemoveAll() |
39 | 39 | err := paths.New("testdata").Join("package_index.json").CopyTo(dataDir.Join("package_index.json"))
|
40 | 40 | require.Nil(t, err)
|
41 | 41 |
|
42 |
| - configuration.Settings = configuration.Init(paths.TempDir().Join("test", "arduino-cli.yaml").String()) |
43 |
| - |
44 |
| - inst := instance.CreateAndInit() |
| 42 | + createRes, err := commands.Create(&rpc.CreateRequest{ |
| 43 | + ConfigFile: testDir.Join("arduino-cli.yaml").String(), |
| 44 | + }) |
| 45 | + require.NoError(t, err) |
| 46 | + inst := commands.GetInstance(createRes.Instance.Id) |
45 | 47 | require.NotNil(t, inst)
|
| 48 | + config, err := httpclient.ConfigFromSettings(inst.Settings) |
| 49 | + require.NoError(t, err) |
| 50 | + httpclient.Init(config) |
| 51 | + commands.Init(&rpc.InitRequest{ |
| 52 | + Instance: inst.ToRPC(), |
| 53 | + }, nil) |
| 54 | + defer commands.Destroy(context.Background(), &rpc.DestroyRequest{Instance: inst.ToRPC()}) |
46 | 55 |
|
47 |
| - res, stat := PlatformSearch(&rpc.PlatformSearchRequest{ |
48 |
| - Instance: inst, |
| 56 | + res, err := PlatformSearch(&rpc.PlatformSearchRequest{ |
| 57 | + Instance: inst.ToRPC(), |
49 | 58 | SearchArgs: "retrokit",
|
50 | 59 | AllVersions: true,
|
51 | 60 | })
|
52 |
| - require.Nil(t, stat) |
| 61 | + require.Nil(t, err) |
53 | 62 | require.NotNil(t, res)
|
54 | 63 |
|
55 | 64 | require.Len(t, res.SearchOutput, 2)
|
56 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 65 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
57 | 66 | Id: "Retrokits-RK002:arm",
|
58 | 67 | Installed: "",
|
59 | 68 | Latest: "1.0.5",
|
60 | 69 | Name: "RK002",
|
61 | 70 | Maintainer: "Retrokits (www.retrokits.com)",
|
62 | 71 | Website: "https://www.retrokits.com",
|
63 | 72 | Email: "info@retrokits.com",
|
64 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 73 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
65 | 74 | })
|
66 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 75 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
67 | 76 | Id: "Retrokits-RK002:arm",
|
68 | 77 | Installed: "",
|
69 | 78 | Latest: "1.0.6",
|
70 | 79 | Name: "RK002",
|
71 | 80 | Maintainer: "Retrokits (www.retrokits.com)",
|
72 | 81 | Website: "https://www.retrokits.com",
|
73 | 82 | Email: "info@retrokits.com",
|
74 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 83 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
75 | 84 | })
|
76 | 85 |
|
77 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
78 |
| - Instance: inst, |
| 86 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 87 | + Instance: inst.ToRPC(), |
79 | 88 | SearchArgs: "retrokit",
|
80 | 89 | AllVersions: false,
|
81 | 90 | })
|
82 |
| - require.Nil(t, stat) |
| 91 | + require.Nil(t, err) |
83 | 92 | require.NotNil(t, res)
|
84 | 93 | require.Len(t, res.SearchOutput, 1)
|
85 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 94 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
86 | 95 | Id: "Retrokits-RK002:arm",
|
87 | 96 | Installed: "",
|
88 | 97 | Latest: "1.0.6",
|
89 | 98 | Name: "RK002",
|
90 | 99 | Maintainer: "Retrokits (www.retrokits.com)",
|
91 | 100 | Website: "https://www.retrokits.com",
|
92 | 101 | Email: "info@retrokits.com",
|
93 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 102 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
94 | 103 | })
|
95 | 104 |
|
96 | 105 | // Search the Package Maintainer
|
97 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
98 |
| - Instance: inst, |
| 106 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 107 | + Instance: inst.ToRPC(), |
99 | 108 | SearchArgs: "Retrokits (www.retrokits.com)",
|
100 | 109 | AllVersions: true,
|
101 | 110 | })
|
102 |
| - require.Nil(t, stat) |
| 111 | + require.Nil(t, err) |
103 | 112 | require.NotNil(t, res)
|
104 | 113 | require.Len(t, res.SearchOutput, 2)
|
105 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 114 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
106 | 115 | Id: "Retrokits-RK002:arm",
|
107 | 116 | Installed: "",
|
108 | 117 | Latest: "1.0.5",
|
109 | 118 | Name: "RK002",
|
110 | 119 | Maintainer: "Retrokits (www.retrokits.com)",
|
111 | 120 | Website: "https://www.retrokits.com",
|
112 | 121 | Email: "info@retrokits.com",
|
113 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 122 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
114 | 123 | })
|
115 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 124 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
116 | 125 | Id: "Retrokits-RK002:arm",
|
117 | 126 | Installed: "",
|
118 | 127 | Latest: "1.0.6",
|
119 | 128 | Name: "RK002",
|
120 | 129 | Maintainer: "Retrokits (www.retrokits.com)",
|
121 | 130 | Website: "https://www.retrokits.com",
|
122 | 131 | Email: "info@retrokits.com",
|
123 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 132 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
124 | 133 | })
|
125 | 134 |
|
126 | 135 | // Search using the Package name
|
127 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
128 |
| - Instance: inst, |
| 136 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 137 | + Instance: inst.ToRPC(), |
129 | 138 | SearchArgs: "Retrokits-RK002",
|
130 | 139 | AllVersions: true,
|
131 | 140 | })
|
132 |
| - require.Nil(t, stat) |
| 141 | + require.Nil(t, err) |
133 | 142 | require.NotNil(t, res)
|
134 | 143 | require.Len(t, res.SearchOutput, 2)
|
135 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 144 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
136 | 145 | Id: "Retrokits-RK002:arm",
|
137 | 146 | Installed: "",
|
138 | 147 | Latest: "1.0.5",
|
139 | 148 | Name: "RK002",
|
140 | 149 | Maintainer: "Retrokits (www.retrokits.com)",
|
141 | 150 | Website: "https://www.retrokits.com",
|
142 | 151 | Email: "info@retrokits.com",
|
143 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 152 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
144 | 153 | })
|
145 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 154 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
146 | 155 | Id: "Retrokits-RK002:arm",
|
147 | 156 | Installed: "",
|
148 | 157 | Latest: "1.0.6",
|
149 | 158 | Name: "RK002",
|
150 | 159 | Maintainer: "Retrokits (www.retrokits.com)",
|
151 | 160 | Website: "https://www.retrokits.com",
|
152 | 161 | Email: "info@retrokits.com",
|
153 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 162 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
154 | 163 | })
|
155 | 164 |
|
156 | 165 | // Search using the Platform name
|
157 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
158 |
| - Instance: inst, |
| 166 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 167 | + Instance: inst.ToRPC(), |
159 | 168 | SearchArgs: "rk002",
|
160 | 169 | AllVersions: true,
|
161 | 170 | })
|
162 |
| - require.Nil(t, stat) |
| 171 | + require.Nil(t, err) |
163 | 172 | require.NotNil(t, res)
|
164 | 173 | require.Len(t, res.SearchOutput, 2)
|
165 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 174 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
166 | 175 | Id: "Retrokits-RK002:arm",
|
167 | 176 | Installed: "",
|
168 | 177 | Latest: "1.0.5",
|
169 | 178 | Name: "RK002",
|
170 | 179 | Maintainer: "Retrokits (www.retrokits.com)",
|
171 | 180 | Website: "https://www.retrokits.com",
|
172 | 181 | Email: "info@retrokits.com",
|
173 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 182 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
174 | 183 | })
|
175 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 184 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
176 | 185 | Id: "Retrokits-RK002:arm",
|
177 | 186 | Installed: "",
|
178 | 187 | Latest: "1.0.6",
|
179 | 188 | Name: "RK002",
|
180 | 189 | Maintainer: "Retrokits (www.retrokits.com)",
|
181 | 190 | Website: "https://www.retrokits.com",
|
182 | 191 | Email: "info@retrokits.com",
|
183 |
| - Boards: []*commands.Board{{Name: "RK002"}}, |
| 192 | + Boards: []*rpc.Board{{Name: "RK002"}}, |
184 | 193 | })
|
185 | 194 |
|
186 | 195 | // Search using a board name
|
187 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
188 |
| - Instance: inst, |
| 196 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 197 | + Instance: inst.ToRPC(), |
189 | 198 | SearchArgs: "Yún",
|
190 | 199 | AllVersions: true,
|
191 | 200 | })
|
192 |
| - require.Nil(t, stat) |
| 201 | + require.Nil(t, err) |
193 | 202 | require.NotNil(t, res)
|
194 | 203 | require.Len(t, res.SearchOutput, 1)
|
195 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 204 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
196 | 205 | Id: "arduino:avr",
|
197 | 206 | Installed: "",
|
198 | 207 | Latest: "1.8.3",
|
199 | 208 | Name: "Arduino AVR Boards",
|
200 | 209 | Maintainer: "Arduino",
|
201 | 210 | Website: "https://www.arduino.cc/",
|
202 | 211 | Email: "packages@arduino.cc",
|
203 |
| - Boards: []*commands.Board{ |
| 212 | + Boards: []*rpc.Board{ |
204 | 213 | {Name: "Arduino Yún"},
|
205 | 214 | {Name: "Arduino Uno"},
|
206 | 215 | {Name: "Arduino Uno WiFi"},
|
@@ -230,23 +239,23 @@ func TestPlatformSearch(t *testing.T) {
|
230 | 239 | },
|
231 | 240 | })
|
232 | 241 |
|
233 |
| - res, stat = PlatformSearch(&rpc.PlatformSearchRequest{ |
234 |
| - Instance: inst, |
| 242 | + res, err = PlatformSearch(&rpc.PlatformSearchRequest{ |
| 243 | + Instance: inst.ToRPC(), |
235 | 244 | SearchArgs: "yun",
|
236 | 245 | AllVersions: true,
|
237 | 246 | })
|
238 |
| - require.Nil(t, stat) |
| 247 | + require.Nil(t, err) |
239 | 248 | require.NotNil(t, res)
|
240 | 249 | require.Len(t, res.SearchOutput, 1)
|
241 |
| - require.Contains(t, res.SearchOutput, &commands.Platform{ |
| 250 | + require.Contains(t, res.SearchOutput, &rpc.Platform{ |
242 | 251 | Id: "arduino:avr",
|
243 | 252 | Installed: "",
|
244 | 253 | Latest: "1.8.3",
|
245 | 254 | Name: "Arduino AVR Boards",
|
246 | 255 | Maintainer: "Arduino",
|
247 | 256 | Website: "https://www.arduino.cc/",
|
248 | 257 | Email: "packages@arduino.cc",
|
249 |
| - Boards: []*commands.Board{ |
| 258 | + Boards: []*rpc.Board{ |
250 | 259 | {Name: "Arduino Yún"},
|
251 | 260 | {Name: "Arduino Uno"},
|
252 | 261 | {Name: "Arduino Uno WiFi"},
|
@@ -278,23 +287,33 @@ func TestPlatformSearch(t *testing.T) {
|
278 | 287 | }
|
279 | 288 |
|
280 | 289 | func TestPlatformSearchSorting(t *testing.T) {
|
281 |
| - dataDir := paths.TempDir().Join("test", "data_dir") |
282 |
| - downloadDir := paths.TempDir().Join("test", "staging") |
| 290 | + testDir := paths.TempDir().Join("test", t.Name()) |
| 291 | + dataDir := testDir.Join("data_dir") |
| 292 | + downloadDir := testDir.Join("staging") |
283 | 293 | os.Setenv("ARDUINO_DATA_DIR", dataDir.String())
|
284 | 294 | os.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String())
|
285 | 295 | dataDir.MkdirAll()
|
286 | 296 | downloadDir.MkdirAll()
|
287 |
| - defer paths.TempDir().Join("test").RemoveAll() |
| 297 | + defer testDir.RemoveAll() |
288 | 298 | err := paths.New("testdata").Join("package_index.json").CopyTo(dataDir.Join("package_index.json"))
|
289 | 299 | require.Nil(t, err)
|
290 | 300 |
|
291 |
| - configuration.Settings = configuration.Init(paths.TempDir().Join("test", "arduino-cli.yaml").String()) |
292 |
| - |
293 |
| - inst := instance.CreateAndInit() |
| 301 | + createRes, err := commands.Create(&rpc.CreateRequest{ |
| 302 | + ConfigFile: testDir.Join("arduino-cli.yaml").String(), |
| 303 | + }) |
| 304 | + require.NoError(t, err) |
| 305 | + inst := commands.GetInstance(createRes.Instance.Id) |
294 | 306 | require.NotNil(t, inst)
|
| 307 | + config, err := httpclient.ConfigFromSettings(inst.Settings) |
| 308 | + require.NoError(t, err) |
| 309 | + httpclient.Init(config) |
| 310 | + commands.Init(&rpc.InitRequest{ |
| 311 | + Instance: inst.ToRPC(), |
| 312 | + }, nil) |
| 313 | + defer commands.Destroy(context.Background(), &rpc.DestroyRequest{Instance: inst.ToRPC()}) |
295 | 314 |
|
296 | 315 | res, stat := PlatformSearch(&rpc.PlatformSearchRequest{
|
297 |
| - Instance: inst, |
| 316 | + Instance: inst.ToRPC(), |
298 | 317 | SearchArgs: "",
|
299 | 318 | AllVersions: false,
|
300 | 319 | })
|
|
0 commit comments