From 8cb83ad10ba532d68a67d2693a16e59b41cc57b3 Mon Sep 17 00:00:00 2001 From: Ruben Jenster Date: Fri, 12 Feb 2021 11:42:07 +0100 Subject: [PATCH 1/3] librariesindex: Fix nil pointer. Refs #1176 Let the library index return the latest known version, if a library without a version is found. Signed-off-by: Ruben Jenster --- arduino/libraries/librariesindex/index.go | 5 +++++ arduino/libraries/librariesindex/index_test.go | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/arduino/libraries/librariesindex/index.go b/arduino/libraries/librariesindex/index.go index b21506a197e..29e3c44826d 100644 --- a/arduino/libraries/librariesindex/index.go +++ b/arduino/libraries/librariesindex/index.go @@ -16,6 +16,7 @@ package librariesindex import ( + "fmt" "sort" "github.com/arduino/arduino-cli/arduino/libraries" @@ -136,6 +137,10 @@ func (idx *Index) FindLibraryUpdate(lib *libraries.Library) *Release { if indexLib == nil { return nil } + if lib.Version == nil { + fmt.Printf("[WARN] version for library loaded from %s is nil\n", lib.InstallDir) + return indexLib.Latest + } if indexLib.Latest.Version.GreaterThan(lib.Version) { return indexLib.Latest } diff --git a/arduino/libraries/librariesindex/index_test.go b/arduino/libraries/librariesindex/index_test.go index cc6f9928c89..097d7adec51 100644 --- a/arduino/libraries/librariesindex/index_test.go +++ b/arduino/libraries/librariesindex/index_test.go @@ -78,6 +78,10 @@ func TestIndexer(t *testing.T) { require.NotNil(t, rtcUpdate) require.Equal(t, "RTCZero@1.6.0", rtcUpdate.String()) + rtcUpdateNoVersion := index.FindLibraryUpdate(&libraries.Library{Name: "RTCZero", Version: nil}) + require.NotNil(t, rtcUpdateNoVersion) + require.Equal(t, "RTCZero@1.6.0", rtcUpdateNoVersion.String()) + rtcNoUpdate := index.FindLibraryUpdate(&libraries.Library{Name: "RTCZero", Version: semver.MustParse("3.0.0")}) require.Nil(t, rtcNoUpdate) From c1b6732462c88e8d725d73e9fa3de5eef2d79305 Mon Sep 17 00:00:00 2001 From: Ruben Jenster Date: Wed, 17 Feb 2021 15:44:07 +0100 Subject: [PATCH 2/3] Remove logging statement from FindLibraryUpdate. Signed-off-by: Ruben Jenster --- arduino/libraries/librariesindex/index.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/arduino/libraries/librariesindex/index.go b/arduino/libraries/librariesindex/index.go index 29e3c44826d..d3b0d5088fa 100644 --- a/arduino/libraries/librariesindex/index.go +++ b/arduino/libraries/librariesindex/index.go @@ -16,7 +16,6 @@ package librariesindex import ( - "fmt" "sort" "github.com/arduino/arduino-cli/arduino/libraries" @@ -138,7 +137,6 @@ func (idx *Index) FindLibraryUpdate(lib *libraries.Library) *Release { return nil } if lib.Version == nil { - fmt.Printf("[WARN] version for library loaded from %s is nil\n", lib.InstallDir) return indexLib.Latest } if indexLib.Latest.Version.GreaterThan(lib.Version) { From 0976e8eeceb0c414ea07235f9a043e13424291ad Mon Sep 17 00:00:00 2001 From: Ruben Jenster Date: Wed, 17 Feb 2021 16:06:23 +0100 Subject: [PATCH 3/3] Add a small comment to the lib.Version nil check. Signed-off-by: Ruben Jenster --- arduino/libraries/librariesindex/index.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arduino/libraries/librariesindex/index.go b/arduino/libraries/librariesindex/index.go index d3b0d5088fa..ea57c69eac3 100644 --- a/arduino/libraries/librariesindex/index.go +++ b/arduino/libraries/librariesindex/index.go @@ -136,6 +136,8 @@ func (idx *Index) FindLibraryUpdate(lib *libraries.Library) *Release { if indexLib == nil { return nil } + // library.Version is nil when when the version field in + // a library descriptor is malformed and could not be parsed. if lib.Version == nil { return indexLib.Latest }