Skip to content

Commit

Permalink
Fixed FilterOutDirs hadnling of broken symlinks
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Jan 15, 2024
1 parent 8366036 commit 075c5c8
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 18 deletions.
4 changes: 2 additions & 2 deletions list.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func (p *PathList) FilterDirs() {
func (p *PathList) FilterOutDirs() {
res := (*p)[:0]
for _, path := range *p {
if path.IsNotDir() {
if !path.IsDir() {
res = append(res, path)
}
}
Expand All @@ -96,7 +96,7 @@ func (p *PathList) FilterOutHiddenFiles() {
func (p *PathList) Filter(acceptorFunc func(*Path) bool) {
res := (*p)[:0]
for _, path := range *p {
if acceptorFunc(path) {
if acceptorFunc(path) {
res = append(res, path)
}
}
Expand Down
56 changes: 40 additions & 16 deletions paths_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -284,25 +284,49 @@ func TestFilterDirs(t *testing.T) {
}

func TestFilterOutDirs(t *testing.T) {
testPath := New("testdata", "fileset")
{
testPath := New("testdata", "fileset")

list, err := testPath.ReadDir()
require.NoError(t, err)
require.Len(t, list, 6)
list, err := testPath.ReadDir()
require.NoError(t, err)
require.Len(t, list, 6)

pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
pathEqualsTo(t, "testdata/fileset/file", list[1])
pathEqualsTo(t, "testdata/fileset/folder", list[2])
pathEqualsTo(t, "testdata/fileset/symlinktofolder", list[3])
pathEqualsTo(t, "testdata/fileset/test.txt", list[4])
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[5])

list.FilterOutDirs()
require.Len(t, list, 4)
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
pathEqualsTo(t, "testdata/fileset/file", list[1])
pathEqualsTo(t, "testdata/fileset/test.txt", list[2])
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[3])
}

pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
pathEqualsTo(t, "testdata/fileset/file", list[1])
pathEqualsTo(t, "testdata/fileset/folder", list[2])
pathEqualsTo(t, "testdata/fileset/symlinktofolder", list[3])
pathEqualsTo(t, "testdata/fileset/test.txt", list[4])
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[5])
{
list, err := New("testdata", "broken_symlink", "dir_1").ReadDirRecursive()
require.NoError(t, err)

list.FilterOutDirs()
require.Len(t, list, 4)
pathEqualsTo(t, "testdata/fileset/anotherFile", list[0])
pathEqualsTo(t, "testdata/fileset/file", list[1])
pathEqualsTo(t, "testdata/fileset/test.txt", list[2])
pathEqualsTo(t, "testdata/fileset/test.txt.gz", list[3])
require.Len(t, list, 7)
pathEqualsTo(t, "testdata/broken_symlink/dir_1/broken_link", list[0])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/file2", list[1])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir", list[2])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir/file1", list[3])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_file", list[4])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir", list[5])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir/file1", list[6])

list.FilterOutDirs()
require.Len(t, list, 5)
pathEqualsTo(t, "testdata/broken_symlink/dir_1/broken_link", list[0])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/file2", list[1])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_dir/file1", list[2])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/linked_file", list[3])
pathEqualsTo(t, "testdata/broken_symlink/dir_1/real_dir/file1", list[4])
}
}

func TestEquivalentPaths(t *testing.T) {
Expand Down
1 change: 1 addition & 0 deletions testdata/broken_symlink/dir_1/broken_link
Empty file.
1 change: 1 addition & 0 deletions testdata/broken_symlink/dir_1/linked_dir
1 change: 1 addition & 0 deletions testdata/broken_symlink/dir_1/linked_file
Empty file.
1 change: 1 addition & 0 deletions testdata/loops/regular_4_with_permission_error/dir2/dir1
Empty file.

0 comments on commit 075c5c8

Please sign in to comment.