loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request 'fix: repo avatar generating (#6338)' (#6339) from Snoweuph/forgejo:fix/repo-avatar into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6339
Reviewed-by: Gusted <gusted@noreply.codeberg.org>

Gusted 1597e46f 4e820ff7

+37 -3
+12 -2
services/repository/avatar.go
··· 8 8 "fmt" 9 9 "io" 10 10 "strconv" 11 - "strings" 12 11 13 12 "code.gitea.io/gitea/models/db" 14 13 repo_model "code.gitea.io/gitea/models/repo" ··· 107 106 108 107 // generateAvatar generates the avatar from a template repository 109 108 func generateAvatar(ctx context.Context, templateRepo, generateRepo *repo_model.Repository) error { 110 - generateRepo.Avatar = strings.Replace(templateRepo.Avatar, strconv.FormatInt(templateRepo.ID, 10), strconv.FormatInt(generateRepo.ID, 10), 1) 109 + file, err := storage.RepoAvatars.Open(templateRepo.CustomAvatarRelativePath()) 110 + if err != nil { 111 + return err 112 + } 113 + defer file.Close() 114 + 115 + data, err := io.ReadAll(file) 116 + if err != nil { 117 + return err 118 + } 119 + 120 + generateRepo.Avatar = avatar.HashAvatar(generateRepo.ID, data) 111 121 if _, err := storage.Copy(storage.RepoAvatars, generateRepo.CustomAvatarRelativePath(), storage.RepoAvatars, templateRepo.CustomAvatarRelativePath()); err != nil { 112 122 return err 113 123 }
+25 -1
services/repository/avatar_test.go
··· 29 29 30 30 err := UploadAvatar(db.DefaultContext, repo, buff.Bytes()) 31 31 require.NoError(t, err) 32 - assert.Equal(t, avatar.HashAvatar(10, buff.Bytes()), repo.Avatar) 32 + assert.Equal(t, avatar.HashAvatar(repo.ID, buff.Bytes()), repo.Avatar) 33 33 } 34 34 35 35 func TestUploadBigAvatar(t *testing.T) { ··· 62 62 63 63 assert.Equal(t, "", repo.Avatar) 64 64 } 65 + 66 + func TestTemplateGenerateAvatar(t *testing.T) { 67 + // Generate image 68 + myImage := image.NewRGBA(image.Rect(0, 0, 1, 1)) 69 + var buff bytes.Buffer 70 + png.Encode(&buff, myImage) 71 + 72 + require.NoError(t, unittest.PrepareTestDatabase()) 73 + repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 10}) 74 + 75 + // Upload Avatar 76 + err := UploadAvatar(db.DefaultContext, repo, buff.Bytes()) 77 + require.NoError(t, err) 78 + assert.Equal(t, avatar.HashAvatar(repo.ID, buff.Bytes()), repo.Avatar) 79 + 80 + // Generate the Avatar for Another Repo 81 + genRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 11}) 82 + err = generateAvatar(db.DefaultContext, repo, genRepo) 83 + require.NoError(t, err) 84 + assert.Equal(t, avatar.HashAvatar(genRepo.ID, buff.Bytes()), genRepo.Avatar) 85 + 86 + // Make sure The 2 Hashes are not the same 87 + assert.NotEqual(t, repo.Avatar, genRepo.Avatar) 88 + }