utils/fs: Fix O_CREATE flag check in OpenFile (#116)
* utils/fs: Fix O_CREATE flag check in OpenFile
* utils/fs/os: test that Open does not create dirs.
diff --git a/utils/fs/os/os.go b/utils/fs/os/os.go
index 3ff825e..4f4e651 100644
--- a/utils/fs/os/os.go
+++ b/utils/fs/os/os.go
@@ -32,7 +32,7 @@
func (fs *OS) OpenFile(filename string, flag int, perm os.FileMode) (fs.File, error) {
fullpath := path.Join(fs.base, filename)
- if flag|os.O_CREATE != 0 {
+ if flag&os.O_CREATE != 0 {
if err := fs.createDir(fullpath); err != nil {
return nil, err
}
diff --git a/utils/fs/os/os_test.go b/utils/fs/os/os_test.go
index 756e284..2bb9391 100644
--- a/utils/fs/os/os_test.go
+++ b/utils/fs/os/os_test.go
@@ -3,6 +3,7 @@
import (
"io/ioutil"
stdos "os"
+ "path/filepath"
"testing"
. "gopkg.in/check.v1"
@@ -27,3 +28,10 @@
err := stdos.RemoveAll(s.path)
c.Assert(err, IsNil)
}
+
+func (s *OSSuite) TestOpenDoesNotCreateDir(c *C) {
+ _, err := s.Fs.Open("dir/non-existant")
+ c.Assert(err, NotNil)
+ _, err = stdos.Stat(filepath.Join(s.path, "dir"))
+ c.Assert(stdos.IsNotExist(err), Equals, true)
+}