diff --git a/arduino/libraries/librariesindex/index.go b/arduino/libraries/librariesindex/index.go index b21506a197e..ea57c69eac3 100644 --- a/arduino/libraries/librariesindex/index.go +++ b/arduino/libraries/librariesindex/index.go @@ -136,6 +136,11 @@ 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 + } 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)