Handle O_CREATE flag to *MemMapFs.OpenFile. To allow MemMapFs to be used in place of OsFs in tests where this flag is used to create the file if it doesn't already exist..
diff --git a/fs_test.go b/fs_test.go index 92cbf6f..ab667e9 100644 --- a/fs_test.go +++ b/fs_test.go
@@ -70,6 +70,21 @@ } } +func TestOpenFile(t *testing.T) { + for _, fs := range Fss { + path := testDir + "/" + testName + fs.MkdirAll(testDir, 0777) // Just in case. + fs.Remove(path) // Just in case. + + f, err := fs.OpenFile(path, os.O_CREATE, 0600) + if err != nil { + t.Error(fs.Name(), "OpenFile (O_CREATE) failed:", err) + continue + } + f.Close() + } +} + func TestMemFileRead(t *testing.T) { f := MemFileCreate("testfile") f.WriteString("abcd")
diff --git a/memmap.go b/memmap.go index 5020e4c..7053fa3 100644 --- a/memmap.go +++ b/memmap.go
@@ -205,7 +205,11 @@ } func (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) { - return m.Open(name) + file, err := m.Open(name) + if os.IsNotExist(err) && (flag&os.O_CREATE > 0) { + file, err = m.Create(name) + } + return file, err } func (m *MemMapFs) Remove(name string) error {