mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 14:13:52 +03:00
Fix IsObjectExist
with gogit (#31790) (tests only)
Fix #31271. When gogit is enabled, `IsObjectExist` calls `repo.gogitRepo.ResolveRevision`, which is not correct. It's for checking references not objects, it could work with commit hash since it's both a valid reference and a commit object, but it doesn't work with blob objects. So it causes #31271 because it reports that all blob objects do not exist. (cherry picked from commit f4d3120f9d1de6a260a5e625b3ffa6b35a069e9b) Conflicts: trivial resolution because go-git support was dropped https://codeberg.org/forgejo/forgejo/pulls/4941
This commit is contained in:
parent
a627b885c7
commit
83565de2c0
2 changed files with 101 additions and 1 deletions
|
@ -95,3 +95,103 @@ func BenchmarkGetRefsBySha(b *testing.B) {
|
||||||
_, _ = bareRepo5.GetRefsBySha("c83380d7056593c51a699d12b9c00627bd5743e9", "")
|
_, _ = bareRepo5.GetRefsBySha("c83380d7056593c51a699d12b9c00627bd5743e9", "")
|
||||||
_, _ = bareRepo5.GetRefsBySha("58a4bcc53ac13e7ff76127e0fb518b5262bf09af", "")
|
_, _ = bareRepo5.GetRefsBySha("58a4bcc53ac13e7ff76127e0fb518b5262bf09af", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRepository_IsObjectExist(t *testing.T) {
|
||||||
|
repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo1_bare"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer repo.Close()
|
||||||
|
|
||||||
|
supportShortHash := true
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
arg string
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "empty",
|
||||||
|
arg: "",
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "branch",
|
||||||
|
arg: "master",
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "commit hash",
|
||||||
|
arg: "ce064814f4a0d337b333e646ece456cd39fab612",
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "short commit hash",
|
||||||
|
arg: "ce06481",
|
||||||
|
want: supportShortHash,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "blob hash",
|
||||||
|
arg: "153f451b9ee7fa1da317ab17a127e9fd9d384310",
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "short blob hash",
|
||||||
|
arg: "153f451",
|
||||||
|
want: supportShortHash,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
assert.Equal(t, tt.want, repo.IsObjectExist(tt.arg))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRepository_IsReferenceExist(t *testing.T) {
|
||||||
|
repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo1_bare"))
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer repo.Close()
|
||||||
|
|
||||||
|
supportBlobHash := true
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
arg string
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "empty",
|
||||||
|
arg: "",
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "branch",
|
||||||
|
arg: "master",
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "commit hash",
|
||||||
|
arg: "ce064814f4a0d337b333e646ece456cd39fab612",
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "short commit hash",
|
||||||
|
arg: "ce06481",
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "blob hash",
|
||||||
|
arg: "153f451b9ee7fa1da317ab17a127e9fd9d384310",
|
||||||
|
want: supportBlobHash,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "short blob hash",
|
||||||
|
arg: "153f451",
|
||||||
|
want: supportBlobHash,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
assert.Equal(t, tt.want, repo.IsReferenceExist(tt.arg))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1197,7 +1197,7 @@ func hashCurrentPatternProcessor(ctx *RenderContext, node *html.Node) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
exist = ctx.GitRepo.IsObjectExist(hash)
|
exist = ctx.GitRepo.IsReferenceExist(hash)
|
||||||
ctx.ShaExistCache[hash] = exist
|
ctx.ShaExistCache[hash] = exist
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue