Skip to content

Commit

Permalink
do not require prereleases:{} to be set when setting explicit version…
Browse files Browse the repository at this point in the history
… in constraints (#578)

Co-authored-by: Dmitriy Kalinin <[email protected]>
  • Loading branch information
cppforlife and Dmitriy Kalinin authored Mar 17, 2022
1 parent bdb23dc commit 79cbbd3
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
10 changes: 10 additions & 0 deletions pkg/packageinstall/packageinstall.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,16 @@ func (pi *PackageInstallCR) referencedPkgVersion() (datapkgingv1alpha1.Package,
}
}

// If constraint is a single specified version, then we
// do not want to force user to manually set prereleases={}
if len(semverConfig.Constraints) > 0 && semverConfig.Prereleases == nil {
// Will error if it's not a single version
singleVer, err := versions.NewSemver(semverConfig.Constraints)
if err == nil && len(singleVer.Pre) > 0 {
semverConfig.Prereleases = &verv1alpha1.VersionSelectionSemverPrereleases{}
}
}

verConfig := verv1alpha1.VersionSelection{Semver: semverConfig}

selectedVersion, err := versions.HighestConstrainedVersion(versionStrs, verConfig)
Expand Down
35 changes: 35 additions & 0 deletions pkg/packageinstall/packageinstall_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,41 @@ func Test_PackageRefWithPrerelease_IsFound(t *testing.T) {
}
}

func Test_PackageRefWithPrerelease_DoesNotRequirePrereleaseMarker(t *testing.T) {
expectedPackageVersion := datapkgingv1alpha1.Package{
ObjectMeta: metav1.ObjectMeta{
Name: "pkg.test.carvel.dev",
},
Spec: datapkgingv1alpha1.PackageSpec{
RefName: "pkg.test.carvel.dev",
Version: "3.0.0-rc.1",
},
}

fakePkgClient := fakeapiserver.NewSimpleClientset(&expectedPackageVersion)

ip := PackageInstallCR{
model: &pkgingv1alpha1.PackageInstall{
ObjectMeta: metav1.ObjectMeta{
Name: "instl-pkg-prerelease",
},
Spec: pkgingv1alpha1.PackageInstallSpec{
PackageRef: &pkgingv1alpha1.PackageRef{
RefName: "pkg.test.carvel.dev",
VersionSelection: &versions.VersionSelectionSemver{
Constraints: "3.0.0-rc.1",
},
},
},
},
pkgclient: fakePkgClient,
}

out, err := ip.referencedPkgVersion()
require.NoError(t, err)
require.Equal(t, out, expectedPackageVersion)
}

func Test_PackageRefUsesName(t *testing.T) {
// PackageMetadata with prerelease version
expectedPackageVersion := datapkgingv1alpha1.Package{
Expand Down

0 comments on commit 79cbbd3

Please sign in to comment.