mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-05-15 13:49:20 +00:00
161 lines
4.2 KiB
Go
161 lines
4.2 KiB
Go
package version
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"k8s.io/apimachinery/pkg/version"
|
|
)
|
|
|
|
func TestGet(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
majorFromGit string
|
|
minorFromGit string
|
|
commitFromGit string
|
|
versionFromGit string
|
|
buildDate string
|
|
expectedMajor string
|
|
expectedMinor string
|
|
expectedCommit string
|
|
expectedVersion string
|
|
expectedBuildDate string
|
|
}{
|
|
{
|
|
name: "default empty values",
|
|
majorFromGit: "",
|
|
minorFromGit: "",
|
|
commitFromGit: "",
|
|
versionFromGit: "",
|
|
buildDate: "",
|
|
expectedMajor: "",
|
|
expectedMinor: "",
|
|
expectedCommit: "",
|
|
expectedVersion: "",
|
|
expectedBuildDate: "",
|
|
},
|
|
{
|
|
name: "with version information",
|
|
majorFromGit: "1",
|
|
minorFromGit: "2",
|
|
commitFromGit: "abc123def456",
|
|
versionFromGit: "v1.2.3",
|
|
buildDate: "2023-01-01T12:00:00Z",
|
|
expectedMajor: "1",
|
|
expectedMinor: "2",
|
|
expectedCommit: "abc123def456",
|
|
expectedVersion: "v1.2.3",
|
|
expectedBuildDate: "2023-01-01T12:00:00Z",
|
|
},
|
|
{
|
|
name: "partial version information",
|
|
majorFromGit: "2",
|
|
minorFromGit: "",
|
|
commitFromGit: "short",
|
|
versionFromGit: "",
|
|
buildDate: "2024-06-15T09:30:45Z",
|
|
expectedMajor: "2",
|
|
expectedMinor: "",
|
|
expectedCommit: "short",
|
|
expectedVersion: "",
|
|
expectedBuildDate: "2024-06-15T09:30:45Z",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
// Save original values
|
|
origMajor := majorFromGit
|
|
origMinor := minorFromGit
|
|
origCommit := commitFromGit
|
|
origVersion := versionFromGit
|
|
origBuildDate := buildDate
|
|
|
|
// Set test values
|
|
majorFromGit = tt.majorFromGit
|
|
minorFromGit = tt.minorFromGit
|
|
commitFromGit = tt.commitFromGit
|
|
versionFromGit = tt.versionFromGit
|
|
buildDate = tt.buildDate
|
|
|
|
// Test Get function
|
|
info := Get()
|
|
|
|
// Verify results
|
|
if info.Major != tt.expectedMajor {
|
|
t.Errorf("Get().Major = %v, want %v", info.Major, tt.expectedMajor)
|
|
}
|
|
if info.Minor != tt.expectedMinor {
|
|
t.Errorf("Get().Minor = %v, want %v", info.Minor, tt.expectedMinor)
|
|
}
|
|
if info.GitCommit != tt.expectedCommit {
|
|
t.Errorf("Get().GitCommit = %v, want %v", info.GitCommit, tt.expectedCommit)
|
|
}
|
|
if info.GitVersion != tt.expectedVersion {
|
|
t.Errorf("Get().GitVersion = %v, want %v", info.GitVersion, tt.expectedVersion)
|
|
}
|
|
if info.BuildDate != tt.expectedBuildDate {
|
|
t.Errorf("Get().BuildDate = %v, want %v", info.BuildDate, tt.expectedBuildDate)
|
|
}
|
|
|
|
// Restore original values
|
|
majorFromGit = origMajor
|
|
minorFromGit = origMinor
|
|
commitFromGit = origCommit
|
|
versionFromGit = origVersion
|
|
buildDate = origBuildDate
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGetReturnType(t *testing.T) {
|
|
info := Get()
|
|
|
|
// Verify that Get returns the correct type
|
|
if _, ok := interface{}(info).(version.Info); !ok {
|
|
t.Error("Get() should return version.Info type")
|
|
}
|
|
}
|
|
|
|
func TestGetConsistency(t *testing.T) {
|
|
// Test that multiple calls to Get() return consistent results
|
|
info1 := Get()
|
|
info2 := Get()
|
|
|
|
if info1.Major != info2.Major {
|
|
t.Error("Get() calls should return consistent Major version")
|
|
}
|
|
if info1.Minor != info2.Minor {
|
|
t.Error("Get() calls should return consistent Minor version")
|
|
}
|
|
if info1.GitCommit != info2.GitCommit {
|
|
t.Error("Get() calls should return consistent GitCommit")
|
|
}
|
|
if info1.GitVersion != info2.GitVersion {
|
|
t.Error("Get() calls should return consistent GitVersion")
|
|
}
|
|
if info1.BuildDate != info2.BuildDate {
|
|
t.Error("Get() calls should return consistent BuildDate")
|
|
}
|
|
}
|
|
|
|
func TestGetFieldsNotNil(t *testing.T) {
|
|
info := Get()
|
|
|
|
// All fields should be strings (not nil), even if empty
|
|
if info.Major == "" && majorFromGit != "" {
|
|
t.Error("Major field should match majorFromGit")
|
|
}
|
|
if info.Minor == "" && minorFromGit != "" {
|
|
t.Error("Minor field should match minorFromGit")
|
|
}
|
|
if info.GitCommit == "" && commitFromGit != "" {
|
|
t.Error("GitCommit field should match commitFromGit")
|
|
}
|
|
if info.GitVersion == "" && versionFromGit != "" {
|
|
t.Error("GitVersion field should match versionFromGit")
|
|
}
|
|
if info.BuildDate == "" && buildDate != "" {
|
|
t.Error("BuildDate field should match buildDate")
|
|
}
|
|
}
|