From 9aab19ea357b9741dbab0c94de2057f0b7b4cc82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Wed, 6 Dec 2017 20:59:34 +0100 Subject: [PATCH] object-patch: Support linking to non-dagpb objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- core/commands/object/patch.go | 8 +------- merkledag/utils/utils.go | 5 +++-- test/sharness/t0051-object.sh | 7 +++++++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/core/commands/object/patch.go b/core/commands/object/patch.go index 2668bfcf8..a53a4a062 100644 --- a/core/commands/object/patch.go +++ b/core/commands/object/patch.go @@ -325,13 +325,7 @@ to a file containing 'bar', and returns the hash of the new object. return } - chpb, ok := childnd.(*dag.ProtoNode) - if !ok { - res.SetError(dag.ErrNotProtobuf, cmdkit.ErrNormal) - return - } - - err = e.InsertNodeAtPath(req.Context(), npath, chpb, createfunc) + err = e.InsertNodeAtPath(req.Context(), npath, childnd, createfunc) if err != nil { res.SetError(err, cmdkit.ErrNormal) return diff --git a/merkledag/utils/utils.go b/merkledag/utils/utils.go index 790d98dc8..b976907dc 100644 --- a/merkledag/utils/utils.go +++ b/merkledag/utils/utils.go @@ -212,8 +212,9 @@ func copyDag(nd *dag.ProtoNode, from, to dag.DAGService) error { } childpb, ok := child.(*dag.ProtoNode) - if !ok { - return dag.ErrNotProtobuf + if !ok { // leaf node + _, err := to.Add(nd) + return err } err = copyDag(childpb, from, to) diff --git a/test/sharness/t0051-object.sh b/test/sharness/t0051-object.sh index 80913c78c..244dcc831 100755 --- a/test/sharness/t0051-object.sh +++ b/test/sharness/t0051-object.sh @@ -216,6 +216,13 @@ test_object_cmd() { ipfs object stat /ipfs/$N3/foo/baz > /dev/null ' + test_expect_success "'ipfs object patch add-link' allow linking IPLD objects" ' + EMPTY_DIR=$(ipfs object new unixfs-dir) && + OBJ=$(echo "123" | ipfs dag put) && + N1=$(ipfs object patch $EMPTY_DIR add-link foo $OBJ) && + ipfs object stat $N1 > /dev/null + ' + test_expect_success "object patch creation looks right" ' echo "QmPc73aWK9dgFBXe86P4PvQizHo9e5Qt7n7DAMXWuigFuG" > hash_exp && echo $N3 > hash_actual &&