Skip to content

Commit

Permalink
Fix filepath.Walk misusage in pkg/directory
Browse files Browse the repository at this point in the history
Signed-off-by: Akihiro Suda <[email protected]>
  • Loading branch information
AkihiroSuda committed May 30, 2016
1 parent 29dbcba commit cd53ec5
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
7 changes: 7 additions & 0 deletions pkg/directory/directory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,10 @@ func TestMoveToSubdir(t *testing.T) {
t.Fatalf("Results after migration do not equal list of files: expected: %v, got: %v", filesList, results)
}
}

// Test a non-existing directory
func TestSizeNonExistingDirectory(t *testing.T) {
if _, err := Size("/thisdirectoryshouldnotexist/TestSizeNonExistingDirectory"); err == nil {
t.Fatalf("error is expected")
}
}
11 changes: 10 additions & 1 deletion pkg/directory/directory_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,16 @@ import (
// Size walks a directory tree and returns its total size in bytes.
func Size(dir string) (size int64, err error) {
data := make(map[uint64]struct{})
err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, e error) error {
err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, err error) error {
if err != nil {
// if dir does not exist, Size() returns the error.
// if dir/x disappeared while walking, Size() ignores dir/x.
if os.IsNotExist(err) && d != dir {
return nil
}
return err
}

// Ignore directory sizes
if fileInfo == nil {
return nil
Expand Down
11 changes: 10 additions & 1 deletion pkg/directory/directory_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,16 @@ import (

// Size walks a directory tree and returns its total size in bytes.
func Size(dir string) (size int64, err error) {
err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, e error) error {
err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, err error) error {
if err != nil {
// if dir does not exist, Size() returns the error.
// if dir/x disappeared while walking, Size() ignores dir/x.
if os.IsNotExist(err) && d != dir {
return nil
}
return err
}

// Ignore directory sizes
if fileInfo == nil {
return nil
Expand Down

0 comments on commit cd53ec5

Please sign in to comment.