@cryptotaxi247 / kubo / commits / 508af1e12

mfs: add test case for MFS repeated truncation failure

License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>

Lucas Molas committed Jul 11, 2018 at 12:36 UTC 508af1e12c72ef5ad8d3f8757a0db4667e9197b0
1 file changed +40
mfs/mfs_test.go
+40
@@ -1136,3 +1136,43 @@ func TestTruncateAtSize(t *testing.T) {
1136 }
1137 fd.Truncate(4)
1138 }
1139 +
1140 +func TestTruncateAndWrite(t *testing.T) {
1141 + ctx, cancel := context.WithCancel(context.Background())
1142 + defer cancel()
1143 + ds, rt := setupRoot(ctx, t)
1144 +
1145 + dir := rt.GetDirectory()
1146 +
1147 + nd := dag.NodeWithData(ft.FilePBData(nil, 0))
1148 + fi, err := NewFile("test", nd, dir, ds)
1149 + if err != nil {
1150 + t.Fatal(err)
1151 + }
1152 +
1153 + fd, err := fi.Open(OpenReadWrite, true)
1154 + defer fd.Close()
1155 + if err != nil {
1156 + t.Fatal(err)
1157 + }
1158 + for i := 0; i < 200; i++ {
1159 + err = fd.Truncate(0)
1160 + if err != nil {
1161 + t.Fatal(err)
1162 + }
1163 + l, err := fd.Write([]byte("test"))
1164 + if err != nil {
1165 + t.Fatal(err)
1166 + }
1167 + if l != len("test") {
1168 + t.Fatal("incorrect write length")
1169 + }
1170 + data, err := ioutil.ReadAll(fd)
1171 + if err != nil {
1172 + t.Fatal(err)
1173 + }
1174 + if string(data) != "test" {
1175 + t.Errorf("read error at read %d, read: %v", i, data)
1176 + }
1177 + }
1178 +}