Skip to content
Snippets Groups Projects
Commit e80c6078 authored by dannylongeuay's avatar dannylongeuay Committed by Christoph Witzko
Browse files

fix(*): :bug: check commits log ordering

parent cb5045bc
No related branches found
No related tags found
No related merge requests found
...@@ -109,6 +109,7 @@ func (repo *Repository) GetCommits(fromSha, toSha string) ([]*semrel.RawCommit, ...@@ -109,6 +109,7 @@ func (repo *Repository) GetCommits(fromSha, toSha string) ([]*semrel.RawCommit,
commits, err := repo.repo.Log(&git.LogOptions{ commits, err := repo.repo.Log(&git.LogOptions{
From: *toHash, From: *toHash,
Order: git.LogOrderCommitterTime,
}) })
if err != nil { if err != nil {
return nil, err return nil, err
......
...@@ -26,6 +26,7 @@ func TestGit(t *testing.T) { ...@@ -26,6 +26,7 @@ func TestGit(t *testing.T) {
t.Run("GetInfo", getInfo) t.Run("GetInfo", getInfo)
t.Run("GetReleases", getReleases) t.Run("GetReleases", getReleases)
t.Run("GetCommits", getCommits) t.Run("GetCommits", getCommits)
t.Run("GetCommitsNoFFMerge", getCommitsNoFFMerge)
t.Run("CreateRelease", createRelease) t.Run("CreateRelease", createRelease)
} }
...@@ -151,6 +152,31 @@ func createRepo() (*Repository, error) { ...@@ -151,6 +152,31 @@ func createRepo() (*Repository, error) {
return repo, nil return repo, nil
} }
func cloneRepo(path string, url string) (*Repository, error) {
_, err := git.PlainClone(path, false, &git.CloneOptions{
Auth: &http.BasicAuth{
Username: "test",
Password: "test",
},
URL: url,
})
if err != nil {
return nil, err
}
repo := &Repository{}
err = repo.Init(map[string]string{
"git_path": path,
"auth": "basic",
"auth_username": "test",
"auth_password": "test",
})
if err != nil {
return nil, err
}
return repo, nil
}
func getInfo(t *testing.T) { func getInfo(t *testing.T) {
require := require.New(t) require := require.New(t)
repo, err := createRepo() repo, err := createRepo()
...@@ -179,6 +205,20 @@ func getCommits(t *testing.T) { ...@@ -179,6 +205,20 @@ func getCommits(t *testing.T) {
} }
} }
func getCommitsNoFFMerge(t *testing.T) {
require := require.New(t)
dir, err := os.MkdirTemp("", "provider-git")
require.NoError(err)
repo, err := cloneRepo(dir, "http://localhost:3000/test/no_ff_merge.git")
require.NoError(err)
releases, err := repo.GetReleases("")
require.Len(releases, 1)
initialCommitSha := releases[0].GetSHA()
commits, err := repo.GetCommits(initialCommitSha, "master")
require.NoError(err)
require.Len(commits, 2)
}
func createRelease(t *testing.T) { func createRelease(t *testing.T) {
require := require.New(t) require := require.New(t)
repo, err := createRepo() repo, err := createRepo()
...@@ -211,14 +251,27 @@ func createRelease(t *testing.T) { ...@@ -211,14 +251,27 @@ func createRelease(t *testing.T) {
Changelog: testCase.changelog, Changelog: testCase.changelog,
}) })
require.NoError(err) require.NoError(err)
tagName := "v" + testCase.version
tagRef, err := gRepo.Tag("v" + testCase.version) tagRef, err := gRepo.Tag(tagName)
require.NoError(err) require.NoError(err)
tagObj, err := gRepo.TagObject(tagRef.Hash()) tagObj, err := gRepo.TagObject(tagRef.Hash())
require.NoError(err) require.NoError(err)
require.Equal(testCase.changelog+"\n", tagObj.Message) require.Equal(testCase.changelog+"\n", tagObj.Message)
// Clean up tags so future test runs succeed
tagRefName := ":refs/tags/" + tagName
err = gRepo.Push(&git.PushOptions{
RemoteName: "origin",
RefSpecs: []config.RefSpec{config.RefSpec(tagRefName)},
Auth: &http.BasicAuth{
Username: "test",
Password: "test",
},
})
require.NoError(err)
} }
} }
......
...@@ -17,3 +17,21 @@ sleep 10 ...@@ -17,3 +17,21 @@ sleep 10
echo "creating test repo..." echo "creating test repo..."
curl -u 'test:test' -XPOST -H 'Content-Type: application/json' -d '{"name":"test"}' http://localhost:3000/api/v1/user/repos curl -u 'test:test' -XPOST -H 'Content-Type: application/json' -d '{"name":"test"}' http://localhost:3000/api/v1/user/repos
echo "creating no_ff_merge repo..."
curl -u 'test:test' -XPOST -H 'Content-Type: application/json' -d '{"name":"no_ff_merge"}' http://localhost:3000/api/v1/user/repos
echo "populating no_ff_merge repo..."
tmpdir=$(mktemp -d 2>/dev/null || mktemp -d -t 'tmpdir')
cd $tmpdir
git init --initial-branch=master
git commit -m "feat: initial commit" --allow-empty
git tag v1.0.0
git switch -C feature
sleep 1
git commit -m "feat: feature" --allow-empty
git switch master
git merge --no-ff feature --no-edit
git push http://test:test@localhost:3000/test/no_ff_merge.git master --tags
cd -
rm -rf $tmpdir
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment