summaryrefslogtreecommitdiffstats
path: root/modules/git/parse_nogogit_test.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-02-17 21:32:25 +0000
committerGitHub <noreply@github.com>2021-02-17 22:32:25 +0100
commitae7e6cd474747dce1f65c0b1c6e1d6b09ab0bccb (patch)
tree669743542988c694b242f92d512bb219eb300635 /modules/git/parse_nogogit_test.go
parent7ba158183a34d71b3989512c059a01d35c4c4673 (diff)
downloadgitea-ae7e6cd474747dce1f65c0b1c6e1d6b09ab0bccb.tar.gz
gitea-ae7e6cd474747dce1f65c0b1c6e1d6b09ab0bccb.zip
Reduce calls to git cat-file -s (#14682)
* Reduce calls to git cat-file -s There are multiple places where there are repeated calls to git cat-file -s due to the blobs not being created with their size. Through judicious use of git ls-tree -l and slight adjustments to the indexer code we can avoid a lot of these calls. * simplify by always expecting the long format * Also always set the sized field and tell the indexer the update is sized
Diffstat (limited to 'modules/git/parse_nogogit_test.go')
-rw-r--r--modules/git/parse_nogogit_test.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/modules/git/parse_nogogit_test.go b/modules/git/parse_nogogit_test.go
new file mode 100644
index 0000000000..a9e7dcc7f8
--- /dev/null
+++ b/modules/git/parse_nogogit_test.go
@@ -0,0 +1,70 @@
+// Copyright 2021 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.
+
+// +build !gogit
+
+package git
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestParseTreeEntries(t *testing.T) {
+
+ testCases := []struct {
+ Input string
+ Expected []*TreeEntry
+ }{
+ {
+ Input: `100644 blob ea0d83c9081af9500ac9f804101b3fd0a5c293af 8218 README.md
+100644 blob 037f27dc9d353ae4fd50f0474b2194c593914e35 4681 README_ZH.md
+100644 blob 9846a94f7e8350a916632929d0fda38c90dd2ca8 429 SECURITY.md
+040000 tree 84b90550547016f73c5dd3f50dea662389e67b6d - assets
+`,
+ Expected: []*TreeEntry{
+ {
+ ID: MustIDFromString("ea0d83c9081af9500ac9f804101b3fd0a5c293af"),
+ name: "README.md",
+ entryMode: EntryModeBlob,
+ size: 8218,
+ sized: true,
+ },
+ {
+ ID: MustIDFromString("037f27dc9d353ae4fd50f0474b2194c593914e35"),
+ name: "README_ZH.md",
+ entryMode: EntryModeBlob,
+ size: 4681,
+ sized: true,
+ },
+ {
+ ID: MustIDFromString("9846a94f7e8350a916632929d0fda38c90dd2ca8"),
+ name: "SECURITY.md",
+ entryMode: EntryModeBlob,
+ size: 429,
+ sized: true,
+ },
+ {
+ ID: MustIDFromString("84b90550547016f73c5dd3f50dea662389e67b6d"),
+ name: "assets",
+ entryMode: EntryModeTree,
+ sized: true,
+ },
+ },
+ },
+ }
+ for _, testCase := range testCases {
+ entries, err := ParseTreeEntries([]byte(testCase.Input))
+ assert.NoError(t, err)
+ assert.EqualValues(t, len(testCase.Expected), len(entries))
+ for i, entry := range entries {
+ assert.EqualValues(t, testCase.Expected[i].ID, entry.ID)
+ assert.EqualValues(t, testCase.Expected[i].name, entry.name)
+ assert.EqualValues(t, testCase.Expected[i].entryMode, entry.entryMode)
+ assert.EqualValues(t, testCase.Expected[i].sized, entry.sized)
+ assert.EqualValues(t, testCase.Expected[i].size, entry.size)
+ }
+ }
+}