Skip to content

Commit 5730e2e

Browse files
authored
Do not treat custom menu options without label as 'malformed' (#1882)
* Do not treat custom menu items without label as 'malformed' * Fixed tests
1 parent b9599e1 commit 5730e2e

File tree

4 files changed

+2
-135
lines changed

4 files changed

+2
-135
lines changed

Diff for: arduino/cores/packagemanager/loader.go

-22
Original file line numberDiff line numberDiff line change
@@ -481,25 +481,8 @@ func (pm *Builder) loadBoards(platform *cores.PlatformRelease) error {
481481
// set all other boards properties
482482
delete(propertiesByBoard, "menu")
483483

484-
skippedBoards := []string{}
485484
for boardID, boardProperties := range propertiesByBoard {
486485
var board *cores.Board
487-
for key := range boardProperties.AsMap() {
488-
if !strings.HasPrefix(key, "menu.") {
489-
continue
490-
}
491-
// Menu keys are formed like this:
492-
// menu.cache.off=false
493-
// menu.cache.on=true
494-
// so we assume that the a second element in the slice exists
495-
menuName := strings.Split(key, ".")[1]
496-
if !platform.Menus.ContainsKey(menuName) {
497-
fqbn := fmt.Sprintf("%s:%s:%s", platform.Platform.Package.Name, platform.Platform.Architecture, boardID)
498-
skippedBoards = append(skippedBoards, fqbn)
499-
goto next_board
500-
}
501-
}
502-
503486
if !platform.PluggableDiscoveryAware {
504487
convertVidPidIdentificationPropertiesToPluggableDiscovery(boardProperties)
505488
convertUploadToolsToPluggableDiscovery(boardProperties)
@@ -514,11 +497,6 @@ func (pm *Builder) loadBoards(platform *cores.PlatformRelease) error {
514497
boardProperties.Set("_id", boardID)
515498
board = platform.GetOrCreateBoard(boardID)
516499
board.Properties.Merge(boardProperties)
517-
next_board:
518-
}
519-
520-
if len(skippedBoards) > 0 {
521-
return fmt.Errorf(tr("skipping loading of boards %s: malformed custom board options"), strings.Join(skippedBoards, ", "))
522500
}
523501

524502
return nil

Diff for: test/test_core.py

+2-48
Original file line numberDiff line numberDiff line change
@@ -654,44 +654,6 @@ def test_core_download_multiple_platforms(run_command, data_dir):
654654
assert "Invalid argument passed: Found 2 platform for reference" in res.stderr
655655

656656

657-
def test_core_with_wrong_custom_board_options_is_loaded(run_command, data_dir):
658-
test_platform_name = "platform_with_wrong_custom_board_options"
659-
platform_install_dir = Path(data_dir, "hardware", "arduino-beta-dev", test_platform_name)
660-
platform_install_dir.mkdir(parents=True)
661-
662-
# Install platform in Sketchbook hardware dir
663-
shutil.copytree(
664-
Path(__file__).parent / "testdata" / test_platform_name,
665-
platform_install_dir,
666-
dirs_exist_ok=True,
667-
)
668-
669-
assert run_command(["update"])
670-
671-
res = run_command(["core", "list", "--format", "json"])
672-
assert res.ok
673-
674-
cores = json.loads(res.stdout)
675-
mapped = {core["id"]: core for core in cores}
676-
assert len(mapped) == 1
677-
# Verifies platform is loaded except excluding board with wrong options
678-
assert "arduino-beta-dev:platform_with_wrong_custom_board_options" in mapped
679-
boards = {b["fqbn"]: b for b in mapped["arduino-beta-dev:platform_with_wrong_custom_board_options"]["boards"]}
680-
assert len(boards) == 1
681-
# Verify board with malformed options is not loaded
682-
assert "arduino-beta-dev:platform_with_wrong_custom_board_options:nessuno" not in boards
683-
# Verify other board is loaded
684-
assert "arduino-beta-dev:platform_with_wrong_custom_board_options:altra" in boards
685-
# Verify warning is shown to user
686-
assert (
687-
"Error initializing instance: Error loading hardware platform: "
688-
+ "loading platform release arduino-beta-dev:[email protected]: "
689-
+ "loading boards: "
690-
+ "skipping loading of boards arduino-beta-dev:platform_with_wrong_custom_board_options:nessuno: "
691-
+ "malformed custom board options"
692-
) in res.stderr
693-
694-
695657
def test_core_with_missing_custom_board_options_is_loaded(run_command, data_dir):
696658
test_platform_name = "platform_with_missing_custom_board_options"
697659
platform_install_dir = Path(data_dir, "hardware", "arduino-beta-dev", test_platform_name)
@@ -715,19 +677,11 @@ def test_core_with_missing_custom_board_options_is_loaded(run_command, data_dir)
715677
# Verifies platform is loaded except excluding board with missing options
716678
assert "arduino-beta-dev:platform_with_missing_custom_board_options" in mapped
717679
boards = {b["fqbn"]: b for b in mapped["arduino-beta-dev:platform_with_missing_custom_board_options"]["boards"]}
718-
assert len(boards) == 1
680+
assert len(boards) == 2
719681
# Verify board with malformed options is not loaded
720-
assert "arduino-beta-dev:platform_with_missing_custom_board_options:nessuno" not in boards
682+
assert "arduino-beta-dev:platform_with_missing_custom_board_options:nessuno" in boards
721683
# Verify other board is loaded
722684
assert "arduino-beta-dev:platform_with_missing_custom_board_options:altra" in boards
723-
# Verify warning is shown to user
724-
assert (
725-
"Error initializing instance: Error loading hardware platform: "
726-
+ "loading platform release arduino-beta-dev:[email protected]: "
727-
+ "loading boards: "
728-
+ "skipping loading of boards arduino-beta-dev:platform_with_missing_custom_board_options:nessuno: "
729-
+ "malformed custom board options"
730-
) in res.stderr
731685

732686

733687
def test_core_list_outdated_core(run_command):

Diff for: test/testdata/platform_with_wrong_custom_board_options/boards.txt

-63
This file was deleted.

Diff for: test/testdata/platform_with_wrong_custom_board_options/platform.txt

-2
This file was deleted.

0 commit comments

Comments
 (0)