webdav: test that Dir and memFS semantics agree.
Fix Dir.OpenFile to not return a nil *os.File (a concrete type) when it
should return a nil webdav.File (an interface type).
Fix memFS.RemoveAll to return nil error instead of os.ErrNotExist when
removing a non-existant file, matching os.RemoveAll's documented
semantics.
Change-Id: I84dfb404aca30e084cd46d6bdc94655aab718bc0
Reviewed-on: https://go-review.googlesource.com/2932
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/webdav/file.go b/webdav/file.go
index 782f03d..006bdcd 100644
--- a/webdav/file.go
+++ b/webdav/file.go
@@ -69,7 +69,11 @@
if name = d.resolve(name); name == "" {
return nil, os.ErrNotExist
}
- return os.OpenFile(name, flag, perm)
+ f, err := os.OpenFile(name, flag, perm)
+ if err != nil {
+ return nil, err
+ }
+ return f, nil
}
func (d Dir) RemoveAll(name string) error {
@@ -267,9 +271,6 @@
if frag == "" {
return os.ErrInvalid
}
- if _, ok := dir.children[frag]; !ok {
- return os.ErrNotExist
- }
delete(dir.children, frag)
return nil
})