@@ -26,6 +26,7 @@ func TestGit(t *testing.T) {
2626 t .Run ("GetInfo" , getInfo )
2727 t .Run ("GetReleases" , getReleases )
2828 t .Run ("GetCommits" , getCommits )
29+ t .Run ("GetCommitsNoFFMerge" , getCommitsNoFFMerge )
2930 t .Run ("CreateRelease" , createRelease )
3031}
3132
@@ -151,6 +152,31 @@ func createRepo() (*Repository, error) {
151152 return repo , nil
152153}
153154
155+ func cloneRepo (path string , url string ) (* Repository , error ) {
156+ _ , err := git .PlainClone (path , false , & git.CloneOptions {
157+ Auth : & http.BasicAuth {
158+ Username : "test" ,
159+ Password : "test" ,
160+ },
161+ URL : url ,
162+ })
163+ if err != nil {
164+ return nil , err
165+ }
166+ repo := & Repository {}
167+ err = repo .Init (map [string ]string {
168+ "git_path" : path ,
169+ "auth" : "basic" ,
170+ "auth_username" : "test" ,
171+ "auth_password" : "test" ,
172+ })
173+ if err != nil {
174+ return nil , err
175+ }
176+
177+ return repo , nil
178+ }
179+
154180func getInfo (t * testing.T ) {
155181 require := require .New (t )
156182 repo , err := createRepo ()
@@ -179,6 +205,20 @@ func getCommits(t *testing.T) {
179205 }
180206}
181207
208+ func getCommitsNoFFMerge (t * testing.T ) {
209+ require := require .New (t )
210+ dir , err := os .MkdirTemp ("" , "provider-git" )
211+ require .NoError (err )
212+ repo , err := cloneRepo (dir , "http://localhost:3000/test/no_ff_merge.git" )
213+ require .NoError (err )
214+ releases , err := repo .GetReleases ("" )
215+ require .Len (releases , 1 )
216+ initialCommitSha := releases [0 ].GetSHA ()
217+ commits , err := repo .GetCommits (initialCommitSha , "master" )
218+ require .NoError (err )
219+ require .Len (commits , 2 )
220+ }
221+
182222func createRelease (t * testing.T ) {
183223 require := require .New (t )
184224 repo , err := createRepo ()
@@ -211,14 +251,27 @@ func createRelease(t *testing.T) {
211251 Changelog : testCase .changelog ,
212252 })
213253 require .NoError (err )
254+ tagName := "v" + testCase .version
214255
215- tagRef , err := gRepo .Tag ("v" + testCase . version )
256+ tagRef , err := gRepo .Tag (tagName )
216257 require .NoError (err )
217258
218259 tagObj , err := gRepo .TagObject (tagRef .Hash ())
219260 require .NoError (err )
220261
221262 require .Equal (testCase .changelog + "\n " , tagObj .Message )
263+
264+ // Clean up tags so future test runs succeed
265+ tagRefName := ":refs/tags/" + tagName
266+ err = gRepo .Push (& git.PushOptions {
267+ RemoteName : "origin" ,
268+ RefSpecs : []config.RefSpec {config .RefSpec (tagRefName )},
269+ Auth : & http.BasicAuth {
270+ Username : "test" ,
271+ Password : "test" ,
272+ },
273+ })
274+ require .NoError (err )
222275 }
223276}
224277
0 commit comments