vault/version/version_test.go

115 lines
3.2 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package version
import (
"testing"
"github.com/stretchr/testify/assert"
)
func replaceVersion(v, vp, vm string) func() {
origV := Version
origVP := VersionPrerelease
origVM := VersionMetadata
Version = v
VersionPrerelease = vp
VersionMetadata = vm
return func() {
Version = origV
VersionPrerelease = origVP
VersionMetadata = origVM
}
}
func TestGetVersion(t *testing.T) {
// This test cannot be parallelized because it messes with some global
// variables that determine the version information.
restoreVersionFunc := replaceVersion("1.2.3", "", "")
defer restoreVersionFunc()
// Test the general case
vi := GetVersion()
assert.Equal(t, "1.2.3", vi.Version)
assert.Equal(t, "", vi.VersionPrerelease)
assert.Equal(t, "", vi.VersionMetadata)
assert.Equal(t, "", vi.Revision)
assert.Equal(t, "", vi.BuildDate)
// Test the git describe case
origGitDescribe := GitDescribe
GitDescribe = "git-describe"
vi = GetVersion()
assert.Equal(t, "git-describe", vi.Version)
GitDescribe = origGitDescribe
}
func TestVersionNumber(t *testing.T) {
// This test cannot be parallelized because it messes with some global
// variables that determine the version information.
restoreVersionFunc := replaceVersion("unknown", "unknown", "")
defer restoreVersionFunc()
// Test the unknown version case
vi := GetVersion()
assert.Equal(t, "(version unknown)", vi.VersionNumber())
replaceVersion("1.2.3", "", "")
// Test the pre-release case
vi = GetVersion()
vi.VersionPrerelease = "rc1"
assert.Equal(t, "1.2.3-rc1", vi.VersionNumber())
// Test the pre-release and metadata version case
vi.VersionMetadata = "ent"
assert.Equal(t, "1.2.3-rc1+ent", vi.VersionNumber())
// Test the metadata only version case
vi.VersionPrerelease = ""
assert.Equal(t, "1.2.3+ent", vi.VersionNumber())
}
func TestFullVersionNumber(t *testing.T) {
// This test cannot be parallelized because it messes with some global
// variables that determine the version information.
restoreVersionFunc := replaceVersion("unknown", "unknown", "")
defer restoreVersionFunc()
// Test the unknown version case
vi := GetVersion()
assert.Equal(t, "Vault (version unknown)", vi.FullVersionNumber(false))
// Test the no pre-release, metadata, revision, build date case
replaceVersion("1.2.3", "", "")
vi = GetVersion()
assert.Equal(t, "Vault v1.2.3", vi.FullVersionNumber(false))
// Test the pre-release case
vi.VersionPrerelease = "rc1"
assert.Equal(t, "Vault v1.2.3-rc1", vi.FullVersionNumber(false))
// Test the metadata case
vi.VersionPrerelease = ""
vi.VersionMetadata = "ent"
assert.Equal(t, "Vault v1.2.3+ent", vi.FullVersionNumber(false))
// Test the revision case
vi.VersionMetadata = ""
vi.Revision = "ab1234f"
assert.Equal(t, "Vault v1.2.3 (ab1234f)", vi.FullVersionNumber(true))
// Test the build date case
vi.BuildDate = "2023-10-20"
assert.Equal(t, "Vault v1.2.3, built 2023-10-20", vi.FullVersionNumber(false))
// Test the case where all of the things are set
vi.VersionPrerelease = "rc1"
vi.VersionMetadata = "ent"
assert.Equal(t, "Vault v1.2.3-rc1+ent (ab1234f), built 2023-10-20", vi.FullVersionNumber(true))
}