From 8b350306ea958e8f2b29369790d4a7ee5e88fc8e Mon Sep 17 00:00:00 2001
From: Mildred Ki'Lya <mildred-pub.git@mildred.fr>
Date: Wed, 2 Mar 2016 09:54:42 +0100
Subject: [PATCH] Improve error reporting and fix pin/set_test.go

License: MIT
Signed-off-by: Mildred Ki'Lya <mildred-pub.git@mildred.fr>
---
 set.go      |  4 ++--
 set_test.go | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/set.go b/set.go
index 669fa7a..fec38e2 100644
--- a/set.go
+++ b/set.go
@@ -271,12 +271,12 @@ func loadSet(ctx context.Context, dag merkledag.DAGService, root *merkledag.Node
 func loadMultiset(ctx context.Context, dag merkledag.DAGService, root *merkledag.Node, name string, internalKeys keyObserver) (map[key.Key]uint64, error) {
 	l, err := root.GetNodeLink(name)
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf("Failed to get link %s: %v", name, err)
 	}
 	internalKeys(key.Key(l.Hash))
 	n, err := l.GetNode(ctx, dag)
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf("Failed to get node from link %s: %v", name, err)
 	}
 
 	refcounts := make(map[key.Key]uint64)
diff --git a/set_test.go b/set_test.go
index 3ef7ce5..b25f91a 100644
--- a/set_test.go
+++ b/set_test.go
@@ -11,6 +11,8 @@ import (
 	"github.com/ipfs/go-ipfs/blockservice"
 	"github.com/ipfs/go-ipfs/exchange/offline"
 	"github.com/ipfs/go-ipfs/merkledag"
+	mh "gx/ipfs/QmYf7ng2hG5XBtJA3tN34DQ2GUN5HNksEw1rLDkmr6vGku/go-multihash"
+	u "gx/ipfs/QmZNVWh8LLjAavuQ2JXuFmuYH3C11xo988vSgp7UQrTRj1/go-ipfs-util"
 	"gx/ipfs/QmZy2y8t9zQH2a1b8q2ZSLKp17ATuJoCNxxyMFG5qFExpt/go-net/context"
 )
 
@@ -31,6 +33,14 @@ func TestMultisetRoundtrip(t *testing.T) {
 	dag := merkledag.NewDAGService(bserv)
 
 	fn := func(m map[key.Key]uint16) bool {
+		// Convert invalid multihash from input to valid ones
+		for k, v := range m {
+			if _, err := mh.Cast([]byte(k)); err != nil {
+				delete(m, k)
+				m[key.Key(u.Hash([]byte(k)))] = v
+			}
+		}
+
 		// Generate a smaller range for refcounts than full uint64, as
 		// otherwise this just becomes overly cpu heavy, splitting it
 		// out into too many items. That means we need to convert to
@@ -43,6 +53,17 @@ func TestMultisetRoundtrip(t *testing.T) {
 		if err != nil {
 			t.Fatalf("storing multiset: %v", err)
 		}
+
+		// Check that the node n is in the DAG
+		k, err := n.Key()
+		if err != nil {
+			t.Fatalf("Could not get key: %v", err)
+		}
+		_, err = dag.Get(ctx, k)
+		if err != nil {
+			t.Fatalf("Could not get node: %v", err)
+		}
+
 		root := &merkledag.Node{}
 		const linkName = "dummylink"
 		if err := root.AddNodeLink(linkName, n); err != nil {
-- 
GitLab