@@ -18,8 +18,10 @@ package packagemanager
1818import (
1919 "testing"
2020
21+ "github.com/arduino/go-paths-helper"
2122 "github.com/arduino/go-properties-orderedmap"
2223 "github.com/stretchr/testify/require"
24+ semver "go.bug.st/relaxed-semver"
2325)
2426
2527func TestVidPidConvertionToPluggableDiscovery (t * testing.T ) {
@@ -103,3 +105,73 @@ arduino_zero_native.pid.3=0x024d
103105 "upload_port.3.pid": "0x024d",
104106}` , zero4 .Dump ())
105107}
108+
109+ func TestLoadDiscoveries (t * testing.T ) {
110+ // Create all the necessary data to load discoveries
111+ fakePath := paths .New ("fake-path" )
112+ packageManager := NewPackageManager (fakePath , fakePath , fakePath , fakePath )
113+ pack := packageManager .Packages .GetOrCreatePackage ("arduino" )
114+ // ble-discovery tool
115+ tool := pack .GetOrCreateTool ("arduino:ble-discovery" )
116+ toolRelease := tool .GetOrCreateRelease (semver .ParseRelaxed ("1.0.0" ))
117+ // We set this to fake the tool is installed
118+ toolRelease .InstallDir = fakePath
119+ tool .GetOrCreateRelease (semver .ParseRelaxed ("0.1.0" ))
120+
121+ // serial-discovery tool
122+ tool = pack .GetOrCreateTool ("arduino:serial-discovery" )
123+ tool .GetOrCreateRelease (semver .ParseRelaxed ("1.0.0" ))
124+ toolRelease = tool .GetOrCreateRelease (semver .ParseRelaxed ("0.1.0" ))
125+ // We set this to fake the tool is installed
126+ toolRelease .InstallDir = fakePath
127+
128+ platform := pack .GetOrCreatePlatform ("avr" )
129+ release := platform .GetOrCreateRelease (semver .MustParse ("1.0.0" ))
130+
131+ release .Properties = properties .NewFromHashmap (map [string ]string {
132+ "discovery.required" : "arduino:ble-discovery" ,
133+ })
134+
135+ discoveries , err := packageManager .LoadDiscoveries (release )
136+ require .Len (t , discoveries , 1 )
137+ require .NoError (t , err )
138+ require .Equal (t , discoveries [0 ].GetID (), "arduino:ble-discovery" )
139+
140+ release .Properties = properties .NewFromHashmap (map [string ]string {
141+ "discovery.required.0" : "arduino:ble-discovery" ,
142+ "discovery.required.1" : "arduino:serial-discovery" ,
143+ })
144+
145+ discoveries , err = packageManager .LoadDiscoveries (release )
146+ require .Len (t , discoveries , 2 )
147+ require .NoError (t , err )
148+ require .Equal (t , discoveries [0 ].GetID (), "arduino:ble-discovery" )
149+ require .Equal (t , discoveries [1 ].GetID (), "arduino:serial-discovery" )
150+
151+ release .Properties = properties .NewFromHashmap (map [string ]string {
152+ "discovery.required.0" : "arduino:ble-discovery" ,
153+ "discovery.required.1" : "arduino:serial-discovery" ,
154+ "discovery.teensy.pattern" : "\" {runtime.tools.teensy_ports.path}/hardware/tools/teensy_ports\" -J2" ,
155+ })
156+
157+ discoveries , err = packageManager .LoadDiscoveries (release )
158+ require .Len (t , discoveries , 3 )
159+ require .NoError (t , err )
160+ require .Equal (t , discoveries [0 ].GetID (), "arduino:ble-discovery" )
161+ require .Equal (t , discoveries [1 ].GetID (), "arduino:serial-discovery" )
162+ require .Equal (t , discoveries [2 ].GetID (), "teensy" )
163+
164+ release .Properties = properties .NewFromHashmap (map [string ]string {
165+ "discovery.required" : "arduino:some-discovery" ,
166+ "discovery.required.0" : "arduino:ble-discovery" ,
167+ "discovery.required.1" : "arduino:serial-discovery" ,
168+ "discovery.teensy.pattern" : "\" {runtime.tools.teensy_ports.path}/hardware/tools/teensy_ports\" -J2" ,
169+ })
170+
171+ discoveries , err = packageManager .LoadDiscoveries (release )
172+ require .Len (t , discoveries , 3 )
173+ require .NoError (t , err )
174+ require .Equal (t , discoveries [0 ].GetID (), "arduino:ble-discovery" )
175+ require .Equal (t , discoveries [1 ].GetID (), "arduino:serial-discovery" )
176+ require .Equal (t , discoveries [2 ].GetID (), "teensy" )
177+ }
0 commit comments