You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/version/testing.go

44 lines
1.3 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package version
import (
"fmt"
"testing"
gvers "github.com/hashicorp/go-version"
"github.com/stretchr/testify/require"
)
// EnableFeatureForTest enables a feature for the current binary version
func EnableFeatureForTest(t *testing.T, feature Feature) {
require := require.New(t)
version, err := GetReleaseVersion()
require.NoError(err)
EnableFeatureOnVersionForTest(t, version, feature)
}
// EnableFeatureForTest modifies the feature map to enable a feature for a version.
// This is intended to be used for testing before release of a version
// Test cleanup will reset the feature map to the original feature constraint
// Note: running any tests in parallel while using this function WILL result in surprising
// behavior because this modifies the global feature map
func EnableFeatureOnVersionForTest(t *testing.T, version *gvers.Version, feature Feature) {
featConstraint, ok := featureMap[feature]
require := require.New(t)
require.True(ok)
versionNumber := version.String()
newConstraint, err := gvers.NewConstraint(fmt.Sprintf(">= %s", versionNumber))
require.NoError(err)
featureMap[feature] = MetadataConstraint{
Constraints: newConstraint,
}
t.Cleanup(func() {
featureMap[feature] = featConstraint
})
}