github.phpd.cn/thought-machine/please@v12.2.0+incompatible/tools/please_maven/maven/version_test.go (about) 1 package maven 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func v(s string) *Version { 10 ver := &Version{} 11 ver.Unmarshal(s) 12 return ver 13 } 14 15 func TestUnmarshal(t *testing.T) { 16 version := v("7") 17 assert.Equal(t, 7, version.Min.Major) 18 assert.Equal(t, 0, version.Min.Minor) 19 assert.Equal(t, 0, version.Min.Incremental) 20 21 version = v("1.2.3") 22 assert.Equal(t, 1, version.Min.Major) 23 assert.Equal(t, 2, version.Min.Minor) 24 assert.Equal(t, 3, version.Min.Incremental) 25 assert.True(t, version.Min.Inclusive) 26 assert.Equal(t, 0, version.Max.Minor) 27 assert.Equal(t, 0, version.Max.Incremental) 28 29 version = v("[1.2.3]") 30 assert.Equal(t, 1, version.Min.Major) 31 assert.Equal(t, 2, version.Min.Minor) 32 assert.Equal(t, 3, version.Min.Incremental) 33 assert.True(t, version.Min.Inclusive) 34 assert.Equal(t, 1, version.Max.Major) 35 assert.Equal(t, 2, version.Max.Minor) 36 assert.Equal(t, 3, version.Max.Incremental) 37 assert.True(t, version.Max.Inclusive) 38 39 version = v("[1.2.3,2.3.4)") 40 assert.Equal(t, 1, version.Min.Major) 41 assert.Equal(t, 2, version.Min.Minor) 42 assert.Equal(t, 3, version.Min.Incremental) 43 assert.True(t, version.Min.Inclusive) 44 assert.Equal(t, 2, version.Max.Major) 45 assert.Equal(t, 3, version.Max.Minor) 46 assert.Equal(t, 4, version.Max.Incremental) 47 assert.False(t, version.Max.Inclusive) 48 } 49 50 func TestVersionsLessThan(t *testing.T) { 51 assert.True(t, v("0.9").Matches(v("(,1.0]"))) 52 assert.True(t, v("1.0").Matches(v("(,1.0]"))) 53 assert.False(t, v("1.1").Matches(v("(,1.0]"))) 54 } 55 56 func TestVersionsGreaterThan(t *testing.T) { 57 assert.True(t, v("1.5").Matches(v("[1.5,)"))) 58 assert.True(t, v("1.6").Matches(v("[1.5,)"))) 59 assert.False(t, v("1.4").Matches(v("[1.5,)"))) 60 } 61 62 func TestVersionsImplicit(t *testing.T) { 63 assert.False(t, v("0.9").Matches(v("1.0"))) 64 assert.True(t, v("1.0").Matches(v("1.0"))) 65 assert.True(t, v("1.1").Matches(v("1.0"))) 66 } 67 68 func TestVersionsExact(t *testing.T) { 69 assert.False(t, v("0.9").Matches(v("[1.0]"))) 70 assert.True(t, v("1.0").Matches(v("[1.0]"))) 71 assert.False(t, v("1.1").Matches(v("[1.0]"))) 72 assert.False(t, v("1.0-SNAPSHOT").Matches(v("[1.0]"))) 73 } 74 75 func TestVersionsRangeInclusive(t *testing.T) { 76 assert.False(t, v("1.0").Matches(v("[1.2,1.3]"))) 77 assert.True(t, v("1.2").Matches(v("[1.2,1.3]"))) 78 assert.True(t, v("1.2.5").Matches(v("[1.2,1.3]"))) 79 assert.True(t, v("1.3").Matches(v("[1.2,1.3]"))) 80 assert.False(t, v("1.4").Matches(v("[1.2,1.3]"))) 81 } 82 83 func TestVersionsRangeExclusive(t *testing.T) { 84 assert.False(t, v("0.9").Matches(v("[1.0,2.0)"))) 85 assert.True(t, v("1.0").Matches(v("[1.0,2.0)"))) 86 assert.True(t, v("1.5").Matches(v("[1.0,2.0)"))) 87 assert.True(t, v("1.9.99").Matches(v("[1.0,2.0)"))) 88 assert.False(t, v("2.0").Matches(v("[1.0,2.0)"))) 89 } 90 91 func TestIntersect(t *testing.T) { 92 ver := v("[1.0,3.0]") 93 assert.True(t, ver.Intersect(v("[2.0,3.0]"))) 94 assert.Equal(t, 2, ver.Min.Major) 95 assert.Equal(t, 0, ver.Min.Minor) 96 assert.Equal(t, 3, ver.Max.Major) 97 assert.Equal(t, 0, ver.Max.Minor) 98 assert.True(t, v("[2.0]").Matches(ver)) 99 assert.False(t, v("[1.0]").Matches(ver)) 100 assert.True(t, v("[2.5.4]").Matches(ver)) 101 assert.True(t, v("[3.0]").Matches(ver)) 102 assert.False(t, v("[3.1]").Matches(ver)) 103 } 104 105 func TestIntersectUnparseable(t *testing.T) { 106 ver := v("1.0.1B") 107 assert.True(t, ver.Intersect(v("1.1"))) 108 assert.Equal(t, 1, ver.Min.Major) 109 assert.Equal(t, 1, ver.Min.Minor) 110 assert.Equal(t, 0, ver.Min.Incremental) 111 assert.Equal(t, "", ver.Min.Qualifier) 112 } 113 114 func TestIntersectTwoSquareBrackets(t *testing.T) { 115 v1 := v("[4.1.16.Final]") 116 v2 := v("[4.1.16.Final]") 117 assert.True(t, v1.Intersect(v2)) 118 assert.True(t, v1.Matches(v2)) 119 } 120 121 func TestMatchesOneSquareBracket(t *testing.T) { 122 v1 := v("[4.1.16.Final]") 123 v2 := v("4.1.16.Final") 124 assert.True(t, v1.Intersect(v2)) 125 assert.True(t, v1.Matches(v2)) 126 }