mountlib: ensure we don't open files with read and write intent

This commit is contained in:
Nick Craig-Wood 2017-11-07 17:27:53 +00:00
parent 8951875c21
commit d7908c06c9
3 changed files with 10 additions and 7 deletions

View file

@ -28,6 +28,11 @@ func TestFileModTime(t *testing.T) {
run.rm(t, "file") run.rm(t, "file")
} }
// os.Create without opening for write too
func osCreate(name string) (*os.File, error) {
return os.OpenFile(name, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
}
// TestFileModTimeWithOpenWriters tests mod time on open files // TestFileModTimeWithOpenWriters tests mod time on open files
func TestFileModTimeWithOpenWriters(t *testing.T) { func TestFileModTimeWithOpenWriters(t *testing.T) {
run.skipIfNoFUSE(t) run.skipIfNoFUSE(t)
@ -35,7 +40,7 @@ func TestFileModTimeWithOpenWriters(t *testing.T) {
mtime := time.Date(2012, 11, 18, 17, 32, 31, 0, time.UTC) mtime := time.Date(2012, 11, 18, 17, 32, 31, 0, time.UTC)
filepath := run.path("cp-archive-test") filepath := run.path("cp-archive-test")
f, err := os.Create(filepath) f, err := osCreate(filepath)
require.NoError(t, err) require.NoError(t, err)
_, err = f.Write([]byte{104, 105}) _, err = f.Write([]byte{104, 105})

View file

@ -1,7 +1,6 @@
package mounttest package mounttest
import ( import (
"os"
"testing" "testing"
"time" "time"
@ -13,7 +12,7 @@ import (
func TestWriteFileNoWrite(t *testing.T) { func TestWriteFileNoWrite(t *testing.T) {
run.skipIfNoFUSE(t) run.skipIfNoFUSE(t)
fd, err := os.Create(run.path("testnowrite")) fd, err := osCreate(run.path("testnowrite"))
assert.NoError(t, err) assert.NoError(t, err)
err = fd.Close() err = fd.Close()
@ -31,7 +30,7 @@ func TestWriteFileNoWrite(t *testing.T) {
func FIXMETestWriteOpenFileInDirListing(t *testing.T) { func FIXMETestWriteOpenFileInDirListing(t *testing.T) {
run.skipIfNoFUSE(t) run.skipIfNoFUSE(t)
fd, err := os.Create(run.path("testnowrite")) fd, err := osCreate(run.path("testnowrite"))
assert.NoError(t, err) assert.NoError(t, err)
run.checkDir(t, "testnowrite 0") run.checkDir(t, "testnowrite 0")
@ -70,7 +69,7 @@ func TestWriteFileOverwrite(t *testing.T) {
// NB the code for this is in file.go rather than write.go // NB the code for this is in file.go rather than write.go
func TestWriteFileFsync(t *testing.T) { func TestWriteFileFsync(t *testing.T) {
filepath := run.path("to be synced") filepath := run.path("to be synced")
fd, err := os.Create(filepath) fd, err := osCreate(filepath)
require.NoError(t, err) require.NoError(t, err)
_, err = fd.Write([]byte("hello")) _, err = fd.Write([]byte("hello"))
require.NoError(t, err) require.NoError(t, err)

View file

@ -3,7 +3,6 @@
package mounttest package mounttest
import ( import (
"os"
"syscall" "syscall"
"testing" "testing"
@ -14,7 +13,7 @@ import (
func TestWriteFileDoubleClose(t *testing.T) { func TestWriteFileDoubleClose(t *testing.T) {
run.skipIfNoFUSE(t) run.skipIfNoFUSE(t)
out, err := os.Create(run.path("testdoubleclose")) out, err := osCreate(run.path("testdoubleclose"))
assert.NoError(t, err) assert.NoError(t, err)
fd := out.Fd() fd := out.Fd()