Fix "ipfs ls" to once again work on arbitrary dag objects.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
Kevin Atkinson committed
Aug 29, 2017 at 23:04 UTC
2fbb4515d9379553c8fbc5fe64c842b49f62871a
2 files changed
+23
-5
core/commands/ls.go
+10
-5
@@ -106,15 +106,20 @@ The JSON output contains type information.
106
output := make([]LsObject, len(req.Arguments()))
107
for i, dagnode := range dagnodes {
108
dir, err := uio.NewDirectoryFromNode(nd.DAG, dagnode)
109
- if err != nil {
109
+ if err != nil && err != uio.ErrNotADir {
110
res.SetError(err, cmds.ErrNormal)
111
return
112
}
113
114
- links, err := dir.Links(req.Context())
115
- if err != nil {
116
- res.SetError(err, cmds.ErrNormal)
117
- return
114
+ var links []*node.Link
115
+ if dir == nil {
116
+ links = dagnode.Links()
117
+ } else {
118
+ links, err = dir.Links(req.Context())
119
+ if err != nil {
120
+ res.SetError(err, cmds.ErrNormal)
121
+ return
122
+ }
123
}
124
125
output[i] = LsObject{
test/sharness/t0045-ls.sh
+13
@@ -101,15 +101,28 @@ test_ls_cmd_raw_leaves() {
101
'
102
}
103
104
+test_ls_object() {
105
+ test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
106
+ random 500000 2 > somefile &&
107
+ HASH=$(ipfs add somefile -q) &&
108
+ echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262158 " > ls-expect &&
109
+ echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237870 " >> ls-expect &&
110
+ ipfs ls $HASH > ls-actual &&
111
+ test_cmp ls-actual ls-expect
112
+ '
113
+}
114
+
115
# should work offline
116
test_ls_cmd
117
test_ls_cmd_raw_leaves
118
+test_ls_object
119
120
# should work online
121
test_launch_ipfs_daemon
122
test_ls_cmd
123
test_ls_cmd_raw_leaves
124
test_kill_ipfs_daemon
125
+test_ls_object
126
127
#
128
# test for ls --resolve-type=false