diff --git a/test/sharness/lib/test-lib.sh b/test/sharness/lib/test-lib.sh index d5ce02eba..4f60813ca 100644 --- a/test/sharness/lib/test-lib.sh +++ b/test/sharness/lib/test-lib.sh @@ -394,6 +394,27 @@ file_size() { $_STAT "$1" } +directory_size() { + local total=0 + local fsize=0 + local res=0 + find "$1" -type f | ( while read fname; do + fsize=$(file_size "$fname") + res=$? + if ! test $? -eq 0; then + echo "failed to get filesize" >&2 + return $res + fi + total=$(expr "$total" + "$fsize") + res=$? + if ! test $? -eq 0; then + echo "filesize not a number: $fsize" >&2 + return $res + fi + done + echo "$total" ) # do not remove this subshell +} + test_check_peerid() { peeridlen=$(echo "$1" | tr -dC "[:alnum:]" | wc -c | tr -d " ") && test "$peeridlen" = "46" || { diff --git a/test/sharness/t0080-repo.sh b/test/sharness/t0080-repo.sh index 25c5ce714..0147f4ea9 100755 --- a/test/sharness/t0080-repo.sh +++ b/test/sharness/t0080-repo.sh @@ -48,15 +48,17 @@ test_expect_success "'ipfs pin rm' output looks good" ' test_cmp expected1 actual1 ' -test_expect_failure "ipfs repo gc fully reverse ipfs add" ' +test_expect_success "ipfs repo gc fully reverse ipfs add" ' ipfs repo gc && random 100000 41 >gcfile && - disk_usage "$IPFS_PATH/blocks" >expected && - hash=`ipfs add -q gcfile` && + expected="$(directory_size "$IPFS_PATH/blocks")" && + find "$IPFS_PATH/blocks" -type f && + hash=$(ipfs add -q gcfile) && ipfs pin rm -r $hash && ipfs repo gc && - disk_usage "$IPFS_PATH/blocks" >actual && - test_cmp expected actual + actual=$(directory_size "$IPFS_PATH/blocks") && + { test "$actual" -eq "$expected" || test_fsh echo "$actual != $expected"; } && + { test "$actual" -gt "0" || test_fsh echo "not($actual > 0)"; } ' test_expect_success "file no longer pinned" '