From 60c02a15843e1bd5783d8df5ab7e6b31abe2902b Mon Sep 17 00:00:00 2001 From: Mikalai Radchuk Date: Wed, 20 Sep 2023 12:37:08 +0100 Subject: [PATCH] Fixes semver range parsing for required packages Signed-off-by: Mikalai Radchuk --- internal/catalogmetadata/types.go | 10 +++++----- internal/catalogmetadata/types_test.go | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/internal/catalogmetadata/types.go b/internal/catalogmetadata/types.go index d98f7556a..9343f5f8a 100644 --- a/internal/catalogmetadata/types.go +++ b/internal/catalogmetadata/types.go @@ -31,7 +31,7 @@ type Channel struct { type PackageRequired struct { property.PackageRequired - SemverRange *bsemver.Range `json:"-"` + SemverRange bsemver.Range `json:"-"` } type Bundle struct { @@ -98,17 +98,17 @@ func (b *Bundle) loadRequiredPackages() error { if err != nil { return fmt.Errorf("error determining bundle required packages for bundle %q: %s", b.Name, err) } - for _, requiredPackage := range requiredPackages { - semverRange, err := bsemver.ParseRange(requiredPackage.VersionRange) + for i := range requiredPackages { + semverRange, err := bsemver.ParseRange(requiredPackages[i].VersionRange) if err != nil { return fmt.Errorf( "error parsing bundle required package semver range for bundle %q (required package %q): %s", b.Name, - requiredPackage.PackageName, + requiredPackages[i].PackageName, err, ) } - requiredPackage.SemverRange = &semverRange + requiredPackages[i].SemverRange = semverRange } b.requiredPackages = requiredPackages } diff --git a/internal/catalogmetadata/types_test.go b/internal/catalogmetadata/types_test.go index cc612d105..b42ec9a94 100644 --- a/internal/catalogmetadata/types_test.go +++ b/internal/catalogmetadata/types_test.go @@ -123,6 +123,16 @@ func TestBundleRequiredPackages(t *testing.T) { } { t.Run(tt.name, func(t *testing.T) { packages, err := tt.bundle.RequiredPackages() + assert.Len(t, packages, len(tt.wantRequiredPackages)) + for i := range packages { + // SemverRange is a function which is not comparable + // so we just make sure that it is set. + assert.NotNil(t, packages[i].SemverRange) + + // And then we set it to nil for ease of further comparisons + packages[i].SemverRange = nil + } + assert.Equal(t, tt.wantRequiredPackages, packages) if tt.wantErr != "" { assert.EqualError(t, err, tt.wantErr)