X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a3222e35cda68c8e48a17921c33ac37ecb5c3bac..b91b5feb69b0939c99e4d71728c345ca98f5cc92:/sdk/go/keepclient/hashcheck_test.go diff --git a/sdk/go/keepclient/hashcheck_test.go b/sdk/go/keepclient/hashcheck_test.go index 371a9894a3..44345afda6 100644 --- a/sdk/go/keepclient/hashcheck_test.go +++ b/sdk/go/keepclient/hashcheck_test.go @@ -1,12 +1,17 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + package keepclient import ( "bytes" "crypto/md5" "fmt" - . "gopkg.in/check.v1" "io" "io/ioutil" + + . "gopkg.in/check.v1" ) type HashcheckSuiteSuite struct{} @@ -82,4 +87,17 @@ func (h *HashcheckSuiteSuite) TestWriteTo(c *C) { c.Check(err, Equals, BadChecksum) <-done } + + // If WriteTo stops early due to a write error, return the + // write error (not "bad checksum"). + { + input := bytes.NewBuffer(make([]byte, 1<<26)) + hcr := HashCheckingReader{input, md5.New(), hash} + r, w := io.Pipe() + r.Close() + n, err := hcr.WriteTo(w) + c.Check(n, Equals, int64(0)) + c.Check(err, NotNil) + c.Check(err, Not(Equals), BadChecksum) + } }