1 package build
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7
8 "edge-infra.dev/pkg/lib/build/semver"
9 )
10
11 func TestVersionString(t *testing.T) {
12 inputs := []Version{
13 {
14 Commit: "abcdef123456",
15 ReleaseCandidate: true,
16 SemVer: "4.2.0",
17 Timestamp: 16053000,
18 },
19 {
20 Commit: "abcdef123456",
21 ReleaseCandidate: false,
22 SemVer: "4.2.0",
23 Timestamp: 16053000,
24 },
25 }
26
27 for _, v := range inputs {
28 verStr := v.String()
29 if err := semver.IsValidSemver(verStr); err != nil {
30 t.Errorf(
31 "Version %v did not produce valid SemVer. SemVer: %v",
32 v,
33 verStr,
34 )
35 }
36 }
37 }
38
39 func TestVersion_Validate(t *testing.T) {
40 var (
41 commit = "5c143c7c5fa14e871afc70e20c8c31355464a4a9"
42 short = "5c143c7"
43 )
44
45 tcs := map[string]struct {
46 val Version
47 valid bool
48 }{
49 "valid rc": {Version{commit, true, "0.0.1", 1691702745}, true},
50 "valid": {Version{commit, false, "10.2.0", 16917025}, true},
51 "valid short": {Version{short, true, "0.0.1", 1691702745}, true},
52 "commit too short": {Version{"d34dbe", false, "0.0.1", 1691702745}, false},
53 "empty commit": {Version{"", true, "0.0.1", 1691702745}, false},
54 "no timestamp": {Version{commit, true, "0.0.1", 0}, false},
55 "empty semver": {Version{commit, true, "", 1691702745}, false},
56 "invalid semver": {Version{commit, true, "0.0.1.1", 1691702745}, false},
57 "two parts": {Version{commit, true, "0.15", 1691702745}, false},
58 }
59
60 for name, tc := range tcs {
61 t.Run(name, func(t *testing.T) {
62 err := tc.val.Validate()
63 switch tc.valid {
64 case true:
65 assert.NoError(t, err)
66 case false:
67 assert.Error(t, err)
68 }
69 })
70 }
71 }
72
View as plain text