Skip to content

Commit 1a1fe32

Browse files
committed
Fix bug
1 parent e860a36 commit 1a1fe32

File tree

2 files changed

+80
-1
lines changed

2 files changed

+80
-1
lines changed

services/repository/files/tree.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
441441
if dir == "" {
442442
return treeList, nil
443443
}
444+
fields = fields[:len(fields)-1]
444445
listEntry, err = commit.GetTreeEntryByPath(dir)
445446
if err != nil {
446447
return nil, err
@@ -467,7 +468,7 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
467468
parentEntry.Children = append(parentEntry.Children, &TreeEntry{
468469
Name: entry.Name(),
469470
IsFile: entry.Mode() != git.EntryModeTree,
470-
Path: path.Join(treePath, entry.Name()),
471+
Path: path.Join(dir, entry.Name()),
471472
})
472473
}
473474
return treeList, nil

services/repository/files/tree_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,81 @@ func Test_GetTreeList(t *testing.T) {
9898
assert.True(t, treeList[1].Children[0].IsFile)
9999
assert.Empty(t, treeList[1].Children[0].Children)
100100
}
101+
102+
func Test_GetTreeInformation(t *testing.T) {
103+
unittest.PrepareTestEnv(t)
104+
ctx1, _ := contexttest.MockContext(t, "user2/repo1")
105+
contexttest.LoadRepo(t, ctx1, 1)
106+
contexttest.LoadRepoCommit(t, ctx1)
107+
contexttest.LoadUser(t, ctx1, 2)
108+
contexttest.LoadGitRepo(t, ctx1)
109+
defer ctx1.Repo.GitRepo.Close()
110+
111+
refName := git.RefNameFromBranch(ctx1.Repo.Repository.DefaultBranch)
112+
113+
treeList, err := GetTreeInformation(ctx1, ctx1.Repo.Repository, "", refName)
114+
assert.NoError(t, err)
115+
assert.Len(t, treeList, 1)
116+
assert.EqualValues(t, "README.md", treeList[0].Name)
117+
assert.EqualValues(t, "README.md", treeList[0].Path)
118+
assert.True(t, treeList[0].IsFile)
119+
assert.Empty(t, treeList[0].Children)
120+
121+
ctx2, _ := contexttest.MockContext(t, "org3/repo3")
122+
contexttest.LoadRepo(t, ctx2, 3)
123+
contexttest.LoadRepoCommit(t, ctx2)
124+
contexttest.LoadUser(t, ctx2, 2)
125+
contexttest.LoadGitRepo(t, ctx2)
126+
defer ctx2.Repo.GitRepo.Close()
127+
128+
refName = git.RefNameFromBranch(ctx2.Repo.Repository.DefaultBranch)
129+
130+
treeList, err = GetTreeInformation(ctx2, ctx2.Repo.Repository, "", refName)
131+
assert.NoError(t, err)
132+
assert.Len(t, treeList, 2)
133+
assert.EqualValues(t, "README.md", treeList[0].Name)
134+
assert.EqualValues(t, "README.md", treeList[0].Path)
135+
assert.True(t, treeList[0].IsFile)
136+
assert.Empty(t, treeList[0].Children)
137+
138+
assert.EqualValues(t, "doc", treeList[1].Name)
139+
assert.EqualValues(t, "doc", treeList[1].Path)
140+
assert.False(t, treeList[1].IsFile)
141+
assert.Len(t, treeList[1].Children, 0)
142+
143+
treeList, err = GetTreeInformation(ctx2, ctx2.Repo.Repository, "doc", refName)
144+
assert.NoError(t, err)
145+
assert.Len(t, treeList, 2)
146+
assert.EqualValues(t, "README.md", treeList[0].Name)
147+
assert.EqualValues(t, "README.md", treeList[0].Path)
148+
assert.True(t, treeList[0].IsFile)
149+
assert.Empty(t, treeList[0].Children)
150+
151+
assert.EqualValues(t, "doc", treeList[1].Name)
152+
assert.EqualValues(t, "doc", treeList[1].Path)
153+
assert.False(t, treeList[1].IsFile)
154+
assert.Len(t, treeList[1].Children, 1)
155+
156+
assert.EqualValues(t, "doc.md", treeList[1].Children[0].Name)
157+
assert.EqualValues(t, "doc/doc.md", treeList[1].Children[0].Path)
158+
assert.True(t, treeList[1].Children[0].IsFile)
159+
assert.Empty(t, treeList[1].Children[0].Children)
160+
161+
treeList, err = GetTreeInformation(ctx2, ctx2.Repo.Repository, "doc/doc.md", refName)
162+
assert.NoError(t, err)
163+
assert.Len(t, treeList, 2)
164+
assert.EqualValues(t, "README.md", treeList[0].Name)
165+
assert.EqualValues(t, "README.md", treeList[0].Path)
166+
assert.True(t, treeList[0].IsFile)
167+
assert.Empty(t, treeList[0].Children)
168+
169+
assert.EqualValues(t, "doc", treeList[1].Name)
170+
assert.EqualValues(t, "doc", treeList[1].Path)
171+
assert.False(t, treeList[1].IsFile)
172+
assert.Len(t, treeList[1].Children, 1)
173+
174+
assert.EqualValues(t, "doc.md", treeList[1].Children[0].Name)
175+
assert.EqualValues(t, "doc/doc.md", treeList[1].Children[0].Path)
176+
assert.True(t, treeList[1].Children[0].IsFile)
177+
assert.Empty(t, treeList[1].Children[0].Children)
178+
}

0 commit comments

Comments
 (0)