loading up the forgejo repo on tangled to test page performance
at forgejo 7.3 kB view raw
1// Copyright 2023 The Gitea Authors. All rights reserved. 2// SPDX-License-Identifier: MIT 3 4package git 5 6import ( 7 "path/filepath" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13) 14 15func TestCommitsCountSha256(t *testing.T) { 16 skipIfSHA256NotSupported(t) 17 18 bareRepo1Path := filepath.Join(testReposDir, "repo1_bare_sha256") 19 20 commitsCount, err := CommitsCount(DefaultContext, 21 CommitsCountOptions{ 22 RepoPath: bareRepo1Path, 23 Revision: []string{"f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc"}, 24 }) 25 26 require.NoError(t, err) 27 assert.Equal(t, int64(3), commitsCount) 28} 29 30func TestCommitsCountWithoutBaseSha256(t *testing.T) { 31 skipIfSHA256NotSupported(t) 32 33 bareRepo1Path := filepath.Join(testReposDir, "repo1_bare_sha256") 34 35 commitsCount, err := CommitsCount(DefaultContext, 36 CommitsCountOptions{ 37 RepoPath: bareRepo1Path, 38 Not: "main", 39 Revision: []string{"branch1"}, 40 }) 41 42 require.NoError(t, err) 43 assert.Equal(t, int64(2), commitsCount) 44} 45 46func TestGetFullCommitIDSha256(t *testing.T) { 47 skipIfSHA256NotSupported(t) 48 49 bareRepo1Path := filepath.Join(testReposDir, "repo1_bare_sha256") 50 51 id, err := GetFullCommitID(DefaultContext, bareRepo1Path, "f004f4") 52 require.NoError(t, err) 53 assert.Equal(t, "f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc", id) 54} 55 56func TestGetFullCommitIDErrorSha256(t *testing.T) { 57 skipIfSHA256NotSupported(t) 58 59 bareRepo1Path := filepath.Join(testReposDir, "repo1_bare_sha256") 60 61 id, err := GetFullCommitID(DefaultContext, bareRepo1Path, "unknown") 62 assert.Empty(t, id) 63 if assert.Error(t, err) { 64 assert.EqualError(t, err, "object does not exist [id: unknown, rel_path: ]") 65 } 66} 67 68func TestCommitFromReaderSha256(t *testing.T) { 69 skipIfSHA256NotSupported(t) 70 71 commitString := `9433b2a62b964c17a4485ae180f45f595d3e69d31b786087775e28c6b6399df0 commit 1114 72tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e 73parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8 74author Adam Majer <amajer@suse.de> 1698676906 +0100 75committer Adam Majer <amajer@suse.de> 1698676906 +0100 76gpgsig-sha256 -----BEGIN PGP SIGNATURE----- 77` + " " + ` 78 iQIrBAABCgAtFiEES+fB08xlgTrzSdQvhkUIsBsmec8FAmU/wKoPHGFtYWplckBz 79 dXNlLmRlAAoJEIZFCLAbJnnP4s4PQIJATa++WPzR6/H4etT7bsOGoMyguEJYyWOd 80 aTybplzT7QAL7h2to0QszGabtzMJPIA39xSFZNYNN30voK5YyyYibXluPKgjemfK 81 WNXwF+gkwgZI38gSvKf+vlqI+EYyIFe19wOhiju0m8SIlB5NEPiWHa17q2mqmqqx 82 1FWa2JdqLPYjAtSLFXeSZegrY5V1FxdemyMUONkg8YO9OSIMZiE0GsnnOXQ3xcT4 83 JTCnmlUxIKw689UiEY80JopUIq+Wl7+qq9507IYYSUCyB6JazL42AKMzVCbD+qBP 84 oOzh/hafYgk9H9qCQXaLbmvs17zXRpicig1bAzqgAy1FDelvpERyRTydEajSLIG6 85 U1cRCkgXCZ0NfsYNPPmBa8b3+rnstypXYTbyMwTln7FfUAaGo6o9JYiPMkzxlmsy 86 zfp/tcaY8+LlBL9aOJjtv+a0p+HrpCGd6CCa4ARfphTLq8QRSSh8uzlB9N+6HnRI 87 VAEUo6ecdDxSpyt2naeg9pKus/BRi7P6g4B1hkk/zZstUX/QP4IQuAJbXjkvsC+X 88 HKRr3NlRM/DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN/W0ayrlZjGF1cbR 89 8NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6 90 =xybZ 91 -----END PGP SIGNATURE----- 92 93signed commit` 94 95 sha := &Sha256Hash{ 96 0x94, 0x33, 0xb2, 0xa6, 0x2b, 0x96, 0x4c, 0x17, 0xa4, 0x48, 0x5a, 0xe1, 0x80, 0xf4, 0x5f, 0x59, 97 0x5d, 0x3e, 0x69, 0xd3, 0x1b, 0x78, 0x60, 0x87, 0x77, 0x5e, 0x28, 0xc6, 0xb6, 0x39, 0x9d, 0xf0, 98 } 99 gitRepo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "repo1_bare_sha256")) 100 require.NoError(t, err) 101 assert.NotNil(t, gitRepo) 102 defer gitRepo.Close() 103 104 commitFromReader, err := CommitFromReader(gitRepo, sha, strings.NewReader(commitString)) 105 require.NoError(t, err) 106 if !assert.NotNil(t, commitFromReader) { 107 return 108 } 109 assert.EqualValues(t, sha, commitFromReader.ID) 110 assert.Equal(t, `-----BEGIN PGP SIGNATURE----- 111 112iQIrBAABCgAtFiEES+fB08xlgTrzSdQvhkUIsBsmec8FAmU/wKoPHGFtYWplckBz 113dXNlLmRlAAoJEIZFCLAbJnnP4s4PQIJATa++WPzR6/H4etT7bsOGoMyguEJYyWOd 114aTybplzT7QAL7h2to0QszGabtzMJPIA39xSFZNYNN30voK5YyyYibXluPKgjemfK 115WNXwF+gkwgZI38gSvKf+vlqI+EYyIFe19wOhiju0m8SIlB5NEPiWHa17q2mqmqqx 1161FWa2JdqLPYjAtSLFXeSZegrY5V1FxdemyMUONkg8YO9OSIMZiE0GsnnOXQ3xcT4 117JTCnmlUxIKw689UiEY80JopUIq+Wl7+qq9507IYYSUCyB6JazL42AKMzVCbD+qBP 118oOzh/hafYgk9H9qCQXaLbmvs17zXRpicig1bAzqgAy1FDelvpERyRTydEajSLIG6 119U1cRCkgXCZ0NfsYNPPmBa8b3+rnstypXYTbyMwTln7FfUAaGo6o9JYiPMkzxlmsy 120zfp/tcaY8+LlBL9aOJjtv+a0p+HrpCGd6CCa4ARfphTLq8QRSSh8uzlB9N+6HnRI 121VAEUo6ecdDxSpyt2naeg9pKus/BRi7P6g4B1hkk/zZstUX/QP4IQuAJbXjkvsC+X 122HKRr3NlRM/DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN/W0ayrlZjGF1cbR 1238NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6 124=xybZ 125-----END PGP SIGNATURE----- 126`, commitFromReader.Signature.Signature) 127 assert.Equal(t, `tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e 128parent 26e9ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8 129author Adam Majer <amajer@suse.de> 1698676906 +0100 130committer Adam Majer <amajer@suse.de> 1698676906 +0100 131 132signed commit`, commitFromReader.Signature.Payload) 133 assert.Equal(t, "Adam Majer <amajer@suse.de>", commitFromReader.Author.String()) 134 135 commitFromReader2, err := CommitFromReader(gitRepo, sha, strings.NewReader(commitString+"\n\n")) 136 require.NoError(t, err) 137 commitFromReader.CommitMessage += "\n\n" 138 commitFromReader.Signature.Payload += "\n\n" 139 assert.Equal(t, commitFromReader, commitFromReader2) 140} 141 142func TestHasPreviousCommitSha256(t *testing.T) { 143 skipIfSHA256NotSupported(t) 144 145 bareRepo1Path := filepath.Join(testReposDir, "repo1_bare_sha256") 146 147 repo, err := openRepositoryWithDefaultContext(bareRepo1Path) 148 require.NoError(t, err) 149 defer repo.Close() 150 151 commit, err := repo.GetCommit("f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc") 152 require.NoError(t, err) 153 154 objectFormat, err := repo.GetObjectFormat() 155 require.NoError(t, err) 156 157 parentSHA := MustIDFromString("b0ec7af4547047f12d5093e37ef8f1b3b5415ed8ee17894d43a34d7d34212e9c") 158 notParentSHA := MustIDFromString("42e334efd04cd36eea6da0599913333c26116e1a537ca76e5b6e4af4dda00236") 159 assert.Equal(t, parentSHA.Type(), objectFormat) 160 assert.Equal(t, "sha256", objectFormat.Name()) 161 162 haz, err := commit.HasPreviousCommit(parentSHA) 163 require.NoError(t, err) 164 assert.True(t, haz) 165 166 hazNot, err := commit.HasPreviousCommit(notParentSHA) 167 require.NoError(t, err) 168 assert.False(t, hazNot) 169 170 selfNot, err := commit.HasPreviousCommit(commit.ID) 171 require.NoError(t, err) 172 assert.False(t, selfNot) 173} 174 175func TestGetCommitFileStatusMergesSha256(t *testing.T) { 176 skipIfSHA256NotSupported(t) 177 178 bareRepo1Path := filepath.Join(testReposDir, "repo6_merge_sha256") 179 180 commitFileStatus, err := GetCommitFileStatus(DefaultContext, bareRepo1Path, "d2e5609f630dd8db500f5298d05d16def282412e3e66ed68cc7d0833b29129a1") 181 require.NoError(t, err) 182 183 expected := CommitFileStatus{ 184 []string{ 185 "add_file.txt", 186 }, 187 []string{}, 188 []string{ 189 "to_modify.txt", 190 }, 191 } 192 193 assert.Equal(t, expected.Added, commitFileStatus.Added) 194 assert.Equal(t, expected.Removed, commitFileStatus.Removed) 195 assert.Equal(t, expected.Modified, commitFileStatus.Modified) 196 197 expected = CommitFileStatus{ 198 []string{}, 199 []string{ 200 "to_remove.txt", 201 }, 202 []string{}, 203 } 204 205 commitFileStatus, err = GetCommitFileStatus(DefaultContext, bareRepo1Path, "da1ded40dc8e5b7c564171f4bf2fc8370487decfb1cb6a99ef28f3ed73d09172") 206 require.NoError(t, err) 207 208 assert.Equal(t, expected.Added, commitFileStatus.Added) 209 assert.Equal(t, expected.Removed, commitFileStatus.Removed) 210 assert.Equal(t, expected.Modified, commitFileStatus.Modified) 211}