package build import ( "testing" "github.com/stretchr/testify/assert" "edge-infra.dev/pkg/lib/build/semver" ) func TestVersionString(t *testing.T) { inputs := []Version{ { Commit: "abcdef123456", ReleaseCandidate: true, SemVer: "4.2.0", Timestamp: 16053000, }, { Commit: "abcdef123456", ReleaseCandidate: false, SemVer: "4.2.0", Timestamp: 16053000, }, } for _, v := range inputs { verStr := v.String() if err := semver.IsValidSemver(verStr); err != nil { t.Errorf( "Version %v did not produce valid SemVer. SemVer: %v", v, verStr, ) } } } func TestVersion_Validate(t *testing.T) { var ( commit = "5c143c7c5fa14e871afc70e20c8c31355464a4a9" short = "5c143c7" ) tcs := map[string]struct { val Version valid bool }{ "valid rc": {Version{commit, true, "0.0.1", 1691702745}, true}, "valid": {Version{commit, false, "10.2.0", 16917025}, true}, "valid short": {Version{short, true, "0.0.1", 1691702745}, true}, "commit too short": {Version{"d34dbe", false, "0.0.1", 1691702745}, false}, "empty commit": {Version{"", true, "0.0.1", 1691702745}, false}, "no timestamp": {Version{commit, true, "0.0.1", 0}, false}, "empty semver": {Version{commit, true, "", 1691702745}, false}, "invalid semver": {Version{commit, true, "0.0.1.1", 1691702745}, false}, "two parts": {Version{commit, true, "0.15", 1691702745}, false}, } for name, tc := range tcs { t.Run(name, func(t *testing.T) { err := tc.val.Validate() switch tc.valid { case true: assert.NoError(t, err) case false: assert.Error(t, err) } }) } }