2021-02-18 00:32:25 +03:00
// 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.
2021-08-24 19:47:09 +03:00
//go:build !gogit
2021-02-18 00:32:25 +03:00
// +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 037 f27dc9d353ae4fd50f0474b2194c593914e35 4681 README_ZH . md
100644 blob 9846 a94f7e8350a916632929d0fda38c90dd2ca8 429 SECURITY . md
040000 tree 84 b90550547016f73c5dd3f50dea662389e67b6d - 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 )
2021-06-07 08:27:09 +03:00
assert . Len ( t , entries , len ( testCase . Expected ) )
2021-02-18 00:32:25 +03:00
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 )
}
}
}