From d90a07ff94b7769cb5df50ed7aa7dcad442014e8 Mon Sep 17 00:00:00 2001 From: Kevin Atkinson Date: Tue, 29 Aug 2017 23:04:59 -0400 Subject: [PATCH] Fix "ipfs ls" to once again work on arbitrary dag objects. License: MIT Signed-off-by: Kevin Atkinson --- core/commands/ls.go | 15 ++++++++++----- test/sharness/t0045-ls.sh | 13 +++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/commands/ls.go b/core/commands/ls.go index f9c25a7f32ca..c36a90deae4d 100644 --- a/core/commands/ls.go +++ b/core/commands/ls.go @@ -106,15 +106,20 @@ The JSON output contains type information. output := make([]LsObject, len(req.Arguments())) for i, dagnode := range dagnodes { dir, err := uio.NewDirectoryFromNode(nd.DAG, dagnode) - if err != nil { + if err != nil && err != uio.ErrNotADir { res.SetError(err, cmds.ErrNormal) return } - links, err := dir.Links(req.Context()) - if err != nil { - res.SetError(err, cmds.ErrNormal) - return + var links []*node.Link + if dir == nil { + links = dagnode.Links() + } else { + links, err = dir.Links(req.Context()) + if err != nil { + res.SetError(err, cmds.ErrNormal) + return + } } output[i] = LsObject{ diff --git a/test/sharness/t0045-ls.sh b/test/sharness/t0045-ls.sh index b111dbace7e4..e5aa6bef4c5c 100755 --- a/test/sharness/t0045-ls.sh +++ b/test/sharness/t0045-ls.sh @@ -101,15 +101,28 @@ test_ls_cmd_raw_leaves() { ' } +test_ls_object() { + test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" ' + random 500000 2 > somefile && + HASH=$(ipfs add somefile -q) && + echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262158 " > ls-expect && + echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237870 " >> ls-expect && + ipfs ls $HASH > ls-actual && + test_cmp ls-actual ls-expect + ' +} + # should work offline test_ls_cmd test_ls_cmd_raw_leaves +test_ls_object # should work online test_launch_ipfs_daemon test_ls_cmd test_ls_cmd_raw_leaves test_kill_ipfs_daemon +test_ls_object # # test for ls --resolve-type=false