From 28fa62a3bfbad2ef59318a2c959f5940c14e9e13 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 23 Nov 2023 15:45:37 +0100 Subject: [PATCH] Added additional_config selector for debug configuration --- commands/debug/debug_info.go | 6 ++ internal/integrationtest/debug/debug_test.go | 57 +++++++++++++++++++ .../testdata/hardware/my/samd/boards.txt | 25 ++++++++ .../testdata/hardware/my/samd/platform.txt | 5 ++ 4 files changed, 93 insertions(+) create mode 100644 internal/integrationtest/debug/testdata/hardware/my/samd/platform.txt diff --git a/commands/debug/debug_info.go b/commands/debug/debug_info.go index 2f3abeb94b1..6b8064e9d8f 100644 --- a/commands/debug/debug_info.go +++ b/commands/debug/debug_info.go @@ -133,6 +133,12 @@ func getDebugProperties(req *rpc.GetDebugConfigRequest, pme *packagemanager.Expl for k, v := range toolProperties.SubTree("debug").AsMap() { debugProperties.Set(k, toolProperties.ExpandPropsInString(v)) } + if debugAdditionalConfig, ok := toolProperties.GetOk("debug.additional_config"); ok { + debugAdditionalConfig = toolProperties.ExpandPropsInString(debugAdditionalConfig) + for k, v := range toolProperties.SubTree(debugAdditionalConfig).AsMap() { + debugProperties.Set(k, toolProperties.ExpandPropsInString(v)) + } + } if !debugProperties.ContainsKey("executable") { return nil, &arduino.FailedDebugError{Message: tr("Debugging not supported for board %s", req.GetFqbn())} diff --git a/internal/integrationtest/debug/debug_test.go b/internal/integrationtest/debug/debug_test.go index 8d3d972af8f..a01597468ec 100644 --- a/internal/integrationtest/debug/debug_test.go +++ b/internal/integrationtest/debug/debug_test.go @@ -272,5 +272,62 @@ func testAllDebugInformation(t *testing.T, env *integrationtest.Environment, cli }`) } + { + // Mixing programmer and additional_config + jsonDebugOut, _, err := cli.Run("debug", "-b", "my:samd:my3", "-P", "my_cold_ice", sketchPath.String(), "--info", "--format", "json") + require.NoError(t, err) + debugOut := requirejson.Parse(t, jsonDebugOut) + debugOut.MustContain(` + { + "toolchain": "gcc", + "toolchain_path": "gcc-path", + "toolchain_prefix": "gcc-prefix", + "server": "openocd", + "server_path": "openocd-path", + "server_configuration": { + "path": "openocd-path", + "scripts_dir": "openocd-scripts-dir", + "scripts": [ + "cold_ice_script" + ] + }, + "custom_configs": { + "cortex-debug": { + "test1": "true" + } + }, + "svd_file": "test1.svd", + "programmer": "my_cold_ice" + }`) + } + + { + // Mixing programmer and additional_config selected by another variable + jsonDebugOut, _, err := cli.Run("debug", "-b", "my:samd:my4", "-P", "my_cold_ice", sketchPath.String(), "--info", "--format", "json") + require.NoError(t, err) + debugOut := requirejson.Parse(t, jsonDebugOut) + debugOut.MustContain(` + { + "toolchain": "gcc", + "toolchain_path": "gcc-path", + "toolchain_prefix": "gcc-prefix", + "server": "openocd", + "server_path": "openocd-path", + "server_configuration": { + "path": "openocd-path", + "scripts_dir": "openocd-scripts-dir", + "scripts": [ + "cold_ice_script" + ] + }, + "custom_configs": { + "cortex-debug": { + "test2": "true" + } + }, + "svd_file": "test2.svd", + "programmer": "my_cold_ice" + }`) + } } } diff --git a/internal/integrationtest/debug/testdata/hardware/my/samd/boards.txt b/internal/integrationtest/debug/testdata/hardware/my/samd/boards.txt index 7a96eac3186..5512eb7e2b3 100644 --- a/internal/integrationtest/debug/testdata/hardware/my/samd/boards.txt +++ b/internal/integrationtest/debug/testdata/hardware/my/samd/boards.txt @@ -87,3 +87,28 @@ my2.debug.server.openocd.path=openocd-path my2.debug.server.openocd.scripts_dir=openocd-scripts-dir my2.debug.server.openocd.script=single-script my2.debug.svd_file=svd-file + +my3.name=My third Cool Board +my3.build.core=arduino:arduino +my3.build.variant=arduino:mkr1000 +my3.debug.toolchain.path=gcc-path +my3.debug.toolchain.prefix=gcc-prefix +my3.debug.server.openocd.path=openocd-path +my3.debug.server.openocd.scripts_dir=openocd-scripts-dir +my3.debug.server.openocd.script=single-script +# this one will be overwritten by additional_config +my3.debug.svd_file=svd-file +my3.debug.additional_config=build.debug.config.test1 + +my4.name=My fourth Cool Board +my4.build.core=arduino:arduino +my4.build.variant=arduino:mkr1000 +my4.debug.toolchain.path=gcc-path +my4.debug.toolchain.prefix=gcc-prefix +my4.debug.server.openocd.path=openocd-path +my4.debug.server.openocd.scripts_dir=openocd-scripts-dir +my4.debug.server.openocd.script=single-script +my4.build.mcu=test2 +# this one will be overwritten by additional_config +my4.debug.svd_file=svd-file +my4.debug.additional_config=build.debug.config.{build.mcu} diff --git a/internal/integrationtest/debug/testdata/hardware/my/samd/platform.txt b/internal/integrationtest/debug/testdata/hardware/my/samd/platform.txt new file mode 100644 index 00000000000..d2a61b9fd25 --- /dev/null +++ b/internal/integrationtest/debug/testdata/hardware/my/samd/platform.txt @@ -0,0 +1,5 @@ +build.debug.config.test1.svd_file=test1.svd +build.debug.config.test1.cortex-debug.custom.test1=true + +build.debug.config.test2.svd_file=test2.svd +build.debug.config.test2.cortex-debug.custom.test2=true