github.com/xhghs/rclone@v1.51.1-0.20200430155106-e186a28cced8/fs/version/version_test.go (about)

     1  package version
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestNew(t *testing.T) {
    11  	for _, test := range []struct {
    12  		in      string
    13  		want    Version
    14  		wantErr bool
    15  	}{
    16  		{"v1.41", Version{1, 41}, false},
    17  		{"rclone v1.41", Version{1, 41}, false},
    18  		{"rclone v1.41.23", Version{1, 41, 23}, false},
    19  		{"rclone v1.41.23-100", Version{1, 41, 23, 100}, false},
    20  		{"rclone v1.41-100", Version{1, 41, 0, 100}, false},
    21  		{"rclone v1.41.23-100-g12312a", Version{1, 41, 23, 100}, false},
    22  		{"rclone v1.41-100-g12312a", Version{1, 41, 0, 100}, false},
    23  		{"rclone v1.42-005-g56e1e820β", Version{1, 42, 0, 5}, false},
    24  		{"rclone v1.42-005-g56e1e820-feature-branchβ", Version{1, 42, 0, 5}, false},
    25  
    26  		{"v1.41s", nil, true},
    27  		{"rclone v1-41", nil, true},
    28  		{"rclone v1.41.2c3", nil, true},
    29  		{"rclone v1.41.23-100 potato", nil, true},
    30  		{"rclone 1.41-100", nil, true},
    31  		{"rclone v1.41.23-100-12312a", nil, true},
    32  
    33  		{"v1.41-DEV", Version{1, 41, 999, 999}, false},
    34  	} {
    35  		what := fmt.Sprintf("in=%q", test.in)
    36  		got, err := New(test.in)
    37  		if test.wantErr {
    38  			assert.Error(t, err, what)
    39  		} else {
    40  			assert.NoError(t, err, what)
    41  		}
    42  		assert.Equal(t, test.want, got, what)
    43  	}
    44  
    45  }
    46  
    47  func TestCmp(t *testing.T) {
    48  	for _, test := range []struct {
    49  		a, b Version
    50  		want int
    51  	}{
    52  		{Version{1}, Version{1}, 0},
    53  		{Version{1}, Version{2}, -1},
    54  		{Version{2}, Version{1}, 1},
    55  		{Version{2}, Version{2, 1}, -1},
    56  		{Version{2, 1}, Version{2}, 1},
    57  		{Version{2, 1}, Version{2, 1}, 0},
    58  		{Version{2, 1}, Version{2, 2}, -1},
    59  		{Version{2, 2}, Version{2, 1}, 1},
    60  	} {
    61  		got := test.a.Cmp(test.b)
    62  		if got < 0 {
    63  			got = -1
    64  		} else if got > 0 {
    65  			got = 1
    66  		}
    67  		assert.Equal(t, test.want, got, fmt.Sprintf("%v cmp %v", test.a, test.b))
    68  		// test the reverse
    69  		got = -test.b.Cmp(test.a)
    70  		assert.Equal(t, test.want, got, fmt.Sprintf("%v cmp %v", test.b, test.a))
    71  	}
    72  }
    73  
    74  func TestString(t *testing.T) {
    75  	v, err := New("v1.44.1-2")
    76  	assert.NoError(t, err)
    77  
    78  	assert.Equal(t, "1.44.1.2", v.String())
    79  }
    80  
    81  func TestIsGit(t *testing.T) {
    82  	v, err := New("v1.44")
    83  	assert.NoError(t, err)
    84  	assert.Equal(t, false, v.IsGit())
    85  
    86  	v, err = New("v1.44-DEV")
    87  	assert.NoError(t, err)
    88  	assert.Equal(t, true, v.IsGit())
    89  }