2019-03-27 12:33:00 +03:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-03-27 12:33:00 +03:00
2021-08-24 19:47:09 +03:00
//go:build gogit
2020-12-17 17:00:47 +03:00
2019-03-27 12:33:00 +03:00
package git
import (
2023-12-14 00:02:00 +03:00
"fmt"
2019-03-27 12:33:00 +03:00
"testing"
2023-12-14 00:02:00 +03:00
"github.com/go-git/go-git/v5/plumbing"
2020-03-17 19:19:58 +03:00
"github.com/go-git/go-git/v5/plumbing/filemode"
"github.com/go-git/go-git/v5/plumbing/object"
2019-03-27 12:33:00 +03:00
"github.com/stretchr/testify/assert"
)
func TestParseTreeEntries ( t * testing . T ) {
testCases := [ ] struct {
Input string
Expected [ ] * TreeEntry
} {
{
Input : "" ,
Expected : [ ] * TreeEntry { } ,
} ,
{
2021-02-18 00:32:25 +03:00
Input : "100644 blob 61ab7345a1a3bbc590068ccae37b8515cfc5843c 1022\texample/file2.txt\n" ,
2019-03-27 12:33:00 +03:00
Expected : [ ] * TreeEntry {
{
2023-12-14 00:02:00 +03:00
ID : ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "61ab7345a1a3bbc590068ccae37b8515cfc5843c" ) ,
2019-04-19 15:17:27 +03:00
gogitTreeEntry : & object . TreeEntry {
2023-12-14 00:02:00 +03:00
Hash : plumbing . Hash ( ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "61ab7345a1a3bbc590068ccae37b8515cfc5843c" ) . RawValue ( ) ) ,
2019-04-19 15:17:27 +03:00
Name : "example/file2.txt" ,
Mode : filemode . Regular ,
} ,
2021-02-18 00:32:25 +03:00
size : 1022 ,
sized : true ,
2019-03-27 12:33:00 +03:00
} ,
} ,
} ,
{
2021-02-18 00:32:25 +03:00
Input : "120000 blob 61ab7345a1a3bbc590068ccae37b8515cfc5843c 234131\t\"example/\\n.txt\"\n" +
"040000 tree 1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8 -\texample\n" ,
2019-03-27 12:33:00 +03:00
Expected : [ ] * TreeEntry {
{
2023-12-14 00:02:00 +03:00
ID : ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "61ab7345a1a3bbc590068ccae37b8515cfc5843c" ) ,
2019-04-19 15:17:27 +03:00
gogitTreeEntry : & object . TreeEntry {
2023-12-14 00:02:00 +03:00
Hash : plumbing . Hash ( ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "61ab7345a1a3bbc590068ccae37b8515cfc5843c" ) . RawValue ( ) ) ,
2019-04-19 15:17:27 +03:00
Name : "example/\n.txt" ,
Mode : filemode . Symlink ,
} ,
2021-02-18 00:32:25 +03:00
size : 234131 ,
sized : true ,
2019-03-27 12:33:00 +03:00
} ,
{
2023-12-14 00:02:00 +03:00
ID : ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8" ) ,
2021-02-18 00:32:25 +03:00
sized : true ,
2019-04-19 15:17:27 +03:00
gogitTreeEntry : & object . TreeEntry {
2023-12-14 00:02:00 +03:00
Hash : plumbing . Hash ( ObjectFormatFromID ( Sha1 ) . MustIDFromString ( "1d01fb729fb0db5881daaa6030f9f2d3cd3d5ae8" ) . RawValue ( ) ) ,
2019-04-19 15:17:27 +03:00
Name : "example" ,
Mode : filemode . Dir ,
} ,
2019-03-27 12:33:00 +03:00
} ,
} ,
} ,
}
for _ , testCase := range testCases {
2023-12-14 00:02:00 +03:00
entries , err := ParseTreeEntries ( ObjectFormatFromID ( Sha1 ) , [ ] byte ( testCase . Input ) )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2023-12-14 00:02:00 +03:00
if len ( entries ) > 1 {
fmt . Println ( testCase . Expected [ 0 ] . ID )
fmt . Println ( entries [ 0 ] . ID )
}
2019-03-27 12:33:00 +03:00
assert . EqualValues ( t , testCase . Expected , entries )
}
}