test-lib.sh 1.37 KB
Newer Older
1 2 3 4 5 6 7 8
# Test framework for go-ipfs
#
# Copyright (c) 2014 Christian Couder
# MIT Licensed; see the LICENSE file in this repository.
#
# We are using sharness (https://github.com/mlafeldt/sharness)
# which was extracted from the Git test framework.

9
. ./test-sharness-config.sh
10 11 12 13 14 15 16 17 18

. "$SHARNESS_LIB" || {
	echo >&2 "Cannot source: $SHARNESS_LIB"
	echo >&2 "Please check Sharness installation."
	exit 1
}

# Please put go-ipfs specific shell functions below

19 20 21 22 23 24 25 26 27
test_cmp_repeat_10_sec() {
	for i in 1 2 3 4 5 6 7 8 9 10
	do
		test_cmp "$1" "$2" && return
		sleep 1
	done
	test_cmp "$1" "$2"
}

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
test_launch_ipfs_mount() {

	test_expect_success "ipfs init succeeds" '
		export IPFS_DIR="$(pwd)/.go-ipfs" &&
		ipfs init -b=2048
	'

	test_expect_success "prepare config" '
		mkdir mountdir ipfs ipns &&
		ipfs config Mounts.IPFS "$(pwd)/ipfs" &&
		ipfs config Mounts.IPNS "$(pwd)/ipns"
	'

	test_expect_success "ipfs mount succeeds" '
		ipfs mount mountdir >actual &
	'

	test_expect_success "ipfs mount output looks good" '
		IPFS_PID=$! &&
		echo "mounting ipfs at $(pwd)/ipfs" >expected &&
		echo "mounting ipns at $(pwd)/ipns" >>expected &&
49
		test_cmp_repeat_10_sec expected actual
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
	'
}

test_kill_ipfs_mount() {

	test_expect_success "ipfs mount is still running" '
		kill -0 $IPFS_PID
	'

	test_expect_success "ipfs mount can be killed" '
		kill $IPFS_PID &&
		sleep 1 &&
		! kill -0 $IPFS_PID 2>/dev/null
	'
}