mirror of
https://github.com/go-gitea/gitea
synced 2025-02-22 19:11:26 +01:00
add tests
This commit is contained in:
parent
c387ea4403
commit
ec05be0c5c
@ -668,3 +668,191 @@ func TestNoCrashes(t *testing.T) {
|
||||
ParsePatch(db.DefaultContext, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(testcase.gitdiff), "")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildTree(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input []*DiffFile
|
||||
expected []*FileTreeNode
|
||||
}{
|
||||
{
|
||||
name: "Test case 1",
|
||||
input: []*DiffFile{
|
||||
{Name: "2/2", NameHash: "23b3d60a69a4b1bacb1a3b9ced0a8ac609efbf61"},
|
||||
{Name: "test1", NameHash: "b444ac06613fc8d63795be9ad0beaf55011936ac"},
|
||||
},
|
||||
expected: []*FileTreeNode{
|
||||
{
|
||||
Name: "2",
|
||||
IsFile: false,
|
||||
Children: []*FileTreeNode{
|
||||
{
|
||||
Name: "2",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "2/2",
|
||||
NameHash: "23b3d60a69a4b1bacb1a3b9ced0a8ac609efbf61",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "test1",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "test1",
|
||||
NameHash: "b444ac06613fc8d63795be9ad0beaf55011936ac",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Test case 2",
|
||||
input: []*DiffFile{
|
||||
{Name: "a/b/c", NameHash: "hash1"},
|
||||
{Name: "a/b/d", NameHash: "hash2"},
|
||||
{Name: "a/e", NameHash: "hash3"},
|
||||
{Name: "f", NameHash: "hash4"},
|
||||
},
|
||||
expected: []*FileTreeNode{
|
||||
{
|
||||
Name: "a",
|
||||
IsFile: false,
|
||||
Children: []*FileTreeNode{
|
||||
{
|
||||
Name: "b",
|
||||
IsFile: false,
|
||||
Children: []*FileTreeNode{
|
||||
{
|
||||
Name: "c",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "a/b/c",
|
||||
NameHash: "hash1",
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "d",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "a/b/d",
|
||||
NameHash: "hash2",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "e",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "a/e",
|
||||
NameHash: "hash3",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "f",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "f",
|
||||
NameHash: "hash4",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Test case 3",
|
||||
input: []*DiffFile{
|
||||
{Name: "dir1/file1", NameHash: "hash1"},
|
||||
{Name: "dir1/file2", NameHash: "hash2"},
|
||||
{Name: "dir2/file3", NameHash: "hash3"},
|
||||
{Name: "dir2/file4", NameHash: "hash4"},
|
||||
{Name: "file5", NameHash: "hash5"},
|
||||
},
|
||||
expected: []*FileTreeNode{
|
||||
{
|
||||
Name: "dir1",
|
||||
IsFile: false,
|
||||
Children: []*FileTreeNode{
|
||||
{
|
||||
Name: "file1",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "dir1/file1",
|
||||
NameHash: "hash1",
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "file2",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "dir1/file2",
|
||||
NameHash: "hash2",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "dir2",
|
||||
IsFile: false,
|
||||
Children: []*FileTreeNode{
|
||||
{
|
||||
Name: "file3",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "dir2/file3",
|
||||
NameHash: "hash3",
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "file4",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "dir2/file4",
|
||||
NameHash: "hash4",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "file5",
|
||||
IsFile: true,
|
||||
File: &DiffFile{
|
||||
Name: "file5",
|
||||
NameHash: "hash5",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := buildTree(tt.input)
|
||||
if !compareFileTreeNodes(result, tt.expected) {
|
||||
t.Errorf("Expected %v, but got %v", tt.expected, result)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func compareFileTreeNodes(a, b []*FileTreeNode) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
}
|
||||
for i := range a {
|
||||
if a[i].Name != b[i].Name || a[i].IsFile != b[i].IsFile {
|
||||
return false
|
||||
}
|
||||
if a[i].IsFile && b[i].IsFile {
|
||||
if a[i].File.Name != b[i].File.Name || a[i].File.NameHash != b[i].File.NameHash {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if !compareFileTreeNodes(a[i].Children, b[i].Children) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user