mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-26 15:42:21 +08:00
mfs: add test case for MFS repeated truncation failure
License: MIT Signed-off-by: Lucas Molas <schomatis@gmail.com>
This commit is contained in:
@ -1136,3 +1136,43 @@ func TestTruncateAtSize(t *testing.T) {
|
|||||||
}
|
}
|
||||||
fd.Truncate(4)
|
fd.Truncate(4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTruncateAndWrite(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
ds, rt := setupRoot(ctx, t)
|
||||||
|
|
||||||
|
dir := rt.GetDirectory()
|
||||||
|
|
||||||
|
nd := dag.NodeWithData(ft.FilePBData(nil, 0))
|
||||||
|
fi, err := NewFile("test", nd, dir, ds)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fd, err := fi.Open(OpenReadWrite, true)
|
||||||
|
defer fd.Close()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
for i := 0; i < 200; i++ {
|
||||||
|
err = fd.Truncate(0)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
l, err := fd.Write([]byte("test"))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if l != len("test") {
|
||||||
|
t.Fatal("incorrect write length")
|
||||||
|
}
|
||||||
|
data, err := ioutil.ReadAll(fd)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if string(data) != "test" {
|
||||||
|
t.Errorf("read error at read %d, read: %v", i, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user