Skip to content

Commit 9f9c1b7

Browse files
Migrated TestBoardSearch from test_board.py to board_test.go
1 parent 600e968 commit 9f9c1b7

File tree

2 files changed

+119
-88
lines changed

2 files changed

+119
-88
lines changed

Diff for: internal/integrationtest/board/board_test.go

+119
Original file line numberDiff line numberDiff line change
@@ -311,3 +311,122 @@ func TestBoardDetailsListProgrammersFlag(t *testing.T) {
311311
require.Contains(t, lines, "atmel_ice Atmel-ICE")
312312
require.Contains(t, lines, "sam_ice Atmel SAM-ICE")
313313
}
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+
}

Diff for: test/test_board.py

-88
Original file line numberDiff line numberDiff line change
@@ -23,94 +23,6 @@
2323
from .common import running_on_ci
2424

2525

26-
def test_board_search(run_command, data_dir):
27-
assert run_command(["update"])
28-
29-
res = run_command(["board", "search", "--format", "json"])
30-
assert res.ok
31-
data = json.loads(res.stdout)
32-
# Verifies boards are returned
33-
assert len(data) > 0
34-
# Verifies no board has FQBN set since no platform is installed
35-
assert len([board["fqbn"] for board in data if "fqbn" in board]) == 0
36-
names = [board["name"] for board in data if "name" in board]
37-
assert "Arduino Uno" in names
38-
assert "Arduino Yún" in names
39-
assert "Arduino Zero" in names
40-
assert "Arduino Nano 33 BLE" in names
41-
assert "Arduino Portenta H7" in names
42-
43-
# Search in non installed boards
44-
res = run_command(["board", "search", "--format", "json", "nano", "33"])
45-
assert res.ok
46-
data = json.loads(res.stdout)
47-
# Verifies boards are returned
48-
assert len(data) > 0
49-
# Verifies no board has FQBN set since no platform is installed
50-
assert len([board["fqbn"] for board in data if "fqbn" in board]) == 0
51-
names = [board["name"] for board in data if "name" in board]
52-
assert "Arduino Nano 33 BLE" in names
53-
assert "Arduino Nano 33 IoT" in names
54-
55-
# Install a platform from index
56-
assert run_command(["core", "install", "arduino:[email protected]"])
57-
58-
res = run_command(["board", "search", "--format", "json"])
59-
assert res.ok
60-
data = json.loads(res.stdout)
61-
assert len(data) > 0
62-
# Verifies some FQBNs are now returned after installing a platform
63-
assert len([board["fqbn"] for board in data if "fqbn" in board]) == 26
64-
installed_boards = {board["fqbn"]: board for board in data if "fqbn" in board}
65-
assert "arduino:avr:uno" in installed_boards
66-
assert "Arduino Uno" == installed_boards["arduino:avr:uno"]["name"]
67-
assert "arduino:avr:yun" in installed_boards
68-
assert "Arduino Yún" == installed_boards["arduino:avr:yun"]["name"]
69-
70-
res = run_command(["board", "search", "--format", "json", "arduino", "yun"])
71-
assert res.ok
72-
data = json.loads(res.stdout)
73-
assert len(data) > 0
74-
installed_boards = {board["fqbn"]: board for board in data if "fqbn" in board}
75-
assert "arduino:avr:yun" in installed_boards
76-
assert "Arduino Yún" == installed_boards["arduino:avr:yun"]["name"]
77-
78-
# Manually installs a core in sketchbooks hardware folder
79-
git_url = "https://github.com/arduino/ArduinoCore-samd.git"
80-
repo_dir = Path(data_dir, "hardware", "arduino-beta-development", "samd")
81-
assert Repo.clone_from(git_url, repo_dir, multi_options=["-b 1.8.11"])
82-
83-
res = run_command(["board", "search", "--format", "json"])
84-
assert res.ok
85-
data = json.loads(res.stdout)
86-
assert len(data) > 0
87-
# Verifies some FQBNs are now returned after installing a platform
88-
assert len([board["fqbn"] for board in data if "fqbn" in board]) == 43
89-
installed_boards = {board["fqbn"]: board for board in data if "fqbn" in board}
90-
assert "arduino:avr:uno" in installed_boards
91-
assert "Arduino Uno" == installed_boards["arduino:avr:uno"]["name"]
92-
assert "arduino:avr:yun" in installed_boards
93-
assert "Arduino Yún" == installed_boards["arduino:avr:yun"]["name"]
94-
assert "arduino-beta-development:samd:mkrwifi1010" in installed_boards
95-
assert "Arduino MKR WiFi 1010" == installed_boards["arduino-beta-development:samd:mkrwifi1010"]["name"]
96-
assert "arduino-beta-development:samd:mkr1000" in installed_boards
97-
assert "Arduino MKR1000" == installed_boards["arduino-beta-development:samd:mkr1000"]["name"]
98-
assert "arduino-beta-development:samd:mkrzero" in installed_boards
99-
assert "Arduino MKRZERO" == installed_boards["arduino-beta-development:samd:mkrzero"]["name"]
100-
assert "arduino-beta-development:samd:nano_33_iot" in installed_boards
101-
assert "Arduino NANO 33 IoT" == installed_boards["arduino-beta-development:samd:nano_33_iot"]["name"]
102-
assert "arduino-beta-development:samd:arduino_zero_native" in installed_boards
103-
104-
res = run_command(["board", "search", "--format", "json", "mkr1000"])
105-
assert res.ok
106-
data = json.loads(res.stdout)
107-
assert len(data) > 0
108-
# Verifies some FQBNs are now returned after installing a platform
109-
installed_boards = {board["fqbn"]: board for board in data if "fqbn" in board}
110-
assert "arduino-beta-development:samd:mkr1000" in installed_boards
111-
assert "Arduino MKR1000" == installed_boards["arduino-beta-development:samd:mkr1000"]["name"]
112-
113-
11426
def test_board_attach_without_sketch_json(run_command, data_dir):
11527
run_command(["update"])
11628

0 commit comments

Comments
 (0)