Skip to content

Commit 0793dee

Browse files
silvanocerzacmaglie
authored andcommitted
Fix FindToolsRequiredFromPlatformRelease not returning discoveries
1 parent 7375f2f commit 0793dee

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

arduino/cores/packagemanager/package_manager.go

+12
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,18 @@ func (pm *PackageManager) FindToolsRequiredFromPlatformRelease(platform *cores.P
466466
requiredTools = append(requiredTools, tool)
467467
delete(foundTools, tool.Tool.Name)
468468
}
469+
470+
platform.DiscoveryDependencies.Sort()
471+
for _, discoveryDep := range platform.DiscoveryDependencies {
472+
pm.Log.WithField("discovery", discoveryDep).Infof("Required discovery")
473+
tool := pm.FindDiscoveryDependency(discoveryDep)
474+
if tool == nil {
475+
return nil, fmt.Errorf("discovery release not found: %s", discoveryDep)
476+
}
477+
requiredTools = append(requiredTools, tool)
478+
delete(foundTools, tool.Tool.Name)
479+
}
480+
469481
for _, toolRel := range foundTools {
470482
requiredTools = append(requiredTools, toolRel)
471483
}

arduino/cores/packagemanager/package_manager_test.go

+63
Original file line numberDiff line numberDiff line change
@@ -339,3 +339,66 @@ func TestPackageManagerClear(t *testing.T) {
339339
// Verifies both PackageManagers are now equal
340340
require.Equal(t, &packageManager, &emptyPackageManager)
341341
}
342+
343+
func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
344+
// Create all the necessary data to load discoveries
345+
fakePath := paths.New("fake-path")
346+
347+
pm := packagemanager.NewPackageManager(fakePath, fakePath, fakePath, fakePath)
348+
pack := pm.Packages.GetOrCreatePackage("arduino")
349+
// some tool
350+
tool := pack.GetOrCreateTool("some-tool")
351+
toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0"))
352+
// We set this to fake the tool is installed
353+
toolRelease.InstallDir = fakePath
354+
// some tool
355+
tool = pack.GetOrCreateTool("some-tool")
356+
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("5.6.7"))
357+
// We set this to fake the tool is installed
358+
toolRelease.InstallDir = fakePath
359+
// some other tool
360+
tool = pack.GetOrCreateTool("some-other-tool")
361+
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6"))
362+
// We set this to fake the tool is installed
363+
toolRelease.InstallDir = fakePath
364+
// ble-discovery tool
365+
tool = pack.GetOrCreateTool("ble-discovery")
366+
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
367+
// We set this to fake the tool is installed
368+
toolRelease.InstallDir = fakePath
369+
tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
370+
371+
// serial-discovery tool
372+
tool = pack.GetOrCreateTool("serial-discovery")
373+
tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0"))
374+
toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0"))
375+
// We set this to fake the tool is installed
376+
toolRelease.InstallDir = fakePath
377+
378+
platform := pack.GetOrCreatePlatform("avr")
379+
release := platform.GetOrCreateRelease(semver.MustParse("1.0.0"))
380+
release.ToolDependencies = append(release.ToolDependencies, &cores.ToolDependency{
381+
ToolName: "some-tool",
382+
ToolVersion: semver.ParseRelaxed("4.2.0"),
383+
ToolPackager: "arduino",
384+
})
385+
release.ToolDependencies = append(release.ToolDependencies, &cores.ToolDependency{
386+
ToolName: "some-other-tool",
387+
ToolVersion: semver.ParseRelaxed("6.6.6"),
388+
ToolPackager: "arduino",
389+
})
390+
release.DiscoveryDependencies = append(release.DiscoveryDependencies, &cores.DiscoveryDependency{
391+
Name: "ble-discovery",
392+
Packager: "arduino",
393+
})
394+
release.DiscoveryDependencies = append(release.DiscoveryDependencies, &cores.DiscoveryDependency{
395+
Name: "serial-discovery",
396+
Packager: "arduino",
397+
})
398+
// We set this to fake the platform is installed
399+
release.InstallDir = fakePath
400+
401+
tools, err := pm.FindToolsRequiredFromPlatformRelease(release)
402+
require.NoError(t, err)
403+
require.Len(t, tools, 4)
404+
}

0 commit comments

Comments
 (0)