| 47 | } |
| 48 | |
| 49 | func TestNewSemver(t *testing.T) { |
| 50 | cases := []struct { |
| 51 | version string |
| 52 | err bool |
| 53 | }{ |
| 54 | {"", true}, |
| 55 | {"1.2.3", false}, |
| 56 | {"1.0", false}, |
| 57 | {"1", false}, |
| 58 | {"1.2.beta", true}, |
| 59 | {"1.21.beta", true}, |
| 60 | {"foo", true}, |
| 61 | {"1.2-5", false}, |
| 62 | {"1.2-beta.5", false}, |
| 63 | {"\n1.2", true}, |
| 64 | {"1.2.0-x.Y.0+metadata", false}, |
| 65 | {"1.2.0-x.Y.0+metadata-width-hypen", false}, |
| 66 | {"1.2.3-rc1-with-hypen", false}, |
| 67 | {"1.2.3.4", false}, |
| 68 | {"1.2.0.4-x.Y.0+metadata", false}, |
| 69 | {"1.2.0.4-x.Y.0+metadata-width-hypen", false}, |
| 70 | {"1.2.0-X-1.2.0+metadata~dist", false}, |
| 71 | {"1.2.3.4-rc1-with-hypen", false}, |
| 72 | {"1.2.3.4", false}, |
| 73 | {"v1.2.3", false}, |
| 74 | {"foo1.2.3", true}, |
| 75 | {"1.7rc2", true}, |
| 76 | {"v1.7rc2", true}, |
| 77 | {"1.0-", true}, |
| 78 | } |
| 79 | |
| 80 | for _, tc := range cases { |
| 81 | _, err := NewSemver(tc.version) |
| 82 | if tc.err && err == nil { |
| 83 | t.Fatalf("expected error for version: %q", tc.version) |
| 84 | } else if !tc.err && err != nil { |
| 85 | t.Fatalf("error for version %q: %s", tc.version, err) |
| 86 | } |
| 87 | } |
| 88 | } |
| 89 | |
| 90 | func TestCore(t *testing.T) { |
| 91 | cases := []struct { |