diff --git a/internal/backend/mem/mem_backend.go b/internal/backend/mem/mem_backend.go index 950ae122d..719ca46a5 100644 --- a/internal/backend/mem/mem_backend.go +++ b/internal/backend/mem/mem_backend.go @@ -81,14 +81,14 @@ func (be *MemoryBackend) Save(ctx context.Context, h restic.Handle, rd restic.Re return err } - be.data[h] = buf - debug.Log("saved %v bytes at %v", len(buf), h) - // sanity check if int64(len(buf)) != rd.Length() { return errors.Errorf("wrote %d bytes instead of the expected %d bytes", len(buf), rd.Length()) } + be.data[h] = buf + debug.Log("saved %v bytes at %v", len(buf), h) + return ctx.Err() } diff --git a/internal/backend/test/tests.go b/internal/backend/test/tests.go index a35b75e5a..ae9b58677 100644 --- a/internal/backend/test/tests.go +++ b/internal/backend/test/tests.go @@ -577,13 +577,15 @@ func (s *Suite) TestSaveError(t *testing.T) { }() length := rand.Intn(1<<23) + 200000 - data := test.Random(23, length) + data := test.Random(24, length) var id restic.ID copy(id[:], data) // test that incomplete uploads fail h := restic.Handle{Type: restic.PackFile, Name: id.String()} err := b.Save(context.TODO(), h, &incompleteByteReader{ByteReader: *restic.NewByteReader(data)}) + // try to delete possible leftovers + _ = s.delayedRemove(t, b, h) if err == nil { t.Fatal("incomplete upload did not fail") }