1 package version
2
3 import (
4 "errors"
5 "fmt"
6 "testing"
7 )
8
9 func TestMatch(t *testing.T) {
10 testCases := []struct {
11 name string
12 expected string
13 actual string
14 err error
15 }{
16 {
17 name: "up-to-date",
18 expected: "dev-0.1.2",
19 actual: "dev-0.1.2",
20 },
21 {
22 name: "up-to-date with same build info",
23 expected: "dev-0.1.2-bar",
24 actual: "dev-0.1.2-bar",
25 },
26 {
27 name: "up-to-date with different build info",
28 expected: "dev-0.1.2-bar",
29 actual: "dev-0.1.2-baz",
30 },
31 {
32 name: "up-to-date with hotpatch",
33 expected: "dev-0.1.2-3",
34 actual: "dev-0.1.2-3",
35 },
36 {
37 name: "up-to-date with hotpatch and different build info",
38 expected: "dev-0.1.2-3-bar",
39 actual: "dev-0.1.2-3-baz",
40 },
41 {
42 name: "not up-to-date",
43 expected: "dev-0.1.2",
44 actual: "dev-0.1.1",
45 err: errors.New("is running version 0.1.1 but the latest dev version is 0.1.2"),
46 },
47 {
48 name: "not up-to-date but with same build info",
49 expected: "dev-0.1.2-bar",
50 actual: "dev-0.1.1-bar",
51 err: errors.New("is running version 0.1.1 but the latest dev version is 0.1.2"),
52 },
53 {
54 name: "not up-to-date with hotpatch",
55 expected: "dev-0.1.2-3",
56 actual: "dev-0.1.2-2",
57 err: errors.New("is running version 0.1.2-2 but the latest dev version is 0.1.2-3"),
58 },
59 {
60 name: "mismatched channels",
61 expected: "dev-0.1.2",
62 actual: "git-cb21f1bc",
63 err: errors.New("mismatched channels: running git-cb21f1bc but retrieved dev-0.1.2"),
64 },
65 {
66 name: "expected version malformed",
67 expected: "badformat",
68 actual: "dev-0.1.2",
69 err: errors.New("failed to parse expected version: unsupported version format: badformat"),
70 },
71 {
72 name: "actual version malformed",
73 expected: "dev-0.1.2",
74 actual: "badformat",
75 err: errors.New("failed to parse actual version: unsupported version format: badformat"),
76 },
77 }
78
79 for _, tc := range testCases {
80 tc := tc
81 t.Run(fmt.Sprintf(tc.name), func(t *testing.T) {
82 err := match(tc.expected, tc.actual)
83 if (err == nil && tc.err != nil) ||
84 (err != nil && tc.err == nil) ||
85 ((err != nil && tc.err != nil) && (err.Error() != tc.err.Error())) {
86 t.Fatalf("Expected \"%s\", got \"%s\"", tc.err, err)
87 }
88 })
89 }
90 }
91
View as plain text