github.com/brandonmanuel/git-chglog@v0.0.0-20200903004639-7a62fa08787a/tag_reader_test.go (about) 1 package chglog 2 3 import ( 4 "errors" 5 "strings" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestTagReader(t *testing.T) { 13 assert := assert.New(t) 14 client := &mockClient{ 15 ReturnExec: func(subcmd string, args ...string) (string, error) { 16 if subcmd != "for-each-ref" { 17 return "", errors.New("") 18 } 19 return strings.Join([]string{ 20 "", 21 "refs/tags/v2.0.4-beta.1@@__CHGLOG__@@Release v2.0.4-beta.1@@__CHGLOG__@@Thu Feb 1 00:00:00 2018 +0000@@__CHGLOG__@@", 22 "refs/tags/4.4.3@@__CHGLOG__@@This is tag subject@@__CHGLOG__@@@@__CHGLOG__@@Fri Feb 2 00:00:00 2018 +0000", 23 "refs/tags/4.4.4@@__CHGLOG__@@Release 4.4.4@@__CHGLOG__@@Fri Feb 2 10:00:40 2018 +0000@@__CHGLOG__@@", 24 "refs/tags/5.0.0-rc.0@@__CHGLOG__@@Release 5.0.0-rc.0@@__CHGLOG__@@Sat Feb 3 12:30:10 2018 +0000@@__CHGLOG__@@", 25 "refs/tags/hoge_fuga@@__CHGLOG__@@Invalid semver tag name@@__CHGLOG__@@Mon Mar 12 12:30:10 2018 +0000@@__CHGLOG__@@", 26 "hoge@@__CHGLOG__@@", 27 }, "\n"), nil 28 }, 29 } 30 31 actual, err := newTagReader(client, "").ReadAll() 32 assert.Nil(err) 33 34 assert.Equal( 35 []*Tag{ 36 &Tag{ 37 Name: "hoge_fuga", 38 Subject: "Invalid semver tag name", 39 Date: time.Date(2018, 3, 12, 12, 30, 10, 0, time.UTC), 40 Next: nil, 41 Previous: &RelateTag{ 42 Name: "5.0.0-rc.0", 43 Subject: "Release 5.0.0-rc.0", 44 Date: time.Date(2018, 2, 3, 12, 30, 10, 0, time.UTC), 45 }, 46 }, 47 &Tag{ 48 Name: "5.0.0-rc.0", 49 Subject: "Release 5.0.0-rc.0", 50 Date: time.Date(2018, 2, 3, 12, 30, 10, 0, time.UTC), 51 Next: &RelateTag{ 52 Name: "hoge_fuga", 53 Subject: "Invalid semver tag name", 54 Date: time.Date(2018, 3, 12, 12, 30, 10, 0, time.UTC), 55 }, 56 Previous: &RelateTag{ 57 Name: "4.4.4", 58 Subject: "Release 4.4.4", 59 Date: time.Date(2018, 2, 2, 10, 0, 40, 0, time.UTC), 60 }, 61 }, 62 &Tag{ 63 Name: "4.4.4", 64 Subject: "Release 4.4.4", 65 Date: time.Date(2018, 2, 2, 10, 0, 40, 0, time.UTC), 66 Next: &RelateTag{ 67 Name: "5.0.0-rc.0", 68 Subject: "Release 5.0.0-rc.0", 69 Date: time.Date(2018, 2, 3, 12, 30, 10, 0, time.UTC), 70 }, 71 Previous: &RelateTag{ 72 Name: "4.4.3", 73 Subject: "This is tag subject", 74 Date: time.Date(2018, 2, 2, 0, 0, 0, 0, time.UTC), 75 }, 76 }, 77 &Tag{ 78 Name: "4.4.3", 79 Subject: "This is tag subject", 80 Date: time.Date(2018, 2, 2, 0, 0, 0, 0, time.UTC), 81 Next: &RelateTag{ 82 Name: "4.4.4", 83 Subject: "Release 4.4.4", 84 Date: time.Date(2018, 2, 2, 10, 0, 40, 0, time.UTC), 85 }, 86 Previous: &RelateTag{ 87 Name: "v2.0.4-beta.1", 88 Subject: "Release v2.0.4-beta.1", 89 Date: time.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), 90 }, 91 }, 92 &Tag{ 93 Name: "v2.0.4-beta.1", 94 Subject: "Release v2.0.4-beta.1", 95 Date: time.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), 96 Next: &RelateTag{ 97 Name: "4.4.3", 98 Subject: "This is tag subject", 99 Date: time.Date(2018, 2, 2, 0, 0, 0, 0, time.UTC), 100 }, 101 Previous: nil, 102 }, 103 }, 104 actual, 105 ) 106 107 actual_filtered, err_filtered := newTagReader(client, "^v").ReadAll() 108 assert.Nil(err_filtered) 109 assert.Equal( 110 []*Tag{ 111 &Tag{ 112 Name: "v2.0.4-beta.1", 113 Subject: "Release v2.0.4-beta.1", 114 Date: time.Date(2018, 2, 1, 0, 0, 0, 0, time.UTC), 115 Next: nil, 116 Previous: nil, 117 }, 118 }, 119 actual_filtered, 120 ) 121 }