(t *testing.T)
| 120 | } |
| 121 | |
| 122 | func TestVersionCompare(t *testing.T) { |
| 123 | cases := []struct { |
| 124 | v1 string |
| 125 | v2 string |
| 126 | expected int |
| 127 | }{ |
| 128 | {"1.2.3", "1.4.5", -1}, |
| 129 | {"1.2-beta", "1.2-beta", 0}, |
| 130 | {"1.2", "1.1.4", 1}, |
| 131 | {"1.2", "1.2-beta", 1}, |
| 132 | {"1.2+foo", "1.2+beta", 0}, |
| 133 | {"v1.2", "v1.2-beta", 1}, |
| 134 | {"v1.2+foo", "v1.2+beta", 0}, |
| 135 | {"v1.2.3.4", "v1.2.3.4", 0}, |
| 136 | {"v1.2.0.0", "v1.2", 0}, |
| 137 | {"v1.2.0.0.1", "v1.2", 1}, |
| 138 | {"v1.2", "v1.2.0.0", 0}, |
| 139 | {"v1.2", "v1.2.0.0.1", -1}, |
| 140 | {"v1.2.0.0", "v1.2.0.0.1", -1}, |
| 141 | {"v1.2.3.0", "v1.2.3.4", -1}, |
| 142 | {"1.7rc2", "1.7rc1", 1}, |
| 143 | {"1.7rc2", "1.7", -1}, |
| 144 | {"1.2.0", "1.2.0-X-1.2.0+metadata~dist", 1}, |
| 145 | } |
| 146 | |
| 147 | for _, tc := range cases { |
| 148 | v1, err := NewVersion(tc.v1) |
| 149 | if err != nil { |
| 150 | t.Fatalf("err: %s", err) |
| 151 | } |
| 152 | |
| 153 | v2, err := NewVersion(tc.v2) |
| 154 | if err != nil { |
| 155 | t.Fatalf("err: %s", err) |
| 156 | } |
| 157 | |
| 158 | actual := v1.Compare(v2) |
| 159 | expected := tc.expected |
| 160 | if actual != expected { |
| 161 | t.Fatalf( |
| 162 | "%s <=> %s\nexpected: %d\nactual: %d", |
| 163 | tc.v1, tc.v2, |
| 164 | expected, actual) |
| 165 | } |
| 166 | } |
| 167 | } |
| 168 | |
| 169 | func TestVersionCompare_versionAndSemver(t *testing.T) { |
| 170 | cases := []struct { |
nothing calls this directly
no test coverage detected