@@ -24,6 +24,8 @@ import (
24
24
"github.com/arduino/go-paths-helper"
25
25
"github.com/stretchr/testify/require"
26
26
"go.bug.st/testsuite"
27
+ "gopkg.in/src-d/go-git.v4"
28
+ "gopkg.in/src-d/go-git.v4/plumbing"
27
29
)
28
30
29
31
func TestBoardList (t * testing.T ) {
@@ -125,3 +127,56 @@ func TestBoardListall(t *testing.T) {
125
127
require .NotEmpty (t , platform ["latest" ])
126
128
require .Equal (t , platform ["name" ], "Arduino AVR Boards" )
127
129
}
130
+
131
+ func TestBoardListallWithManuallyInstalledPlatform (t * testing.T ) {
132
+ env := testsuite .NewEnvironment (t )
133
+ defer env .CleanUp ()
134
+
135
+ cli := integrationtest .NewArduinoCliWithinEnvironment (env , & integrationtest.ArduinoCLIConfig {
136
+ ArduinoCLIPath : paths .New (".." , ".." , ".." , "arduino-cli" ),
137
+ UseSharedStagingFolder : true ,
138
+ })
139
+
140
+ _ , _ , err := cli .Run ("update" )
141
+ require .NoError (t , err )
142
+
143
+ // Manually installs a core in sketchbooks hardware folder
144
+ gitUrl := "https://github.com/arduino/ArduinoCore-samd.git"
145
+ repoDir := cli .SketchbookDir ().Join ("hardware" , "arduino-beta-development" , "samd" )
146
+ _ , err = git .PlainClone (repoDir .String (), false , & git.CloneOptions {
147
+ URL : gitUrl ,
148
+ ReferenceName : plumbing .NewTagReferenceName ("1.8.11" ),
149
+ })
150
+ require .NoError (t , err )
151
+
152
+ stdout , _ , err := cli .Run ("board" , "listall" , "--format" , "json" )
153
+ require .NoError (t , err )
154
+ var data map [string ]interface {}
155
+ err = json .Unmarshal (stdout , & data )
156
+ require .NoError (t , err )
157
+
158
+ // maps each json contained in "boards" using
159
+ // its corresponding "fqbn" value as its key
160
+ boards := make (map [string ]map [string ]interface {})
161
+ for _ , v := range data ["boards" ].([]interface {}) {
162
+ mapV := v .(map [string ]interface {})
163
+ boards [mapV ["fqbn" ].(string )] = mapV
164
+ }
165
+ require .Len (t , boards , 17 )
166
+
167
+ require .Contains (t , boards , "arduino-beta-development:samd:nano_33_iot" )
168
+ require .Equal (t , boards ["arduino-beta-development:samd:nano_33_iot" ]["name" ], "Arduino NANO 33 IoT" )
169
+ platform := boards ["arduino-beta-development:samd:nano_33_iot" ]["platform" ].(map [string ]interface {})
170
+ require .Equal (t , platform ["id" ], "arduino-beta-development:samd" )
171
+ require .Equal (t , platform ["installed" ], "1.8.11" )
172
+ require .Equal (t , platform ["latest" ], "1.8.11" )
173
+ require .Equal (t , platform ["name" ], "Arduino SAMD (32-bits ARM Cortex-M0+) Boards" )
174
+
175
+ require .Contains (t , boards , "arduino-beta-development:samd:mkr1000" )
176
+ require .Equal (t , boards ["arduino-beta-development:samd:mkr1000" ]["name" ], "Arduino MKR1000" )
177
+ platform = boards ["arduino-beta-development:samd:mkr1000" ]["platform" ].(map [string ]interface {})
178
+ require .Equal (t , platform ["id" ], "arduino-beta-development:samd" )
179
+ require .Equal (t , platform ["installed" ], "1.8.11" )
180
+ require .Equal (t , platform ["latest" ], "1.8.11" )
181
+ require .Equal (t , platform ["name" ], "Arduino SAMD (32-bits ARM Cortex-M0+) Boards" )
182
+ }
0 commit comments