Skip to content

Commit 6fdf4f5

Browse files
committed
Added tests and ifx for board options available only under particular OS
See: #67 (comment) quote: There are some options without label (did not parsed well) for upload speed on different OS: Option: Upload Speed UploadSpeed 115200 ✔ UploadSpeed=115200 9600 UploadSpeed=9600 57600 UploadSpeed=57600 230400 UploadSpeed=230400 UploadSpeed=256000 460800 UploadSpeed=460800 UploadSpeed=512000 921600 UploadSpeed=921600 Cause boards.txt contains: generic.menu.UploadSpeed.115200=115200 generic.menu.UploadSpeed.115200.upload.speed=115200 generic.menu.UploadSpeed.9600=9600 generic.menu.UploadSpeed.9600.upload.speed=9600 generic.menu.UploadSpeed.57600=57600 generic.menu.UploadSpeed.57600.upload.speed=57600 generic.menu.UploadSpeed.230400.linux=230400 generic.menu.UploadSpeed.230400.macosx=230400 generic.menu.UploadSpeed.230400.upload.speed=230400 generic.menu.UploadSpeed.256000.windows=256000 generic.menu.UploadSpeed.256000.upload.speed=256000 generic.menu.UploadSpeed.460800.linux=460800 generic.menu.UploadSpeed.460800.macosx=460800 generic.menu.UploadSpeed.460800.upload.speed=460800 generic.menu.UploadSpeed.512000.windows=512000 generic.menu.UploadSpeed.512000.upload.speed=512000 generic.menu.UploadSpeed.921600=921600 generic.menu.UploadSpeed.921600.upload.speed=921600
1 parent dd5ebde commit 6fdf4f5

File tree

4 files changed

+5838
-2
lines changed

4 files changed

+5838
-2
lines changed

Diff for: arduino/cores/board.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ func (b *Board) GetConfigOptionValues(option string) *properties.Map {
7878
res := properties.NewMap()
7979
menu := b.Properties.SubTree("menu").SubTree(option)
8080
for _, value := range menu.FirstLevelKeys() {
81-
res.Set(value, menu.Get(value))
81+
if label, ok := menu.GetOk(value); ok {
82+
res.Set(value, label)
83+
}
8284
}
8385
return res
8486
}

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

+42
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2424
"github.com/arduino/go-paths-helper"
25+
"github.com/arduino/go-properties-orderedmap"
2526
"github.com/stretchr/testify/require"
2627
)
2728

@@ -43,3 +44,44 @@ func TestFindBoardWithFQBN(t *testing.T) {
4344
require.NotNil(t, board)
4445
require.Equal(t, board.Name(), "Arduino/Genuino Mega or Mega 2560")
4546
}
47+
48+
func TestBoardOptionsFunctions(t *testing.T) {
49+
pm := packagemanager.NewPackageManager(
50+
paths.New("testdata"),
51+
paths.New("testdata"),
52+
paths.New("testdata"),
53+
paths.New("testdata"))
54+
pm.LoadHardwareFromDirectory(paths.New("testdata"))
55+
56+
nano, err := pm.FindBoardWithFQBN("arduino:avr:nano")
57+
require.Nil(t, err)
58+
require.NotNil(t, nano)
59+
require.Equal(t, nano.Name(), "Arduino Nano")
60+
61+
nanoOptions := nano.GetConfigOptions()
62+
require.Equal(t, "Processor", nanoOptions.Get("cpu"))
63+
require.Equal(t, 1, nanoOptions.Size())
64+
nanoCpuValues := nano.GetConfigOptionValues("cpu")
65+
66+
expectedNanoCpuValues := properties.NewMap()
67+
expectedNanoCpuValues.Set("atmega328", "ATmega328P")
68+
expectedNanoCpuValues.Set("atmega328old", "ATmega328P (Old Bootloader)")
69+
expectedNanoCpuValues.Set("atmega168", "ATmega168")
70+
require.EqualValues(t, expectedNanoCpuValues, nanoCpuValues)
71+
72+
esp8266, err := pm.FindBoardWithFQBN("esp8266:esp8266:generic")
73+
require.Nil(t, err)
74+
require.NotNil(t, esp8266)
75+
require.Equal(t, esp8266.Name(), "Generic ESP8266 Module")
76+
77+
esp8266Options := esp8266.GetConfigOptions()
78+
require.Equal(t, 13, esp8266Options.Size())
79+
require.Equal(t, "Builtin Led", esp8266Options.Get("led"))
80+
require.Equal(t, "Upload Speed", esp8266Options.Get("UploadSpeed"))
81+
82+
esp8266UploadSpeedValues := esp8266.GetConfigOptionValues("UploadSpeed")
83+
for k, v := range esp8266UploadSpeedValues.AsMap() {
84+
// Some option values are missing for a particular OS: check that only the available options are listed
85+
require.Equal(t, k, v)
86+
}
87+
}

0 commit comments

Comments
 (0)