Skip to content

Commit

Permalink
Return nil in CopyOnWriteFs.MkdirAll when directory exists
Browse files Browse the repository at this point in the history
Fixes #191
  • Loading branch information
bep committed Dec 17, 2018
1 parent 5e9f8ec commit a5d6946
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
3 changes: 2 additions & 1 deletion copyOnWriteFs.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,8 @@ func (u *CopyOnWriteFs) MkdirAll(name string, perm os.FileMode) error {
return u.layer.MkdirAll(name, perm)
}
if dir {
return ErrFileExists
// This is in line with how os.MkdirAll behaves.
return nil
}
return u.layer.MkdirAll(name, perm)
}
Expand Down
11 changes: 5 additions & 6 deletions copyOnWriteFs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,12 @@ func TestCopyOnWrite(t *testing.T) {
t.Errorf("Mkdir: Got %q for %T", err, fs)
}

// https://github.com/spf13/afero/issues/191
if _, ok := fs.(*OsFs); !ok {
err = fs.MkdirAll(dir, 0744)
if err == nil || !os.IsExist(err) {
t.Errorf("MkdirAll: Got %q for %T", err, fs)
}
// MkdirAll does not return an error when the directory already exists
err = fs.MkdirAll(dir, 0744)
if err != nil {
t.Errorf("MkdirAll: Got %q for %T", err, fs)
}

}
}

Expand Down

0 comments on commit a5d6946

Please sign in to comment.