16427: Merge branch 'master'
[arvados.git] / sdk / go / keepclient / hashcheck_test.go
index 371a9894a3088afc001b78f59a64d2069e932e69..44345afda61c5535ee1bfa1232c3369827f00be5 100644 (file)
@@ -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)
+       }
 }