github.com/git-chglog/git-chglog@v0.15.5-0.20240126074033-6a6993d52d69/tag_selector_test.go (about) 1 package chglog 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestTagSelector(t *testing.T) { 10 assert := assert.New(t) 11 assert.True(true) 12 selector := newTagSelector() 13 14 fixtures := []*Tag{ 15 {Name: "2.2.12-rc.12"}, 16 {Name: "2.1.0"}, 17 {Name: "v2.0.0-beta.1"}, 18 {Name: "v1.2.9"}, 19 {Name: "v1.0.0"}, 20 } 21 22 table := map[string][]string{ 23 // Single 24 "2.2.12-rc.12": { 25 "2.2.12-rc.12", 26 "2.1.0", 27 }, 28 "v2.0.0-beta.1": { 29 "v2.0.0-beta.1", 30 "v1.2.9", 31 }, 32 "v1.0.0": { 33 "v1.0.0", 34 "", 35 }, 36 // ~ <tag> 37 "..2.1.0": { 38 "2.1.0", 39 "v2.0.0-beta.1", 40 "v1.2.9", 41 "v1.0.0", 42 "", 43 }, 44 "..v1.0.0": { 45 "v1.0.0", 46 "", 47 }, 48 // <tag> ~ 49 "v2.0.0-beta.1..": { 50 "2.2.12-rc.12", 51 "2.1.0", 52 "v2.0.0-beta.1", 53 "v1.2.9", 54 }, 55 "2.2.12-rc.12..": { 56 "2.2.12-rc.12", 57 "2.1.0", 58 }, 59 "v1.0.0..": { 60 "2.2.12-rc.12", 61 "2.1.0", 62 "v2.0.0-beta.1", 63 "v1.2.9", 64 "v1.0.0", 65 "", 66 }, 67 // <tag> ~ <tag> 68 "v1.0.0..2.2.12-rc.12": { 69 "2.2.12-rc.12", 70 "2.1.0", 71 "v2.0.0-beta.1", 72 "v1.2.9", 73 "v1.0.0", 74 "", 75 }, 76 "v1.0.0..v2.0.0-beta.1": { 77 "v2.0.0-beta.1", 78 "v1.2.9", 79 "v1.0.0", 80 "", 81 }, 82 "v1.2.9..2.1.0": { 83 "2.1.0", 84 "v2.0.0-beta.1", 85 "v1.2.9", 86 "v1.0.0", 87 }, 88 } 89 90 for query, expected := range table { 91 list, from, err := selector.Select(fixtures, query) 92 actual := make([]string, len(list)) 93 for i, tag := range list { 94 actual[i] = tag.Name 95 } 96 97 assert.Nil(err) 98 assert.Equal(expected[0:len(expected)-1], actual) 99 assert.Equal(expected[len(expected)-1], from) 100 } 101 }