ipld-eth-server/vendor/github.com/ipfs/go-ipfs/test/sharness/t0040-add-and-cat.sh
2019-12-02 13:24:46 -06:00

832 lines
25 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Copyright (c) 2014 Christian Couder
# MIT Licensed; see the LICENSE file in this repository.
#
test_description="Test add and cat commands"
. lib/test-lib.sh
test_add_cat_file() {
test_expect_success "ipfs add --help works" '
ipfs add --help 2> add_help_err1 > /dev/null
'
test_expect_success "stdin reading message doesnt show up" '
test_expect_code 1 grep "ipfs: Reading from" add_help_err1 &&
test_expect_code 1 grep "send Ctrl-d to stop." add_help_err1
'
test_expect_success "ipfs help add works" '
ipfs help add 2> add_help_err2 > /dev/null
'
test_expect_success "stdin reading message doesnt show up" '
test_expect_code 1 grep "ipfs: Reading from" add_help_err2 &&
test_expect_code 1 grep "send Ctrl-d to stop." add_help_err2
'
test_expect_success "ipfs add succeeds" '
echo "Hello Worlds!" >mountdir/hello.txt &&
ipfs add mountdir/hello.txt >actual
'
test_expect_success "ipfs add output looks good" '
HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
echo "added $HASH hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --only-hash succeeds" '
ipfs add --only-hash mountdir/hello.txt > oh_actual
'
test_expect_success "ipfs add --only-hash output looks good" '
test_cmp expected oh_actual
'
test_expect_success "ipfs cat succeeds" '
ipfs cat "$HASH" >actual
'
test_expect_success "ipfs cat output looks good" '
echo "Hello Worlds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with offset succeeds" '
ipfs cat --offset 10 "$HASH" >actual
'
test_expect_success "ipfs cat from offset output looks good" '
echo "ds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat multiple hashes with offset succeeds" '
ipfs cat --offset 10 "$HASH" "$HASH" >actual
'
test_expect_success "ipfs cat from offset output looks good" '
echo "ds!" >expected &&
echo "Hello Worlds!" >>expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat multiple hashes with offset succeeds" '
ipfs cat --offset 16 "$HASH" "$HASH" >actual
'
test_expect_success "ipfs cat from offset output looks good" '
echo "llo Worlds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat from negitive offset should fail" '
test_expect_code 1 ipfs cat --offset -102 "$HASH" > actual
'
test_expect_success "ipfs cat with length succeeds" '
ipfs cat --length 8 "$HASH" >actual
'
test_expect_success "ipfs cat with length output looks good" '
printf "Hello Wo" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat multiple hashes with offset and length succeeds" '
ipfs cat --offset 5 --length 15 "$HASH" "$HASH" "$HASH" >actual
'
test_expect_success "ipfs cat multiple hashes with offset and length looks good" '
printf " Worlds!\nHello " >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with exact length succeeds" '
ipfs cat --length $(ipfs cat "$HASH" | wc -c) "$HASH" >actual
'
test_expect_success "ipfs cat with exact length looks good" '
echo "Hello Worlds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with 0 length succeeds" '
ipfs cat --length 0 "$HASH" >actual
'
test_expect_success "ipfs cat with 0 length looks good" '
: >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with oversized length succeeds" '
ipfs cat --length 100 "$HASH" >actual
'
test_expect_success "ipfs cat with oversized length looks good" '
echo "Hello Worlds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with negitive length should fail" '
test_expect_code 1 ipfs cat --length -102 "$HASH" > actual
'
test_expect_success "ipfs cat /ipfs/file succeeds" '
ipfs cat /ipfs/$HASH >actual
'
test_expect_success "output looks good" '
echo "Hello Worlds!" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add -t succeeds" '
ipfs add -t mountdir/hello.txt >actual
'
test_expect_success "ipfs add -t output looks good" '
HASH="QmUkUQgxXeggyaD5Ckv8ZqfW8wHBX6cYyeiyqvVZYzq5Bi" &&
echo "added $HASH hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --chunker size-32 succeeds" '
ipfs add --chunker rabin mountdir/hello.txt >actual
'
test_expect_success "ipfs add --chunker size-32 output looks good" '
HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
echo "added $HASH hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --chunker size-64 succeeds" '
ipfs add --chunker=size-64 mountdir/hello.txt >actual
'
test_expect_success "ipfs add --chunker size-64 output looks good" '
HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
echo "added $HASH hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --chunker=size-0 failed" '
test_expect_code 1 ipfs add -Q --chunker=size-0 mountdir/hello.txt
'
test_expect_success "ipfs add --chunker rabin-36-512-1024 succeeds" '
ipfs add --chunker rabin-36-512-1024 mountdir/hello.txt >actual
'
test_expect_success "ipfs add --chunker rabin-36-512-1024 output looks good" '
HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
echo "added $HASH hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --chunker rabin-12-512-1024 failed" '
test_expect_code 1 ipfs add -Q --chunker rabin-12-512-1024 mountdir/hello.txt
'
test_expect_success "ipfs add on hidden file succeeds" '
echo "Hello Worlds!" >mountdir/.hello.txt &&
ipfs add mountdir/.hello.txt >actual
'
test_expect_success "ipfs add on hidden file output looks good" '
HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
echo "added $HASH .hello.txt" >expected &&
test_cmp expected actual
'
test_expect_success "add zero length file" '
touch zero-length-file &&
ZEROHASH=$(ipfs add -q zero-length-file) &&
echo $ZEROHASH
'
test_expect_success "zero length file has correct hash" '
test "$ZEROHASH" = QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
'
test_expect_success "cat zero length file" '
ipfs cat $ZEROHASH > zero-length-file_out
'
test_expect_success "make sure it looks good" '
test_cmp zero-length-file zero-length-file_out
'
test_expect_success "ipfs add --stdin-name" '
NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
echo "IPFS" | ipfs add --stdin-name file.txt > actual &&
echo "added $NAMEHASH file.txt" > expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --stdin-name -w" '
NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
echo "IPFS" | ipfs add -w --stdin-name file.txt | head -n1> actual &&
echo "added $NAMEHASH file.txt" > expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with stdin-name" '
NAMEHASH=$(echo "IPFS" | ipfs add -w --stdin-name file.txt -Q) &&
ipfs cat /ipfs/$NAMEHASH/file.txt > expected &&
echo "IPFS" > actual &&
test_cmp expected actual
'
test_expect_success "ipfs add -r ." '
mkdir test_current_dir &&
echo "Hey" > test_current_dir/hey &&
mkdir test_current_dir/hello &&
echo "World" > test_current_dir/hello/world &&
( cd test_current_dir &&
ipfs add -r . | tail -n1 > ../actual && cd ../ ) &&
rm -r test_current_dir
'
test_expect_success "ipfs add -r . output looks good" '
echo "added QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1 test_current_dir" > expected
test_cmp expected actual
'
test_expect_success "ipfs add -r ./" '
mkdir test_current_dir &&
echo "Hey" > test_current_dir/hey &&
mkdir test_current_dir/hello &&
echo "World" > test_current_dir/hello/world &&
( cd test_current_dir &&
ipfs add -r ./ | tail -n1 > ../actual && cd ../ ) &&
rm -r test_current_dir
'
test_expect_success "ipfs add -r ./ output looks good" '
echo "added QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1 test_current_dir" > expected
test_cmp expected actual
'
# --cid-base=base32
test_expect_success "ipfs add --cid-base=base32 succeeds" '
echo "base32 test" >mountdir/base32-test.txt &&
ipfs add --cid-base=base32 mountdir/base32-test.txt >actual
'
test_expect_success "ipfs add --cid-base=base32 output looks good" '
HASHb32="bafybeibyosqxljd2eptb4ebbtvk7pb4aoxzqa6ttdsflty6rsslz5y6i34" &&
echo "added $HASHb32 base32-test.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --cid-base=base32 --only-hash succeeds" '
ipfs add --cid-base=base32 --only-hash mountdir/base32-test.txt > oh_actual
'
test_expect_success "ipfs add --cid-base=base32 --only-hash output looks good" '
test_cmp expected oh_actual
'
test_expect_success "ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds" '
echo "base32 test" >mountdir/base32-test.txt &&
ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false mountdir/base32-test.txt >actual
'
test_expect_success "ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good" '
HASHv0=$(cid-fmt -v 0 -b z %s "$HASHb32") &&
echo "added $HASHv0 base32-test.txt" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds" '
ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash mountdir/base32-test.txt > oh_actual
'
test_expect_success "ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good" '
test_cmp expected oh_actual
'
test_expect_success "ipfs cat with base32 hash succeeds" '
ipfs cat "$HASHb32" >actual
'
test_expect_success "ipfs cat with base32 hash output looks good" '
echo "base32 test" >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat using CIDv0 hash succeeds" '
ipfs cat "$HASHv0" >actual
'
test_expect_success "ipfs cat using CIDv0 hash looks good" '
echo "base32 test" >expected &&
test_cmp expected actual
'
}
test_add_cat_5MB() {
ADD_FLAGS="$1"
EXP_HASH="$2"
test_expect_success "generate 5MB file using go-random" '
random 5242880 41 >mountdir/bigfile
'
test_expect_success "sha1 of the file looks ok" '
echo "11145620fb92eb5a49c9986b5c6844efda37e471660e" >sha1_expected &&
multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
test_cmp sha1_expected sha1_actual
'
test_expect_success "'ipfs add $ADD_FLAGS bigfile' succeeds" '
ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
test_fsh cat daemon_err
'
test_expect_success "'ipfs add bigfile' output looks good" '
echo "added $EXP_HASH bigfile" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs cat' succeeds" '
ipfs cat "$EXP_HASH" >actual
'
test_expect_success "'ipfs cat' output looks good" '
test_cmp mountdir/bigfile actual
'
test_expect_success FUSE "cat ipfs/bigfile succeeds" '
cat "ipfs/$EXP_HASH" >actual
'
test_expect_success FUSE "cat ipfs/bigfile looks good" '
test_cmp mountdir/bigfile actual
'
test_expect_success "remove hash" '
ipfs pin rm "$EXP_HASH" &&
ipfs block rm "$EXP_HASH"
'
test_expect_success "get base32 version of CID" '
ipfs cid base32 $EXP_HASH > base32_cid &&
BASE32_HASH=`cat base32_cid`
'
test_expect_success "ipfs add --cid-base=base32 bigfile' succeeds" '
ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
test_fsh cat daemon_err
'
test_expect_success "'ipfs add bigfile --cid-base=base32' output looks good" '
echo "added $BASE32_HASH bigfile" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs cat $BASE32_HASH' succeeds" '
ipfs cat "$BASE32_HASH" >actual
'
}
test_add_cat_raw() {
test_expect_success "add a small file with raw-leaves" '
echo "foobar" > afile &&
HASH=$(ipfs add -q --raw-leaves afile)
'
test_expect_success "cat that small file" '
ipfs cat $HASH > afile_out
'
test_expect_success "make sure it looks good" '
test_cmp afile afile_out
'
test_expect_success "add zero length file with raw-leaves" '
touch zero-length-file &&
ZEROHASH=$(ipfs add -q --raw-leaves zero-length-file) &&
echo $ZEROHASH
'
test_expect_success "zero length file has correct hash" '
test "$ZEROHASH" = zb2rhmy65F3REf8SZp7De11gxtECBGgUKaLdiDj7MCGCHxbDW
'
test_expect_success "cat zero length file" '
ipfs cat $ZEROHASH > zero-length-file_out
'
test_expect_success "make sure it looks good" '
test_cmp zero-length-file zero-length-file_out
'
}
test_add_cat_derefargs() {
test_expect_success "create and hash zero length file" '
touch zero-length-file &&
ZEROHASH=$(ipfs add -q -n zero-length-file)
'
test_expect_success "create symlink and add with dereferenced arguments" '
ln -s zero-length-file symlink-to-zero &&
HASH=$(ipfs add -q -n --dereference-args symlink-to-zero) &&
test $HASH = $ZEROHASH
'
}
test_add_cat_expensive() {
ADD_FLAGS="$1"
HASH="$2"
test_expect_success EXPENSIVE "generate 100MB file using go-random" '
random 104857600 42 >mountdir/bigfile
'
test_expect_success EXPENSIVE "sha1 of the file looks ok" '
echo "1114885b197b01e0f7ff584458dc236cb9477d2e736d" >sha1_expected &&
multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
test_cmp sha1_expected sha1_actual
'
test_expect_success EXPENSIVE "ipfs add $ADD_FLAGS bigfile succeeds" '
ipfs add $ADD_FLAGS mountdir/bigfile >actual
'
test_expect_success EXPENSIVE "ipfs add bigfile output looks good" '
echo "added $HASH bigfile" >expected &&
test_cmp expected actual
'
test_expect_success EXPENSIVE "ipfs cat succeeds" '
ipfs cat "$HASH" | multihash -a=sha1 -e=hex >sha1_actual
'
test_expect_success EXPENSIVE "ipfs cat output looks good" '
ipfs cat "$HASH" >actual &&
test_cmp mountdir/bigfile actual
'
test_expect_success EXPENSIVE "ipfs cat output hashed looks good" '
echo "1114885b197b01e0f7ff584458dc236cb9477d2e736d" >sha1_expected &&
test_cmp sha1_expected sha1_actual
'
test_expect_success FUSE,EXPENSIVE "cat ipfs/bigfile succeeds" '
cat "ipfs/$HASH" | multihash -a=sha1 -e=hex >sha1_actual
'
test_expect_success FUSE,EXPENSIVE "cat ipfs/bigfile looks good" '
test_cmp sha1_expected sha1_actual
'
}
test_add_named_pipe() {
err_prefix=$1
test_expect_success "useful error message when adding a named pipe" '
mkfifo named-pipe &&
test_expect_code 1 ipfs add named-pipe 2>actual &&
STAT=$(generic_stat named-pipe) &&
rm named-pipe &&
grep "Error: unrecognized file type for named-pipe: $STAT" actual &&
grep USAGE actual &&
grep "ipfs add" actual
'
test_expect_success "useful error message when recursively adding a named pipe" '
mkdir -p named-pipe-dir &&
mkfifo named-pipe-dir/named-pipe &&
STAT=$(generic_stat named-pipe-dir/named-pipe) &&
test_expect_code 1 ipfs add -r named-pipe-dir 2>actual &&
printf "Error:$err_prefix unrecognized file type for named-pipe-dir/named-pipe: $STAT\n" >expected &&
rm named-pipe-dir/named-pipe &&
rmdir named-pipe-dir &&
test_cmp expected actual
'
}
test_add_pwd_is_symlink() {
test_expect_success "ipfs add -r adds directory content when ./ is symlink" '
mkdir hellodir &&
echo "World" > hellodir/world &&
ln -s hellodir hellolink &&
( cd hellolink &&
ipfs add -r . > ../actual ) &&
grep "added Qma9CyFdG5ffrZCcYSin2uAETygB25cswVwEYYzwfQuhTe" actual &&
rm -r hellodir
'
}
test_launch_ipfs_daemon_and_mount
test_expect_success "'ipfs add --help' succeeds" '
ipfs add --help >actual
'
test_expect_success "'ipfs add --help' output looks good" '
egrep "ipfs add.*<path>" actual >/dev/null ||
test_fsh cat actual
'
test_expect_success "'ipfs help add' succeeds" '
ipfs help add >actual
'
test_expect_success "'ipfs help add' output looks good" '
egrep "ipfs add.*<path>" actual >/dev/null ||
test_fsh cat actual
'
test_expect_success "'ipfs cat --help' succeeds" '
ipfs cat --help >actual
'
test_expect_success "'ipfs cat --help' output looks good" '
egrep "ipfs cat.*<ipfs-path>" actual >/dev/null ||
test_fsh cat actual
'
test_expect_success "'ipfs help cat' succeeds" '
ipfs help cat >actual
'
test_expect_success "'ipfs help cat' output looks good" '
egrep "ipfs cat.*<ipfs-path>" actual >/dev/null ||
test_fsh cat actual
'
test_add_cat_file
test_expect_success "ipfs cat succeeds with stdin opened (issue #1141)" '
cat mountdir/hello.txt | while read line; do ipfs cat "$HASH" >actual || exit; done
'
test_expect_success "ipfs cat output looks good" '
cat mountdir/hello.txt >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat accept hash from built input" '
echo "$HASH" | ipfs cat >actual
'
test_expect_success "ipfs cat output looks good" '
test_cmp expected actual
'
test_expect_success FUSE "cat ipfs/stuff succeeds" '
cat "ipfs/$HASH" >actual
'
test_expect_success FUSE "cat ipfs/stuff looks good" '
test_cmp expected actual
'
test_expect_success "'ipfs add -q' succeeds" '
echo "Hello Venus!" >mountdir/venus.txt &&
ipfs add -q mountdir/venus.txt >actual
'
test_expect_success "'ipfs add -q' output looks good" '
HASH="QmU5kp3BH3B8tnWUU2Pikdb2maksBNkb92FHRr56hyghh4" &&
echo "$HASH" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs add -q' with stdin input succeeds" '
echo "Hello Jupiter!" | ipfs add -q >actual
'
test_expect_success "'ipfs add -q' output looks good" '
HASH="QmUnvPcBctVTAcJpigv6KMqDvmDewksPWrNVoy1E1WP5fh" &&
echo "$HASH" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs cat' succeeds" '
ipfs cat "$HASH" >actual
'
test_expect_success "ipfs cat output looks good" '
echo "Hello Jupiter!" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs add' with stdin input succeeds" '
printf "Hello Neptune!\nHello Pluton!" | ipfs add >actual
'
test_expect_success "'ipfs add' output looks good" '
HASH="QmZDhWpi8NvKrekaYYhxKCdNVGWsFFe1CREnAjP1QbPaB3" &&
echo "added $HASH $HASH" >expected &&
test_cmp expected actual
'
test_expect_success "'ipfs cat' with built input succeeds" '
echo "$HASH" | ipfs cat >actual
'
test_expect_success "ipfs cat with built input output looks good" '
printf "Hello Neptune!\nHello Pluton!" >expected &&
test_cmp expected actual
'
add_directory() {
EXTRA_ARGS=$1
test_expect_success "'ipfs add -r $EXTRA_ARGS' succeeds" '
mkdir mountdir/planets &&
echo "Hello Mars!" >mountdir/planets/mars.txt &&
echo "Hello Venus!" >mountdir/planets/venus.txt &&
ipfs add -r $EXTRA_ARGS mountdir/planets >actual
'
test_expect_success "'ipfs add -r $EXTRA_ARGS' output looks good" '
echo "added $MARS planets/mars.txt" >expected &&
echo "added $VENUS planets/venus.txt" >>expected &&
echo "added $PLANETS planets" >>expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat accept many hashes from built input" '
{ echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
'
test_expect_success "ipfs cat output looks good" '
cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat accept many hashes as args" '
ipfs cat "$MARS" "$VENUS" >actual
'
test_expect_success "ipfs cat output looks good" '
test_cmp expected actual
'
test_expect_success "ipfs cat with both arg and stdin" '
echo "$MARS" | ipfs cat "$VENUS" >actual
'
test_expect_success "ipfs cat output looks good" '
cat mountdir/planets/venus.txt >expected &&
test_cmp expected actual
'
test_expect_success "ipfs cat with two args and stdin" '
echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
'
test_expect_success "ipfs cat output looks good" '
cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
test_cmp expected actual
'
test_expect_success "ipfs add --quieter succeeds" '
ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
'
test_expect_success "ipfs add --quieter returns only one correct hash" '
echo "$PLANETS" > expected &&
test_cmp expected actual
'
test_expect_success "cleanup" '
rm -r mountdir/planets
'
}
PLANETS="QmWSgS32xQEcXMeqd3YPJLrNBLSdsfYCep2U7CFkyrjXwY"
MARS="QmPrrHqJzto9m7SyiRzarwkqPcCSsKR2EB1AyqJfe8L8tN"
VENUS="QmU5kp3BH3B8tnWUU2Pikdb2maksBNkb92FHRr56hyghh4"
add_directory
PLANETS="QmfWfQfKCY5Ukv9peBbxM5vqWM9BzmqUSXvdCgjT2wsiBT"
MARS="zb2rhZdTkQNawVajsTNiYc9cTPHqgLdJVvBRkZok9RjkgQYRU"
VENUS="zb2rhn6TGvnUaMAg4VV4y9HVx5W42HihcH4jsyrDv8mkepFqq"
add_directory '--raw-leaves'
PLANETS="zdj7Wnbun6P41Z5ddTkNvZaDTmQ8ZLdiKFcJrL9sV87rPScMP"
MARS="zb2rhZdTkQNawVajsTNiYc9cTPHqgLdJVvBRkZok9RjkgQYRU"
VENUS="zb2rhn6TGvnUaMAg4VV4y9HVx5W42HihcH4jsyrDv8mkepFqq"
add_directory '--cid-version=1'
PLANETS="zdj7WiC51v78BjBcmZR7uuBvmDWxSn5EDr5MiyTwE18e8qvb7"
MARS="zdj7WWx6fGNrNGkdpkuTAxCjKbQ1pPtarqA6VQhedhLTZu34J"
VENUS="zdj7WbB1BUF8WejmVpQCmMLd1RbPnxJtvAj1Lep6eTmXRFbrz"
add_directory '--cid-version=1 --raw-leaves=false'
PLANETS="zDMZof1kqxDAx9myQbXsyWwyWP9qRPsXsWH7XuTz6isT7Rh1S6nM"
MARS="zCT5htkdz1ZBHYVQXFQn51ngPXLVqaHSWoae87V1d6e9qWpSAjXw"
VENUS="zCT5htke5JcdoMM4WhmUKXWf2QC3TnQToqGZHH1WsZERv6kPhFPg"
add_directory '--hash=blake2b-256'
test_expect_success "'ipfs add -rn' succeeds" '
mkdir -p mountdir/moons/jupiter &&
mkdir -p mountdir/moons/saturn &&
echo "Hello Europa!" >mountdir/moons/jupiter/europa.txt &&
echo "Hello Titan!" >mountdir/moons/saturn/titan.txt &&
echo "hey youre no moon!" >mountdir/moons/mercury.txt &&
ipfs add -rn mountdir/moons >actual
'
test_expect_success "'ipfs add -rn' output looks good" '
MOONS="QmVKvomp91nMih5j6hYBA8KjbiaYvEetU2Q7KvtZkLe9nQ" &&
EUROPA="Qmbjg7zWdqdMaK2BucPncJQDxiALExph5k3NkQv5RHpccu" &&
JUPITER="QmS5mZddhFPLWFX3w6FzAy9QxyYkaxvUpsWCtZ3r7jub9J" &&
SATURN="QmaMagZT4rTE7Nonw8KGSK4oe1bh533yhZrCo1HihSG8FK" &&
TITAN="QmZzppb9WHn552rmRqpPfgU5FEiHH6gDwi3MrB9cTdPwdb" &&
MERCURY="QmUJjVtnN8YEeYcS8VmUeWffTWhnMQAkk5DzZdKnPhqUdK" &&
echo "added $EUROPA moons/jupiter/europa.txt" >expected &&
echo "added $MERCURY moons/mercury.txt" >>expected &&
echo "added $TITAN moons/saturn/titan.txt" >>expected &&
echo "added $JUPITER moons/jupiter" >>expected &&
echo "added $SATURN moons/saturn" >>expected &&
echo "added $MOONS moons" >>expected &&
test_cmp expected actual
'
test_expect_success "go-random is installed" '
type random
'
test_add_cat_5MB "" "QmSr7FqYkxYWGoSfy8ZiaMWQ5vosb18DQGCzjwEQnVHkTb"
test_add_cat_5MB --raw-leaves "QmbdLHCmdi48eM8T7D67oXjA1S2Puo8eMfngdHhdPukFd6"
# note: the specified hash implies that internal nodes are stored
# using CidV1 and leaves are stored using raw blocks
test_add_cat_5MB --cid-version=1 "zdj7WiiaedqVBXjX4SNqx3jfuZideDqdLYnDzCDJ66JDMK9o2"
# note: the specified hash implies that internal nodes are stored
# using CidV1 and leaves are stored using CidV1 but using the legacy
# format (i.e. not raw)
test_add_cat_5MB '--cid-version=1 --raw-leaves=false' "zdj7WfgEsj897BBZj2mcfsRLhaPZcCixPV2G7DkWgF1Wdr64P"
# note: --hash=blake2b-256 implies --cid-version=1 which implies --raw-leaves=true
# the specified hash represents the leaf nodes stored as raw leaves and
# encoded with the blake2b-256 hash funtion
test_add_cat_5MB '--hash=blake2b-256' "zDMZof1kuxn7ebvKyvmkYLPvocSvFYxxAWT1yQBN1wWiXXr7w5mY"
# the specified hash represents the leaf nodes stored as protoful nodes and
# encoded with the blake2b-256 hash funtion
test_add_cat_5MB '--hash=blake2b-256 --raw-leaves=false' "zDMZof1krz3SFTyhboRyWZyUP2qNgVdn9wjtaX211aHJ8WgeyT9v"
test_add_cat_expensive "" "QmU9SWAPPmNEKZB8umYMmjYvN7VyHqABNvdA6GUi4MMEz3"
# note: the specified hash implies that internal nodes are stored
# using CidV1 and leaves are stored using raw blocks
test_add_cat_expensive "--cid-version=1" "zdj7WcatQrtuE4WMkS4XsfsMixuQN2po4irkYhqxeJyW1wgCq"
# note: --hash=blake2b-256 implies --cid-version=1 which implies --raw-leaves=true
# the specified hash represents the leaf nodes stored as raw leaves and
# encoded with the blake2b-256 hash funtion
test_add_cat_expensive '--hash=blake2b-256' "zDMZof1kwndounDzQCANUHjiE3zt1mPEgx7RE3JTHoZrRRa79xcv"
test_add_named_pipe " Post http://$API_ADDR/api/v0/add?chunker=size-262144&encoding=json&hash=sha2-256&inline-limit=32&pin=true&progress=true&recursive=true&stream-channels=true:"
test_add_pwd_is_symlink
test_add_cat_raw
test_expect_success "ipfs add --cid-version=9 fails" '
echo "context" > afile.txt &&
test_must_fail ipfs add --cid-version=9 afile.txt 2>&1 | tee add_out &&
grep -q "unknown CID version" add_out
'
test_kill_ipfs_daemon
# should work offline
test_add_cat_file
test_add_cat_raw
test_expect_success "ipfs add --only-hash succeeds" '
echo "unknown content for only-hash" | ipfs add --only-hash -q > oh_hash
'
test_add_cat_derefargs
#TODO: this doesn't work when online hence separated out from test_add_cat_file
test_expect_success "ipfs cat file fails" '
test_must_fail ipfs cat $(cat oh_hash)
'
test_add_named_pipe ""
test_add_pwd_is_symlink
# Test daemon in offline mode
test_launch_ipfs_daemon --offline
test_add_cat_file
test_kill_ipfs_daemon
test_done