master
sh 344 lines 13.3 KB
Raw
1 #!/usr/bin/env bash
2 #
3 # Copyright (c) 2014 Christian Couder
4 # MIT Licensed; see the LICENSE file in this repository.
5 #
6
7 test_description="Test ls command"
8
9 . lib/test-lib.sh
10
11 test_init_ipfs
12
13 test_ls_cmd() {
14 test_expect_success "'ipfs add -r testData' succeeds" '
15 mkdir -p testData testData/d1 testData/d2 &&
16 echo "test" >testData/f1 &&
17 echo "data" >testData/f2 &&
18 echo "hello" >testData/d1/a &&
19 random-data -size=128 -seed=42 >testData/d1/128 &&
20 echo "world" >testData/d2/a &&
21 random-data -size=1024 -seed=42 >testData/d2/1024 &&
22 echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
23 ipfs add -r testData >actual_add
24 '
25
26 test_expect_success "'ipfs add' output looks good" '
27 cat <<-\EOF >expected_add &&
28 added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
29 added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
30 added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
31 added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
32 added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
33 added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
34 added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
35 added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
36 added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
37 added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
38 EOF
39 test_cmp expected_add actual_add
40 '
41
42 test_expect_success "'ipfs ls <three dir hashes>' succeeds" '
43 ipfs ls QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
44 '
45
46 test_expect_success "'ipfs ls <three dir hashes>' output looks good" '
47 cat <<-\EOF >expected_ls &&
48 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
49 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
50 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
51 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
52 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
53
54 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
55 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
56 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
57 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8 bad\x7fname.txt
58
59 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
60 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
61 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
62 EOF
63 test_cmp expected_ls actual_ls
64 '
65
66 test_expect_success "'ipfs ls --size=false <three dir hashes>' succeeds" '
67 ipfs ls --size=false QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
68 '
69
70 test_expect_success "'ipfs ls <three dir hashes>' output looks good" '
71 cat <<-\EOF >expected_ls &&
72 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
73 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
74 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
75 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
76 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2
77
78 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
79 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
80 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
81 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt
82
83 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
84 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
85 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
86 EOF
87 test_cmp expected_ls actual_ls
88 '
89
90 test_expect_success "'ipfs ls --headers <three dir hashes>' succeeds" '
91 ipfs ls --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_headers
92 '
93
94 test_expect_success "'ipfs ls --headers <three dir hashes>' output looks good" '
95 cat <<-\EOF >expected_ls_headers &&
96 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
97 Hash Size Name
98 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
99 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
100 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
101 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
102
103 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
104 Hash Size Name
105 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
106 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
107 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8 bad\x7fname.txt
108
109 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
110 Hash Size Name
111 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
112 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
113 EOF
114 test_cmp expected_ls_headers actual_ls_headers
115 '
116
117 test_expect_success "'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds" '
118 ipfs ls --size=false --cid-base=base32 $(cid-fmt -v 1 -b base32 %s QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j) >actual_ls_base32
119 '
120
121 test_expect_success "'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good" '
122 cid-fmt -b base32 -v 1 --filter %s < expected_ls > expected_ls_base32
123 test_cmp expected_ls_base32 actual_ls_base32
124 '
125 }
126
127
128 test_ls_cmd_streaming() {
129
130 test_expect_success "'ipfs add -r testData' succeeds" '
131 mkdir -p testData testData/d1 testData/d2 &&
132 echo "test" >testData/f1 &&
133 echo "data" >testData/f2 &&
134 echo "hello" >testData/d1/a &&
135 random-data -size=128 -seed=42 >testData/d1/128 &&
136 echo "world" >testData/d2/a &&
137 random-data -size=1024 -seed=42 >testData/d2/1024 &&
138 echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
139 ipfs add -r testData >actual_add
140 '
141
142 test_expect_success "'ipfs add' output looks good" '
143 cat <<-\EOF >expected_add &&
144 added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
145 added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
146 added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
147 added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
148 added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
149 added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
150 added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
151 added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
152 added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
153 added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
154 EOF
155 test_cmp expected_add actual_add
156 '
157
158 test_expect_success "'ipfs ls --stream <three dir hashes>' succeeds" '
159 ipfs ls --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
160 '
161
162 test_expect_success "'ipfs ls --stream <three dir hashes>' output looks good" '
163 cat <<-\EOF >expected_ls_stream &&
164 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
165 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
166 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
167 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
168 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
169
170 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
171 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
172 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
173 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8 bad\x7fname.txt
174
175 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
176 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
177 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
178 EOF
179 test_cmp expected_ls_stream actual_ls_stream
180 '
181
182 test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' succeeds" '
183 ipfs ls --size=false --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
184 '
185
186 test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' output looks good" '
187 cat <<-\EOF >expected_ls_stream &&
188 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
189 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
190 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
191 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
192 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2
193
194 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
195 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
196 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
197 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt
198
199 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
200 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
201 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
202 EOF
203 test_cmp expected_ls_stream actual_ls_stream
204 '
205
206 test_expect_success "'ipfs ls --stream --headers <three dir hashes>' succeeds" '
207 ipfs ls --stream --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream_headers
208 '
209
210 test_expect_success "'ipfs ls --stream --headers <three dir hashes>' output looks good" '
211 cat <<-\EOF >expected_ls_stream_headers &&
212 QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
213 Hash Size Name
214 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
215 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
216 QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
217 QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
218
219 Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
220 Hash Size Name
221 QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
222 QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
223 QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8 bad\x7fname.txt
224
225 QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
226 Hash Size Name
227 QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
228 QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
229 EOF
230 test_cmp expected_ls_stream_headers actual_ls_stream_headers
231 '
232 }
233
234 test_ls_cmd_raw_leaves() {
235 test_expect_success "'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected" '
236 mkdir -p somedir &&
237 echo bar > somedir/foo &&
238 ipfs add --raw-leaves -r somedir/ > /dev/null &&
239 ipfs ls '$1' QmThNTdtKaVoCVrYmM5EBS6U3S5vfKFue2TxbxxAxRcKKE > ls-actual
240 echo "bafkreid5qzpjlgzem2iyzgddv7fjilipxcoxzgwazgn27q3usucn5wlxga 4 foo" > ls-expect
241 test_cmp ls-actual ls-expect
242 '
243 }
244
245 test_ls_object() {
246 test_expect_success "ipfs add medium size file then 'ipfs ls --size=false' works as expected" '
247 random-data -size=500000 -seed=2 > somefile &&
248 HASH=$(ipfs add somefile -q) &&
249 echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo " > ls-expect &&
250 echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm " >> ls-expect &&
251 ipfs ls --size=false $HASH > ls-actual &&
252 test_cmp ls-actual ls-expect
253 '
254
255 test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
256 random-data -size=500000 -seed=2 > somefile &&
257 HASH=$(ipfs add somefile -q) &&
258 echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo 262144 " > ls-expect &&
259 echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm 237856 " >> ls-expect &&
260 ipfs ls $HASH > ls-actual &&
261 test_cmp ls-actual ls-expect
262 '
263 }
264
265 # should work offline
266 test_ls_cmd
267 test_ls_cmd_streaming
268 test_ls_cmd_raw_leaves
269 test_ls_cmd_raw_leaves --size
270 test_ls_object
271
272 # should work online
273 test_launch_ipfs_daemon
274 test_ls_cmd
275 test_ls_cmd_streaming
276 test_ls_cmd_raw_leaves
277 test_ls_cmd_raw_leaves --size
278 test_kill_ipfs_daemon
279 test_ls_object
280
281 #
282 # test for ls --resolve-type=false
283 #
284
285 test_expect_success "'ipfs add -r' succeeds" '
286 mkdir adir &&
287 # note: not using a seed as the files need to have truly random content
288 random-data -size=1000 > adir/file1 &&
289 random-data -size=1000 > adir/file2 &&
290 ipfs add --pin=false -q -r adir > adir-hashes
291 '
292
293 test_expect_success "get hashes from add output" '
294 FILE=`head -1 adir-hashes` &&
295 DIR=`tail -1 adir-hashes` &&
296 test "$FILE" -a "$DIR"
297 '
298
299 test_expect_success "remove a file in dir" '
300 ipfs block rm $FILE
301 '
302
303 test_expect_success "'ipfs ls --resolve-type=false ' fails" '
304 test_must_fail ipfs ls --resolve-type=false $DIR > /dev/null
305 '
306
307 test_expect_success "'ipfs ls' fails" '
308 test_must_fail ipfs ls $DIR
309 '
310
311 test_expect_success "'ipfs ls --resolve-type=true --size=false' fails" '
312 test_must_fail ipfs ls --resolve-type=true --size=false $DIR
313 '
314
315 test_launch_ipfs_daemon_without_network
316
317 test_expect_success "'ipfs ls --resolve-type=false --size=false' ok" '
318 ipfs ls --resolve-type=false --size=false $DIR > /dev/null
319 '
320
321 test_expect_success "'ipfs ls' fails" '
322 test_must_fail ipfs ls $DIR
323 '
324
325 test_expect_success "'ipfs ls --resolve-type=false --size=true' fails" '
326 test_must_fail ipfs ls --resolve-type=false --size=true $DIR
327 '
328
329 test_kill_ipfs_daemon
330
331 test_launch_ipfs_daemon
332
333 # now we try `ipfs ls --resolve-type=false` with the daemon online It
334 # should not even attempt to retrieve the file from the network. If
335 # it does it should eventually fail as the content is random and
336 # should not exist on the network, but we don't want to wait for a
337 # timeout so we will kill the request after a few seconds
338 test_expect_success "'ipfs ls --resolve-type=false --size=false' ok and does not hang" '
339 go-timeout 2 ipfs ls --resolve-type=false --size=false $DIR
340 '
341
342 test_kill_ipfs_daemon
343
344 test_done