t0090-get.sh 3.1 KB
Newer Older
Matt Bell's avatar
Matt Bell committed
1 2 3 4 5 6 7 8 9 10 11 12
#!/bin/sh
#
# Copyright (c) 2015 Matt Bell
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test get command"

. lib/test-lib.sh

test_init_ipfs

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
# we use a function so that we can run it both offline + online
test_get_cmd() {

	test_expect_success "'ipfs get --help' succeeds" '
	  ipfs get --help >actual
	'
	
	test_expect_success "'ipfs get --help' output looks good" '
	  egrep "ipfs get.*<ipfs-path>" actual >/dev/null ||
	  test_fsh cat actual
	'
	
	test_expect_success "ipfs get succeeds" '
	  echo "Hello Worlds!" >data &&
	  HASH=`ipfs add -q data` &&
	  ipfs get "$HASH" >actual
	'
	
	test_expect_success "ipfs get output looks good" '
	  printf "%s\n\n" "Saving file(s) to $HASH" >expected &&
	  test_cmp expected actual
	'
	
	test_expect_success "ipfs get file output looks good" '
	  test_cmp "$HASH" data
	'
	
	test_expect_success "ipfs get errors when trying to overwrite a file" '
	  test_must_fail ipfs get "$HASH" >actual &&
	  rm "$HASH"
	'
	
	test_expect_success "ipfs get -a succeeds" '
	  ipfs get "$HASH" -a >actual
	'
	
	test_expect_success "ipfs get -a output looks good" '
	  printf "%s\n\n" "Saving archive to $HASH.tar" >expected &&
	  test_cmp expected actual
	'
	
Jeromy's avatar
Jeromy committed
54 55
	# TODO: determine why this fails
	test_expect_failure "ipfs get -a archive output is valid" '
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
	  tar -xf "$HASH".tar &&
	  test_cmp "$HASH" data &&
	  rm "$HASH".tar &&
	  rm "$HASH"
	'
	
	test_expect_success "ipfs get -a -C succeeds" '
	  ipfs get "$HASH" -a -C >actual
	'
	
	test_expect_success "ipfs get -a -C output looks good" '
	  printf "%s\n\n" "Saving archive to $HASH.tar.gz" >expected &&
	  test_cmp expected actual
	'
	
	# TODO(mappum)
	test_expect_failure "gzipped tar archive output is valid" '
	  tar -zxf "$HASH".tar.gz &&
	  test_cmp "$HASH" data &&
	  rm "$HASH".tar.gz &&
	  rm "$HASH"
	'
	
	test_expect_success "ipfs get succeeds (directory)" '
	  mkdir -p dir &&
	  touch dir/a &&
	  mkdir -p dir/b &&
	  echo "Hello, Worlds!" >dir/b/c &&
	  HASH2=`ipfs add -r -q dir | tail -n 1` &&
	  ipfs get "$HASH2" >actual
	'
	
	test_expect_success "ipfs get output looks good (directory)" '
	  printf "%s\n\n" "Saving file(s) to $HASH2" >expected &&
	  test_cmp expected actual
	'
	
	test_expect_success "ipfs get output is valid (directory)" '
	  test_cmp dir/a "$HASH2"/a &&
	  test_cmp dir/b/c "$HASH2"/b/c &&
	  rm -r "$HASH2"
	'
	
	test_expect_success "ipfs get -a -C succeeds (directory)" '
	  ipfs get "$HASH2" -a -C >actual
	'
	
	test_expect_success "ipfs get -a -C output looks good (directory)" '
	  printf "%s\n\n" "Saving archive to $HASH2.tar.gz" >expected &&
	  test_cmp expected actual
	'
	
	# TODO(mappum)
	test_expect_failure "gzipped tar archive output is valid (directory)" '
	  tar -zxf "$HASH2".tar.gz &&
	  test_cmp dir/a "$HASH2"/a &&
	  test_cmp dir/b/c "$HASH2"/b/c &&
	  rm -r "$HASH2"
	'
rht's avatar
rht committed
115 116 117 118 119 120

    test_expect_success "ipfs get ../.. should fail" '
      echo "Error: invalid ipfs ref path" >expected &&
      test_must_fail ipfs get ../.. 2>actual &&
      test_cmp expected actual
    '
121 122 123 124 125 126 127 128
}

# should work offline
test_get_cmd

# should work online
test_launch_ipfs_daemon
test_get_cmd
Matt Bell's avatar
Matt Bell committed
129 130 131
test_kill_ipfs_daemon

test_done