@@ -12,21 +12,26 @@ import (
1212
1313 "github.com/Masterminds/semver"
1414 "github.com/google/go-github/v30/github"
15+ "github.com/stretchr/testify/require"
1516)
1617
1718func TestNewGithubRepository (t * testing.T ) {
19+ require := require .New (t )
20+
1821 repo , err := NewGitHubRepository (context .TODO (), "" , "" , "" )
19- if repo != nil || err == nil {
20- t . Fatal ( "invalid initialization " )
21- }
22+ require . Nil ( repo )
23+ require . EqualError ( err , "invalid slug " )
24+
2225 repo , err = NewGitHubRepository (context .TODO (), "" , "owner/test-repo" , "token" )
23- if repo == nil || err != nil {
24- t .Fatal ("invalid initialization" )
25- }
26+ require .NotNil (repo )
27+ require .NoError (err )
28+ require .Equal (repo .Owner (), "owner" )
29+ require .Equal (repo .Repo (), "test-repo" )
30+
2631 repo , err = NewGitHubRepository (context .TODO (), "github.enterprise" , "owner/test-repo" , "token" )
27- if repo . Client . BaseURL . Host != "github.enterprise" || err != nil {
28- t . Fatal ( "invalid enterprise initialization" )
29- }
32+ require . NotNil ( repo )
33+ require . NoError ( err )
34+ require . Equal ( "github.enterprise" , repo . Client . BaseURL . Host )
3035}
3136
3237func createGithubCommit (sha , message string ) * github.RepositoryCommit {
@@ -103,10 +108,7 @@ func githubHandler(w http.ResponseWriter, r *http.Request) {
103108
104109func getNewGithubTestRepo (t * testing.T ) (* GitHubRepository , * httptest.Server ) {
105110 repo , err := NewGitHubRepository (context .TODO (), "" , "owner/test-repo" , "token" )
106- if err != nil {
107- t .Fatal (err )
108- return nil , nil
109- }
111+ require .NoError (t , err )
110112 ts := httptest .NewServer (http .HandlerFunc (githubHandler ))
111113 repo .Client .BaseURL , _ = url .Parse (ts .URL + "/" )
112114 return repo , ts
@@ -116,24 +118,17 @@ func TestGithubGetInfo(t *testing.T) {
116118 repo , ts := getNewGithubTestRepo (t )
117119 defer ts .Close ()
118120 defaultBranch , isPrivate , err := repo .GetInfo ()
119- if err != nil {
120- t .Fatal (err )
121- }
122- if defaultBranch != GITHUB_DEFAULTBRANCH || ! isPrivate {
123- t .Fatal ("invalid response" )
124- }
121+ require .NoError (t , err )
122+ require .Equal (t , defaultBranch , GITLAB_DEFAULTBRANCH )
123+ require .True (t , isPrivate )
125124}
126125
127126func TestGithubGetCommits (t * testing.T ) {
128127 repo , ts := getNewGithubTestRepo (t )
129128 defer ts .Close ()
130129 commits , err := repo .GetCommits ("" )
131- if err != nil {
132- t .Fatal (err )
133- }
134- if len (commits ) != 4 {
135- t .Fatal ("invalid response" )
136- }
130+ require .NoError (t , err )
131+ require .Len (t , commits , 4 )
137132
138133 if ! compareCommit (commits [0 ], "feat" , "app" , Change {false , true , false }) ||
139134 ! compareCommit (commits [1 ], "fix" , "" , Change {false , false , true }) ||
@@ -146,54 +141,34 @@ func TestGithubGetCommits(t *testing.T) {
146141func TestGithubGetLatestRelease (t * testing.T ) {
147142 repo , ts := getNewGithubTestRepo (t )
148143 defer ts .Close ()
149- release , err := repo .GetLatestRelease ("" , nil )
150- if err != nil {
151- t .Fatal (err )
152- }
153- if release .SHA != "deadbeef" || release .Version .String () != "2020.4.19" {
154- t .Fatal ("invalid tag" )
155- }
156-
157- re := regexp .MustCompile ("^v[0-9]*" )
158- release , err = repo .GetLatestRelease ("" , re )
159- if err != nil {
160- t .Fatal (err )
161- }
162- if release .SHA != "deadbeef" || release .Version .String () != "2.0.0" {
163- t .Fatal ("invalid tag" )
164- }
165-
166- release , err = repo .GetLatestRelease ("2-beta" , nil )
167- if err != nil {
168- t .Fatal (err )
169- }
170- if release .SHA != "deadbeef" || release .Version .String () != "2.1.0-beta" {
171- t .Fatal ("invalid tag" )
172- }
173-
174- release , err = repo .GetLatestRelease ("3-beta" , nil )
175- if err != nil {
176- t .Fatal (err )
177- }
178- if release .SHA != "deadbeef" || release .Version .String () != "3.0.0-beta.2" {
179- t .Fatal ("invalid tag" )
180- }
181144
182- release , err = repo .GetLatestRelease ("4-beta" , nil )
183- if err != nil {
184- t .Fatal (err )
185- }
186- if release .SHA != "deadbeef" || release .Version .String () != "4.0.0-beta" {
187- t .Fatal ("invalid tag" )
145+ testCases := []struct {
146+ vrange string
147+ re * regexp.Regexp
148+ expectedSHA string
149+ expectedVersion string
150+ }{
151+ {"" , nil , "deadbeef" , "2020.4.19" },
152+ {"" , regexp .MustCompile ("^v[0-9]*" ), "deadbeef" , "2.0.0" },
153+ {"2-beta" , nil , "deadbeef" , "2.1.0-beta" },
154+ {"3-beta" , nil , "deadbeef" , "3.0.0-beta.2" },
155+ {"4-beta" , nil , "deadbeef" , "4.0.0-beta" },
156+ }
157+
158+ for _ , tc := range testCases {
159+ t .Run (fmt .Sprintf ("VersionRange: %s, RE: %s" , tc .vrange , tc .re ), func (t * testing.T ) {
160+ release , err := repo .GetLatestRelease (tc .vrange , tc .re )
161+ require .NoError (t , err )
162+ require .Equal (t , tc .expectedSHA , release .SHA )
163+ require .Equal (t , tc .expectedVersion , release .Version .String ())
164+ })
188165 }
189166}
190167
191168func TestGithubCreateRelease (t * testing.T ) {
192169 repo , ts := getNewGithubTestRepo (t )
193170 defer ts .Close ()
194- newVersion , _ := semver .NewVersion ("2.0.0" )
171+ newVersion := semver .MustParse ("2.0.0" )
195172 err := repo .CreateRelease ("" , newVersion , false , "" , "deadbeef" )
196- if err != nil {
197- t .Fatal (err )
198- }
173+ require .NoError (t , err )
199174}
0 commit comments