loading up the forgejo repo on tangled to test page performance
at forgejo 103 lines 2.9 kB view raw
1// Copyright 2021 The Gitea Authors. All rights reserved. 2// SPDX-License-Identifier: MIT 3 4package git 5 6import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11) 12 13func TestParseTreeEntriesLong(t *testing.T) { 14 testCases := []struct { 15 Input string 16 Expected []*TreeEntry 17 }{ 18 { 19 Input: `100644 blob ea0d83c9081af9500ac9f804101b3fd0a5c293af 8218 README.md 20100644 blob 037f27dc9d353ae4fd50f0474b2194c593914e35 4681 README_ZH.md 21100644 blob 9846a94f7e8350a916632929d0fda38c90dd2ca8 429 SECURITY.md 22040000 tree 84b90550547016f73c5dd3f50dea662389e67b6d - assets 23`, 24 Expected: []*TreeEntry{ 25 { 26 ID: MustIDFromString("ea0d83c9081af9500ac9f804101b3fd0a5c293af"), 27 name: "README.md", 28 entryMode: EntryModeBlob, 29 size: 8218, 30 sized: true, 31 }, 32 { 33 ID: MustIDFromString("037f27dc9d353ae4fd50f0474b2194c593914e35"), 34 name: "README_ZH.md", 35 entryMode: EntryModeBlob, 36 size: 4681, 37 sized: true, 38 }, 39 { 40 ID: MustIDFromString("9846a94f7e8350a916632929d0fda38c90dd2ca8"), 41 name: "SECURITY.md", 42 entryMode: EntryModeBlob, 43 size: 429, 44 sized: true, 45 }, 46 { 47 ID: MustIDFromString("84b90550547016f73c5dd3f50dea662389e67b6d"), 48 name: "assets", 49 entryMode: EntryModeTree, 50 sized: true, 51 }, 52 }, 53 }, 54 } 55 for _, testCase := range testCases { 56 entries, err := ParseTreeEntries([]byte(testCase.Input)) 57 require.NoError(t, err) 58 assert.Len(t, entries, len(testCase.Expected)) 59 for i, entry := range entries { 60 assert.Equal(t, testCase.Expected[i], entry) 61 } 62 } 63} 64 65func TestParseTreeEntriesShort(t *testing.T) { 66 testCases := []struct { 67 Input string 68 Expected []*TreeEntry 69 }{ 70 { 71 Input: `100644 blob ea0d83c9081af9500ac9f804101b3fd0a5c293af README.md 72040000 tree 84b90550547016f73c5dd3f50dea662389e67b6d assets 73`, 74 Expected: []*TreeEntry{ 75 { 76 ID: MustIDFromString("ea0d83c9081af9500ac9f804101b3fd0a5c293af"), 77 name: "README.md", 78 entryMode: EntryModeBlob, 79 }, 80 { 81 ID: MustIDFromString("84b90550547016f73c5dd3f50dea662389e67b6d"), 82 name: "assets", 83 entryMode: EntryModeTree, 84 }, 85 }, 86 }, 87 } 88 for _, testCase := range testCases { 89 entries, err := ParseTreeEntries([]byte(testCase.Input)) 90 require.NoError(t, err) 91 assert.Len(t, entries, len(testCase.Expected)) 92 for i, entry := range entries { 93 assert.Equal(t, testCase.Expected[i], entry) 94 } 95 } 96} 97 98func TestParseTreeEntriesInvalid(t *testing.T) { 99 // there was a panic: "runtime error: slice bounds out of range" when the input was invalid: #20315 100 entries, err := ParseTreeEntries([]byte("100644 blob ea0d83c9081af9500ac9f804101b3fd0a5c293af")) 101 require.Error(t, err) 102 assert.Empty(t, entries) 103}