Skip to content

Commit 075c5c8

Browse files
committed
Fixed FilterOutDirs hadnling of broken symlinks
1 parent 8366036 commit 075c5c8

File tree

9 files changed

+46
-18
lines changed

9 files changed

+46
-18
lines changed

list.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (p *PathList) FilterDirs() {
7878
func (p *PathList) FilterOutDirs() {
7979
res := (*p)[:0]
8080
for _, path := range *p {
81-
if path.IsNotDir() {
81+
if !path.IsDir() {
8282
res = append(res, path)
8383
}
8484
}
@@ -96,7 +96,7 @@ func (p *PathList) FilterOutHiddenFiles() {
9696
func (p *PathList) Filter(acceptorFunc func(*Path) bool) {
9797
res := (*p)[:0]
9898
for _, path := range *p {
99-
if acceptorFunc(path) {
99+
if acceptorFunc(path) {
100100
res = append(res, path)
101101
}
102102
}

paths_test.go

+40-16
Original file line numberDiff line numberDiff line change
@@ -284,25 +284,49 @@ func TestFilterDirs(t *testing.T) {
284284
}
285285

286286
func TestFilterOutDirs(t *testing.T) {
287-
testPath := New("testdata", "fileset")
287+
{
288+
testPath := New("testdata", "fileset")
288289

289-
list, err := testPath.ReadDir()
290-
require.NoError(t, err)
291-
require.Len(t, list, 6)
290+
list, err := testPath.ReadDir()
291+
require.NoError(t, err)
292+
require.Len(t, list, 6)
293+
294+
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
295+
pathEqualsTo(t, "testdata/fileset/file", list[1])
296+
pathEqualsTo(t, "testdata/fileset/folder", list[2])
297+
pathEqualsTo(t, "testdata/fileset/symlinktofolder", list[3])
298+
pathEqualsTo(t, "testdata/fileset/test.txt", list[4])
299+
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[5])
300+
301+
list.FilterOutDirs()
302+
require.Len(t, list, 4)
303+
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
304+
pathEqualsTo(t, "testdata/fileset/file", list[1])
305+
pathEqualsTo(t, "testdata/fileset/test.txt", list[2])
306+
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[3])
307+
}
292308

293-
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
294-
pathEqualsTo(t, "testdata/fileset/file", list[1])
295-
pathEqualsTo(t, "testdata/fileset/folder", list[2])
296-
pathEqualsTo(t, "testdata/fileset/symlinktofolder", list[3])
297-
pathEqualsTo(t, "testdata/fileset/test.txt", list[4])
298-
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[5])
309+
{
310+
list, err := New("testdata", "broken_symlink", "dir_1").ReadDirRecursive()
311+
require.NoError(t, err)
299312

300-
list.FilterOutDirs()
301-
require.Len(t, list, 4)
302-
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
303-
pathEqualsTo(t, "testdata/fileset/file", list[1])
304-
pathEqualsTo(t, "testdata/fileset/test.txt", list[2])
305-
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[3])
313+
require.Len(t, list, 7)
314+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/broken_link", list[0])
315+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/file2", list[1])
316+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir", list[2])
317+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir/file1", list[3])
318+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_file", list[4])
319+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir", list[5])
320+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir/file1", list[6])
321+
322+
list.FilterOutDirs()
323+
require.Len(t, list, 5)
324+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/broken_link", list[0])
325+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/file2", list[1])
326+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir/file1", list[2])
327+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_file", list[3])
328+
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir/file1", list[4])
329+
}
306330
}
307331

308332
func TestEquivalentPaths(t *testing.T) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
broken

testdata/broken_symlink/dir_1/file2

Whitespace-only changes.
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
real_dir
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
file2

testdata/broken_symlink/dir_1/real_dir/file1

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../dir1

testdata/loops/regular_4_with_permission_error/dir2/file2

Whitespace-only changes.

0 commit comments

Comments
 (0)