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  }