github.com/ncw/rclone@v1.48.1-0.20190724201158-a35aa1360e3e/cmd/mountlib/mounttest/write.go (about) 1 package mounttest 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 // TestWriteFileNoWrite tests writing a file with no write()'s to it 11 func TestWriteFileNoWrite(t *testing.T) { 12 run.skipIfNoFUSE(t) 13 14 fd, err := osCreate(run.path("testnowrite")) 15 assert.NoError(t, err) 16 17 err = fd.Close() 18 assert.NoError(t, err) 19 20 run.waitForWriters() 21 22 run.checkDir(t, "testnowrite 0") 23 24 run.rm(t, "testnowrite") 25 } 26 27 // FIXMETestWriteOpenFileInDirListing tests open file in directory listing 28 func FIXMETestWriteOpenFileInDirListing(t *testing.T) { 29 run.skipIfNoFUSE(t) 30 31 fd, err := osCreate(run.path("testnowrite")) 32 assert.NoError(t, err) 33 34 run.checkDir(t, "testnowrite 0") 35 36 err = fd.Close() 37 assert.NoError(t, err) 38 39 run.waitForWriters() 40 41 run.rm(t, "testnowrite") 42 } 43 44 // TestWriteFileWrite tests writing a file and reading it back 45 func TestWriteFileWrite(t *testing.T) { 46 run.skipIfNoFUSE(t) 47 48 run.createFile(t, "testwrite", "data") 49 run.checkDir(t, "testwrite 4") 50 contents := run.readFile(t, "testwrite") 51 assert.Equal(t, "data", contents) 52 run.rm(t, "testwrite") 53 } 54 55 // TestWriteFileOverwrite tests overwriting a file 56 func TestWriteFileOverwrite(t *testing.T) { 57 run.skipIfNoFUSE(t) 58 59 run.createFile(t, "testwrite", "data") 60 run.checkDir(t, "testwrite 4") 61 run.createFile(t, "testwrite", "potato") 62 contents := run.readFile(t, "testwrite") 63 assert.Equal(t, "potato", contents) 64 run.rm(t, "testwrite") 65 } 66 67 // TestWriteFileFsync tests Fsync 68 // 69 // NB the code for this is in file.go rather than write.go 70 func TestWriteFileFsync(t *testing.T) { 71 run.skipIfNoFUSE(t) 72 73 filepath := run.path("to be synced") 74 fd, err := osCreate(filepath) 75 require.NoError(t, err) 76 _, err = fd.Write([]byte("hello")) 77 require.NoError(t, err) 78 err = fd.Sync() 79 require.NoError(t, err) 80 err = fd.Close() 81 require.NoError(t, err) 82 run.waitForWriters() 83 run.rm(t, "to be synced") 84 }