From 4cd2b0a3122abd13e152be75644c79be08509bc9 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 8 Sep 2021 17:20:19 +0200 Subject: [PATCH 1/2] Simplified implementation of Tool.LatestRelease/GetLatestInstalled methods --- arduino/cores/tools.go | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/arduino/cores/tools.go b/arduino/cores/tools.go index 29bea5fe80d..70e36fba9ec 100644 --- a/arduino/cores/tools.go +++ b/arduino/cores/tools.go @@ -68,9 +68,8 @@ func (tool *Tool) FindReleaseWithRelaxedVersion(version *semver.RelaxedVersion) // GetAllReleasesVersions returns all the version numbers in this Core Package. func (tool *Tool) GetAllReleasesVersions() []*semver.RelaxedVersion { - releases := tool.Releases versions := []*semver.RelaxedVersion{} - for _, release := range releases { + for _, release := range tool.Releases { versions = append(versions, release.Version) } @@ -79,27 +78,13 @@ func (tool *Tool) GetAllReleasesVersions() []*semver.RelaxedVersion { // LatestRelease obtains latest version of a core package. func (tool *Tool) LatestRelease() *ToolRelease { - latest := tool.latestReleaseVersion() - if latest == nil { - return nil - } - - return tool.FindReleaseWithRelaxedVersion(latest) -} - -// latestReleaseVersion obtains latest version number. -func (tool *Tool) latestReleaseVersion() *semver.RelaxedVersion { - versions := tool.GetAllReleasesVersions() - if len(versions) == 0 { - return nil - } - max := versions[0] - for i := 1; i < len(versions); i++ { - if versions[i].GreaterThan(max) { - max = versions[i] + var latest *ToolRelease + for _, release := range tool.Releases { + if latest == nil || release.Version.GreaterThan(latest.Version) { + latest = release } } - return max + return latest } // GetLatestInstalled returns the latest installed ToolRelease for the Tool, or nil if no releases are installed. @@ -107,9 +92,7 @@ func (tool *Tool) GetLatestInstalled() *ToolRelease { var latest *ToolRelease for _, release := range tool.Releases { if release.IsInstalled() { - if latest == nil { - latest = release - } else if latest.Version.LessThan(release.Version) { + if latest == nil || latest.Version.LessThan(release.Version) { latest = release } } From 90b52b7c04871868398586afee35a8a9e45b85f5 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 8 Sep 2021 14:52:04 +0200 Subject: [PATCH 2/2] Some code make-up --- .../packagemanager/package_manager_test.go | 70 +++++++++++-------- 1 file changed, 42 insertions(+), 28 deletions(-) diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 43e0456bd21..e17a3bbe802 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -346,34 +346,48 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) { pm := packagemanager.NewPackageManager(fakePath, fakePath, fakePath, fakePath) pack := pm.Packages.GetOrCreatePackage("arduino") - // some tool - tool := pack.GetOrCreateTool("some-tool") - toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0")) - // We set this to fake the tool is installed - toolRelease.InstallDir = fakePath - // some tool - tool = pack.GetOrCreateTool("some-tool") - toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("5.6.7")) - // We set this to fake the tool is installed - toolRelease.InstallDir = fakePath - // some other tool - tool = pack.GetOrCreateTool("some-other-tool") - toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6")) - // We set this to fake the tool is installed - toolRelease.InstallDir = fakePath - // ble-discovery tool - tool = pack.GetOrCreateTool("ble-discovery") - toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0")) - // We set this to fake the tool is installed - toolRelease.InstallDir = fakePath - tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0")) - - // serial-discovery tool - tool = pack.GetOrCreateTool("serial-discovery") - tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0")) - toolRelease = tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0")) - // We set this to fake the tool is installed - toolRelease.InstallDir = fakePath + + { + // some tool + tool := pack.GetOrCreateTool("some-tool") + toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("4.2.0")) + // We set this to fake the tool is installed + toolRelease.InstallDir = fakePath + } + + { + // some tool + tool := pack.GetOrCreateTool("some-tool") + toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("5.6.7")) + // We set this to fake the tool is installed + toolRelease.InstallDir = fakePath + } + + { + // some other tool + tool := pack.GetOrCreateTool("some-other-tool") + toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("6.6.6")) + // We set this to fake the tool is installed + toolRelease.InstallDir = fakePath + } + + { + // ble-discovery tool + tool := pack.GetOrCreateTool("ble-discovery") + toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0")) + // We set this to fake the tool is installed + toolRelease.InstallDir = fakePath + tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0")) + } + + { + // serial-discovery tool + tool := pack.GetOrCreateTool("serial-discovery") + tool.GetOrCreateRelease(semver.ParseRelaxed("1.0.0")) + toolRelease := tool.GetOrCreateRelease(semver.ParseRelaxed("0.1.0")) + // We set this to fake the tool is installed + toolRelease.InstallDir = fakePath + } platform := pack.GetOrCreatePlatform("avr") release := platform.GetOrCreateRelease(semver.MustParse("1.0.0"))