From 0d5731383f756eb2308cd06435d78009e3f43af9 Mon Sep 17 00:00:00 2001
From: Alexander Neumann <alexander@bumpern.de>
Date: Sat, 21 Nov 2015 17:23:59 +0100
Subject: [PATCH] Remove HashAppendWriter

---
 backend/writer.go      | 41 -----------------------------------------
 backend/writer_test.go | 36 ------------------------------------
 2 files changed, 77 deletions(-)

diff --git a/backend/writer.go b/backend/writer.go
index 6bee58b49..5764b872c 100644
--- a/backend/writer.go
+++ b/backend/writer.go
@@ -1,51 +1,10 @@
 package backend
 
 import (
-	"errors"
 	"hash"
 	"io"
 )
 
-type HashAppendWriter struct {
-	w      io.Writer
-	origWr io.Writer
-	h      hash.Hash
-	sum    []byte
-	closed bool
-}
-
-func NewHashAppendWriter(w io.Writer, h hash.Hash) *HashAppendWriter {
-	return &HashAppendWriter{
-		h:      h,
-		w:      io.MultiWriter(w, h),
-		origWr: w,
-		sum:    make([]byte, 0, h.Size()),
-	}
-}
-
-func (h *HashAppendWriter) Close() error {
-	if h == nil {
-		return nil
-	}
-
-	if !h.closed {
-		h.closed = true
-
-		_, err := h.origWr.Write(h.h.Sum(nil))
-		return err
-	}
-
-	return nil
-}
-
-func (h *HashAppendWriter) Write(p []byte) (n int, err error) {
-	if !h.closed {
-		return h.w.Write(p)
-	}
-
-	return 0, errors.New("Write() called on closed HashAppendWriter")
-}
-
 // HashingWriter wraps an io.Writer to hashes all data that is written to it.
 type HashingWriter struct {
 	w    io.Writer
diff --git a/backend/writer_test.go b/backend/writer_test.go
index 816eb401a..9fda2c06f 100644
--- a/backend/writer_test.go
+++ b/backend/writer_test.go
@@ -12,42 +12,6 @@ import (
 	. "github.com/restic/restic/test"
 )
 
-func TestHashAppendWriter(t *testing.T) {
-	tests := []int{5, 23, 2<<18 + 23, 1 << 20}
-
-	for _, size := range tests {
-		data := make([]byte, size)
-		_, err := io.ReadFull(rand.Reader, data)
-		if err != nil {
-			t.Fatalf("ReadFull: %v", err)
-		}
-
-		expectedHash := sha256.Sum256(data)
-
-		target := bytes.NewBuffer(nil)
-		wr := backend.NewHashAppendWriter(target, sha256.New())
-
-		_, err = wr.Write(data)
-		OK(t, err)
-		OK(t, wr.Close())
-
-		Assert(t, len(target.Bytes()) == size+len(expectedHash),
-			"HashAppendWriter: invalid number of bytes written: got %d, expected %d",
-			len(target.Bytes()), size+len(expectedHash))
-
-		r := target.Bytes()
-		resultingHash := r[len(r)-len(expectedHash):]
-		Assert(t, bytes.Equal(expectedHash[:], resultingHash),
-			"HashAppendWriter: hashes do not match: expected %02x, got %02x",
-			expectedHash, resultingHash)
-
-		// write again, this must return an error
-		_, err = wr.Write([]byte{23})
-		Assert(t, err != nil,
-			"HashAppendWriter: Write() after Close() did not return an error")
-	}
-}
-
 func TestHashingWriter(t *testing.T) {
 	tests := []int{5, 23, 2<<18 + 23, 1 << 20}