kcl-lang.io/kpm@v0.8.7-0.20240520061008-9fc4c5efc8c7/pkg/semver/semver_test.go (about)

     1  package semver
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gotest.tools/v3/assert"
     7  	"kcl-lang.io/kpm/pkg/errors"
     8  )
     9  
    10  func TestLatestVersion(t *testing.T) {
    11  	latest, err := LatestVersion([]string{"1.2.3", "1.4.0", "1.3.5", "1.0.0"})
    12  	assert.Equal(t, err, nil)
    13  	assert.Equal(t, latest, "1.4.0")
    14  
    15  	latest, err = LatestVersion([]string{"1.2.3", "1.3.5", "1.0.0", "1.4.0-beta"})
    16  	assert.Equal(t, err, nil)
    17  	assert.Equal(t, latest, "1.4.0-beta")
    18  
    19  	latest, err = LatestVersion([]string{})
    20  	assert.Equal(t, err, errors.InvalidVersionFormat)
    21  	assert.Equal(t, latest, "")
    22  
    23  	latest, err = LatestVersion([]string{"invalid_version"})
    24  	assert.Equal(t, err.Error(), "failed to parse version invalid_version\nMalformed version: invalid_version\n")
    25  	assert.Equal(t, latest, "")
    26  
    27  	latest, err = LatestVersion([]string{"1.2.3", "1.4.0", "1.3.5", "invalid_version"})
    28  	assert.Equal(t, err.Error(), "failed to parse version invalid_version\nMalformed version: invalid_version\n")
    29  	assert.Equal(t, latest, "")
    30  }
    31  
    32  func TestTheLatestTagWithMissingVersion(t *testing.T) {
    33  	latest, err := LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5", "0.1.0-beta"})
    34  	assert.Equal(t, err, nil)
    35  	assert.Equal(t, latest, "5")
    36  
    37  	latest, err = LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5.5.5"})
    38  	assert.Equal(t, err, nil)
    39  	assert.Equal(t, latest, "5.5.5")
    40  
    41  	latest, err = LatestVersion([]string{"1.2", "1.4", "1.3", "1.0", "5.5"})
    42  	assert.Equal(t, err, nil)
    43  	assert.Equal(t, latest, "5.5")
    44  }
    45  
    46  func TestOldestVersion(t *testing.T) {
    47  	oldest, err := OldestVersion([]string{"1.2.3", "1.4.0", "2.0.0", "1.3.5", "1.0.0"})
    48  	assert.Equal(t, err, nil)
    49  	assert.Equal(t, oldest, "1.0.0")
    50  
    51  	oldest, err = OldestVersion([]string{"2.2.0", "2.4.0", "3.0.0", "2.3.5"})
    52  	assert.Equal(t, err, nil)
    53  	assert.Equal(t, oldest, "2.2.0")
    54  }
    55  
    56  func TestFilterCompatibleVersions(t *testing.T) {
    57  	compatible, err := filterCompatibleVersions([]string{"1.2.3", "1.4.0", "2.0.0", "1.3.5", "1.0.0"}, "1.2.0")
    58  	assert.Equal(t, err, nil)
    59  	expCompatible := []string{"1.2.3", "1.4.0", "1.3.5", "1.0.0"}
    60  	for i, v := range compatible {
    61  		assert.Equal(t, v, expCompatible[i])
    62  	}
    63  
    64  	compatible, err = filterCompatibleVersions([]string{"2.2.0", "2.4.0", "3.0.0", "2.3.5"}, "2.0.0")
    65  	assert.Equal(t, err, nil)
    66  	expCompatible = []string{"2.2.0", "2.4.0", "2.3.5"}
    67  	for i, v := range compatible {
    68  		assert.Equal(t, v, expCompatible[i])
    69  	}
    70  }