code.gitea.io/gitea@v1.19.3/modules/git/parse_gogit_test.go (about)

     1  // Copyright 2018 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  //go:build gogit
     5  
     6  package git
     7  
     8  import (
     9  	"testing"
    10  
    11  	"github.com/go-git/go-git/v5/plumbing/filemode"
    12  	"github.com/go-git/go-git/v5/plumbing/object"
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestParseTreeEntries(t *testing.T) {
    17  	testCases := []struct {
    18  		Input    string
    19  		Expected []*TreeEntry
    20  	}{
    21  		{
    22  			Input:    "",
    23  			Expected: []*TreeEntry{},
    24  		},
    25  		{
    26  			Input: "100644 blob 61ab7345a1a3bbc590068ccae37b8515cfc5843c    1022\texample/file2.txt\n",
    27  			Expected: []*TreeEntry{
    28  				{
    29  					ID: MustIDFromString("61ab7345a1a3bbc590068ccae37b8515cfc5843c"),
    30  					gogitTreeEntry: &object.TreeEntry{
    31  						Hash: MustIDFromString("61ab7345a1a3bbc590068ccae37b8515cfc5843c"),
    32  						Name: "example/file2.txt",
    33  						Mode: filemode.Regular,
    34  					},
    35  					size:  1022,
    36  					sized: true,
    37  				},
    38  			},
    39  		},
    40  		{
    41  			Input: "120000 blob 61ab7345a1a3bbc590068ccae37b8515cfc5843c  234131\t\"example/\\n.txt\"\n" +
    42  				"040000 tree 1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8       -\texample\n",
    43  			Expected: []*TreeEntry{
    44  				{
    45  					ID: MustIDFromString("61ab7345a1a3bbc590068ccae37b8515cfc5843c"),
    46  					gogitTreeEntry: &object.TreeEntry{
    47  						Hash: MustIDFromString("61ab7345a1a3bbc590068ccae37b8515cfc5843c"),
    48  						Name: "example/\n.txt",
    49  						Mode: filemode.Symlink,
    50  					},
    51  					size:  234131,
    52  					sized: true,
    53  				},
    54  				{
    55  					ID:    MustIDFromString("1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8"),
    56  					sized: true,
    57  					gogitTreeEntry: &object.TreeEntry{
    58  						Hash: MustIDFromString("1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8"),
    59  						Name: "example",
    60  						Mode: filemode.Dir,
    61  					},
    62  				},
    63  			},
    64  		},
    65  	}
    66  
    67  	for _, testCase := range testCases {
    68  		entries, err := ParseTreeEntries([]byte(testCase.Input))
    69  		assert.NoError(t, err)
    70  		assert.EqualValues(t, testCase.Expected, entries)
    71  	}
    72  }