Files
open-cluster-management/pkg/version/version_test.go
Jian Qiu f9d4628f17 Enhance test coverage (#1174)
Signed-off-by: Jian Qiu <jqiu@redhat.com>
2025-09-11 07:26:59 +00:00

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")
}
}