From 5730e2ebbed39452a3a0517bb3571a1b94d864f7 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 21 Sep 2022 14:08:14 +0200 Subject: [PATCH] Do not treat custom menu options without label as 'malformed' (#1882) * Do not treat custom menu items without label as 'malformed' * Fixed tests --- arduino/cores/packagemanager/loader.go | 22 ------- test/test_core.py | 50 +-------------- .../boards.txt | 63 ------------------- .../platform.txt | 2 - 4 files changed, 2 insertions(+), 135 deletions(-) delete mode 100644 test/testdata/platform_with_wrong_custom_board_options/boards.txt delete mode 100644 test/testdata/platform_with_wrong_custom_board_options/platform.txt diff --git a/arduino/cores/packagemanager/loader.go b/arduino/cores/packagemanager/loader.go index a7a64a99bd9..75d04d9ecdb 100644 --- a/arduino/cores/packagemanager/loader.go +++ b/arduino/cores/packagemanager/loader.go @@ -481,25 +481,8 @@ func (pm *Builder) loadBoards(platform *cores.PlatformRelease) error { // set all other boards properties delete(propertiesByBoard, "menu") - skippedBoards := []string{} for boardID, boardProperties := range propertiesByBoard { var board *cores.Board - for key := range boardProperties.AsMap() { - if !strings.HasPrefix(key, "menu.") { - continue - } - // Menu keys are formed like this: - // menu.cache.off=false - // menu.cache.on=true - // so we assume that the a second element in the slice exists - menuName := strings.Split(key, ".")[1] - if !platform.Menus.ContainsKey(menuName) { - fqbn := fmt.Sprintf("%s:%s:%s", platform.Platform.Package.Name, platform.Platform.Architecture, boardID) - skippedBoards = append(skippedBoards, fqbn) - goto next_board - } - } - if !platform.PluggableDiscoveryAware { convertVidPidIdentificationPropertiesToPluggableDiscovery(boardProperties) convertUploadToolsToPluggableDiscovery(boardProperties) @@ -514,11 +497,6 @@ func (pm *Builder) loadBoards(platform *cores.PlatformRelease) error { boardProperties.Set("_id", boardID) board = platform.GetOrCreateBoard(boardID) board.Properties.Merge(boardProperties) - next_board: - } - - if len(skippedBoards) > 0 { - return fmt.Errorf(tr("skipping loading of boards %s: malformed custom board options"), strings.Join(skippedBoards, ", ")) } return nil diff --git a/test/test_core.py b/test/test_core.py index 748714f7c05..ed5f154c9ce 100644 --- a/test/test_core.py +++ b/test/test_core.py @@ -654,44 +654,6 @@ def test_core_download_multiple_platforms(run_command, data_dir): assert "Invalid argument passed: Found 2 platform for reference" in res.stderr -def test_core_with_wrong_custom_board_options_is_loaded(run_command, data_dir): - test_platform_name = "platform_with_wrong_custom_board_options" - platform_install_dir = Path(data_dir, "hardware", "arduino-beta-dev", test_platform_name) - platform_install_dir.mkdir(parents=True) - - # Install platform in Sketchbook hardware dir - shutil.copytree( - Path(__file__).parent / "testdata" / test_platform_name, - platform_install_dir, - dirs_exist_ok=True, - ) - - assert run_command(["update"]) - - res = run_command(["core", "list", "--format", "json"]) - assert res.ok - - cores = json.loads(res.stdout) - mapped = {core["id"]: core for core in cores} - assert len(mapped) == 1 - # Verifies platform is loaded except excluding board with wrong options - assert "arduino-beta-dev:platform_with_wrong_custom_board_options" in mapped - boards = {b["fqbn"]: b for b in mapped["arduino-beta-dev:platform_with_wrong_custom_board_options"]["boards"]} - assert len(boards) == 1 - # Verify board with malformed options is not loaded - assert "arduino-beta-dev:platform_with_wrong_custom_board_options:nessuno" not in boards - # Verify other board is loaded - assert "arduino-beta-dev:platform_with_wrong_custom_board_options:altra" in boards - # Verify warning is shown to user - assert ( - "Error initializing instance: Error loading hardware platform: " - + "loading platform release arduino-beta-dev:platform_with_wrong_custom_board_options@4.2.0: " - + "loading boards: " - + "skipping loading of boards arduino-beta-dev:platform_with_wrong_custom_board_options:nessuno: " - + "malformed custom board options" - ) in res.stderr - - def test_core_with_missing_custom_board_options_is_loaded(run_command, data_dir): test_platform_name = "platform_with_missing_custom_board_options" 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) # Verifies platform is loaded except excluding board with missing options assert "arduino-beta-dev:platform_with_missing_custom_board_options" in mapped boards = {b["fqbn"]: b for b in mapped["arduino-beta-dev:platform_with_missing_custom_board_options"]["boards"]} - assert len(boards) == 1 + assert len(boards) == 2 # Verify board with malformed options is not loaded - assert "arduino-beta-dev:platform_with_missing_custom_board_options:nessuno" not in boards + assert "arduino-beta-dev:platform_with_missing_custom_board_options:nessuno" in boards # Verify other board is loaded assert "arduino-beta-dev:platform_with_missing_custom_board_options:altra" in boards - # Verify warning is shown to user - assert ( - "Error initializing instance: Error loading hardware platform: " - + "loading platform release arduino-beta-dev:platform_with_missing_custom_board_options@4.2.0: " - + "loading boards: " - + "skipping loading of boards arduino-beta-dev:platform_with_missing_custom_board_options:nessuno: " - + "malformed custom board options" - ) in res.stderr def test_core_list_outdated_core(run_command): diff --git a/test/testdata/platform_with_wrong_custom_board_options/boards.txt b/test/testdata/platform_with_wrong_custom_board_options/boards.txt deleted file mode 100644 index 7eb84395f77..00000000000 --- a/test/testdata/platform_with_wrong_custom_board_options/boards.txt +++ /dev/null @@ -1,63 +0,0 @@ -menu.cpu=Processor - -nessuno.name=Arduino Nessuno -nessuno.vid.0=0x2341 -nessuno.pid.0=0x0043 -nessuno.vid.1=0x2341 -nessuno.pid.1=0x0001 -nessuno.vid.2=0x2A03 -nessuno.pid.2=0x0043 -nessuno.vid.3=0x2341 -nessuno.pid.3=0x0243 -nessuno.upload.tool=avrdude -nessuno.upload.protocol=arduino -nessuno.upload.maximum_size=32256 -nessuno.upload.maximum_data_size=2048 -nessuno.upload.speed=115200 -nessuno.bootloader.tool=avrdude -nessuno.bootloader.low_fuses=0xFF -nessuno.bootloader.high_fuses=0xDE -nessuno.bootloader.extended_fuses=0xFD -nessuno.bootloader.unlock_bits=0x3F -nessuno.bootloader.lock_bits=0x0F -nessuno.bootloader.file=optiboot/optiboot_atmega328.hex -nessuno.build.mcu=atmega328p -nessuno.build.f_cpu=16000000L -nessuno.build.board=AVR_NESSUNO -nessuno.build.core=arduino -nessuno.build.variant=standard - -nessuno.menu.cache.on=Enabled -nessuno.menu.cache.on.build.cache_flags=-DENABLE_CACHE -nessuno.menu.cache.off=Disabled -nessuno.menu.cache.off.build.cache_flags= - -altra.name=Arduino Altra -altra.vid.0=0x2341 -altra.pid.0=0x0043 -altra.vid.1=0x2341 -altra.pid.1=0x0001 -altra.vid.2=0x2A03 -altra.pid.2=0x0043 -altra.vid.3=0x2341 -altra.pid.3=0x0243 -altra.upload.tool=avrdude -altra.upload.protocol=arduino -altra.upload.maximum_size=32256 -altra.upload.maximum_data_size=2048 -altra.upload.speed=115200 -altra.bootloader.tool=avrdude -altra.bootloader.low_fuses=0xFF -altra.bootloader.high_fuses=0xDE -altra.bootloader.extended_fuses=0xFD -altra.bootloader.unlock_bits=0x3F -altra.bootloader.lock_bits=0x0F -altra.bootloader.file=optiboot/optiboot_atmega328.hex -altra.build.mcu=atmega328p -altra.build.f_cpu=16000000L -altra.build.board=AVR_ALTRA -altra.build.core=arduino -altra.build.variant=standard -altra.menu.cpu.atmega328=ATmega328P -altra.menu.cpu.atmega168=ATmega168 -altra.menufoo=bar diff --git a/test/testdata/platform_with_wrong_custom_board_options/platform.txt b/test/testdata/platform_with_wrong_custom_board_options/platform.txt deleted file mode 100644 index 682f130ed49..00000000000 --- a/test/testdata/platform_with_wrong_custom_board_options/platform.txt +++ /dev/null @@ -1,2 +0,0 @@ -name=Arduino Test Boards -version=4.2.0 \ No newline at end of file