Template
1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo synced 2024-11-24 18:56:11 +01:00
forgejo/models/release_test.go
Harshit Bansal 63bd1b9203 mirror: Delete tags in mirror which are removed for original repo. (#5609)
This bug was being caused by an error in the logic in `release.go`.
Credit to @yasuokav for tracing the root of the issue.

Fixes: #5192.
2018-12-31 18:00:54 -05:00

152 lines
4 KiB
Go

// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
"testing"
"code.gitea.io/git"
"github.com/stretchr/testify/assert"
)
func TestRelease_Create(t *testing.T) {
assert.NoError(t, PrepareTestDatabase())
user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
repoPath := RepoPath(user.Name, repo.Name)
gitRepo, err := git.OpenRepository(repoPath)
assert.NoError(t, err)
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1",
Target: "master",
Title: "v0.1 is released",
Note: "v0.1 is released",
IsDraft: false,
IsPrerelease: false,
IsTag: false,
}, nil))
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1.1",
Target: "65f1bf27bc3bf70f64657658635e66094edbcb4d",
Title: "v0.1.1 is released",
Note: "v0.1.1 is released",
IsDraft: false,
IsPrerelease: false,
IsTag: false,
}, nil))
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1.2",
Target: "65f1bf2",
Title: "v0.1.2 is released",
Note: "v0.1.2 is released",
IsDraft: false,
IsPrerelease: false,
IsTag: false,
}, nil))
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1.3",
Target: "65f1bf2",
Title: "v0.1.3 is released",
Note: "v0.1.3 is released",
IsDraft: true,
IsPrerelease: false,
IsTag: false,
}, nil))
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1.4",
Target: "65f1bf2",
Title: "v0.1.4 is released",
Note: "v0.1.4 is released",
IsDraft: false,
IsPrerelease: true,
IsTag: false,
}, nil))
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.1.5",
Target: "65f1bf2",
Title: "v0.1.5 is released",
Note: "v0.1.5 is released",
IsDraft: false,
IsPrerelease: false,
IsTag: true,
}, nil))
}
func TestRelease_MirrorDelete(t *testing.T) {
assert.NoError(t, PrepareTestDatabase())
user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
repoPath := RepoPath(user.Name, repo.Name)
migrationOptions := MigrateRepoOptions{
Name: "test_mirror",
Description: "Test mirror",
IsPrivate: false,
IsMirror: true,
RemoteAddr: repoPath,
}
mirror, err := MigrateRepository(user, user, migrationOptions)
assert.NoError(t, err)
gitRepo, err := git.OpenRepository(repoPath)
assert.NoError(t, err)
findOptions := FindReleasesOptions{IncludeDrafts: true, IncludeTags: true}
initCount, err := GetReleaseCountByRepoID(mirror.ID, findOptions)
assert.NoError(t, err)
assert.NoError(t, CreateRelease(gitRepo, &Release{
RepoID: repo.ID,
PublisherID: user.ID,
TagName: "v0.2",
Target: "master",
Title: "v0.2 is released",
Note: "v0.2 is released",
IsDraft: false,
IsPrerelease: false,
IsTag: true,
}, nil))
err = mirror.GetMirror()
assert.NoError(t, err)
_, ok := mirror.Mirror.runSync()
assert.True(t, ok)
count, err := GetReleaseCountByRepoID(mirror.ID, findOptions)
assert.EqualValues(t, initCount+1, count)
release, err := GetRelease(repo.ID, "v0.2")
assert.NoError(t, err)
assert.NoError(t, DeleteReleaseByID(release.ID, user, true))
_, ok = mirror.Mirror.runSync()
assert.True(t, ok)
count, err = GetReleaseCountByRepoID(mirror.ID, findOptions)
assert.EqualValues(t, initCount, count)
}