X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/964ab3dd90ff1508efc0c77378cde2b3a4da1029..c9b8b9b9c78a77dd30b828914c8bee9fa8dcbb90:/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) + } }