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  }