fix truncating when already at the correct size
fixes #4518 License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
Steven Allen committed
Dec 21, 2017 at 17:33 UTC
e6545a24b2ba04deec37b18ad24eb05fc7e2a3ff
2 files changed
+28
mfs/mfs_test.go
+25
@@ -1111,3 +1111,28 @@ func TestFileDescriptors(t *testing.T) {
1111
t.Fatal(err)
1112
}
1113
}
1114
+
1115
+func TestTruncateAtSize(t *testing.T) {
1116
+ ctx, cancel := context.WithCancel(context.Background())
1117
+ defer cancel()
1118
+ ds, rt := setupRoot(ctx, t)
1119
+
1120
+ dir := rt.GetDirectory()
1121
+
1122
+ nd := dag.NodeWithData(ft.FilePBData(nil, 0))
1123
+ fi, err := NewFile("test", nd, dir, ds)
1124
+ if err != nil {
1125
+ t.Fatal(err)
1126
+ }
1127
+
1128
+ fd, err := fi.Open(OpenReadWrite, true)
1129
+ if err != nil {
1130
+ t.Fatal(err)
1131
+ }
1132
+ defer fd.Close()
1133
+ _, err = fd.Write([]byte("test"))
1134
+ if err != nil {
1135
+ t.Fatal(err)
1136
+ }
1137
+ fd.Truncate(4)
1138
+}
unixfs/mod/dagmodifier.go
+3
@@ -481,6 +481,9 @@ func (dm *DagModifier) Truncate(size int64) error {
481
if err != nil {
482
return err
483
}
484
+ if size == int64(realSize) {
485
+ return nil
486
+ }
487
488
// Truncate can also be used to expand the file
489
if size > int64(realSize) {