diff --git a/common/connection.go b/common/connection.go index 9c6f110a..0dca07fe 100644 --- a/common/connection.go +++ b/common/connection.go @@ -496,7 +496,8 @@ func (c *BaseConnection) truncateFile(fsPath string, size int64) error { // if we found no transfer we truncate by path. // pkg/sftp should expose an optional interface and call truncate directly on the opened handle ... // If we try to truncate by path an already opened file we get an error on Windows - err := c.truncateOpenHandle(fsPath, size) + var err error + err = c.truncateOpenHandle(fsPath, size) if err == errNoTransfer { c.Log(logger.LevelDebug, "file path %#v not found in active transfers, execute trucate by path", fsPath) err = c.Fs.Truncate(fsPath, size) diff --git a/common/connection_test.go b/common/connection_test.go index 6152d2d6..a92df599 100644 --- a/common/connection_test.go +++ b/common/connection_test.go @@ -530,7 +530,7 @@ func TestSetStat(t *testing.T) { }) assert.Error(t, err) // truncate - err = c.SetStat(filepath.Join(user.GetHomeDir(), "missing"), "/missing", &StatAttributes{ + err = c.SetStat(filepath.Join(user.GetHomeDir(), "/missing/missing"), "/missing/missing", &StatAttributes{ Size: 1, Flags: StatAttrSize, }) diff --git a/common/transfer_test.go b/common/transfer_test.go index 5c690460..23b72386 100644 --- a/common/transfer_test.go +++ b/common/transfer_test.go @@ -106,6 +106,8 @@ func TestTruncate(t *testing.T) { assert.NoError(t, err) err = transfer.Close() assert.NoError(t, err) + err = file.Close() + assert.NoError(t, err) fi, err := os.Stat(testFile) if assert.NoError(t, err) { assert.Equal(t, int64(2), fi.Size())