@@ -18,8 +18,10 @@ package packagemanager
18
18
import (
19
19
"testing"
20
20
21
+ "github.com/arduino/go-paths-helper"
21
22
"github.com/arduino/go-properties-orderedmap"
22
23
"github.com/stretchr/testify/require"
24
+ semver "go.bug.st/relaxed-semver"
23
25
)
24
26
25
27
func TestVidPidConvertionToPluggableDiscovery (t * testing.T ) {
@@ -103,3 +105,73 @@ arduino_zero_native.pid.3=0x024d
103
105
"upload_port.3.pid": "0x024d",
104
106
}` , zero4 .Dump ())
105
107
}
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