diff --git a/version/feature_manager.go b/version/feature_manager.go index f116eac9fb..32f48a1589 100644 --- a/version/feature_manager.go +++ b/version/feature_manager.go @@ -49,8 +49,12 @@ func metadataStringToMetadata(m string) Metadata { return OSS } -// Check returns a bool indicating if a version meets the metadata constraint for a feature +// Check returns a bool indicating if a version meets the metadata constraint +// for a feature. Check returns false if version is nil. func (m MetadataConstraint) Check(version *gvers.Version) bool { + if version == nil { + return false + } binaryMeta := metadataStringToMetadata(version.Metadata()) for _, v := range m.MetaInfo { @@ -83,5 +87,5 @@ func SupportsFeature(version *gvers.Version, feature Feature) bool { // GetReleaseVersion returns a go-version of this binary's Boundary version func GetReleaseVersion() (*gvers.Version, error) { ver := Get() - return gvers.NewVersion(ver.Version) + return gvers.NewVersion(ver.VersionNumber()) } diff --git a/version/feature_manager_test.go b/version/feature_manager_test.go index e126c7ea84..c01395ffcf 100644 --- a/version/feature_manager_test.go +++ b/version/feature_manager_test.go @@ -91,7 +91,7 @@ func TestHasFeature(t *testing.T) { require.False(t, ok) } -func TestEnableFeatureForTest(t *testing.T) { +func TestEnableFeatureOnVersionForTest(t *testing.T) { FutureFeature := Feature(997) futureVersionFeature, _ := gvers.NewConstraint(">= 99.99.99+hcp") @@ -134,3 +134,33 @@ func TestEnableFeatureForTest(t *testing.T) { _, ok := featureMap[FutureFeature] require.False(t, ok) } + +func TestEnableFeatureForTest(t *testing.T) { + FutureFeature := Feature(997) + + futureVersionFeature, _ := gvers.NewConstraint(">= 99.99.99+hcp") + featureMap[FutureFeature] = MetadataConstraint{ + MetaInfo: []Metadata{HCP}, + Constraints: futureVersionFeature, + } + + // modify the globals that set which version the current binary is + prevVer := Version + prevMd := VersionMetadata + defer func() { + Version = prevVer + VersionMetadata = prevMd + }() + Version = "0.11.0" + VersionMetadata = "hcp" + + EnableFeatureForTest(t, FutureFeature) + + semVer, err := gvers.NewVersion("0.11.0+hcp") + require.NoError(t, err) + assert.True(t, SupportsFeature(semVer, FutureFeature)) + + delete(featureMap, FutureFeature) + _, ok := featureMap[FutureFeature] + require.False(t, ok) +}