Skip to content

Commit 9c80956

Browse files
Migrated TestBoardSearch from test_board.py to board_test.go
1 parent 4b384f1 commit 9c80956

File tree

2 files changed

+119
-88
lines changed

2 files changed

+119
-88
lines changed

internal/integrationtest/board/board_test.go

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

test/test_board.py

Lines changed: 0 additions & 88 deletions
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:avr@1.8.3"])
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)