summaryrefslogtreecommitdiff
path: root/test/main
blob: 3544ed086f0e89c5c786a060a272aaf07fb2ff6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
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
54
55
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
#!/usr/bin/env zsh
unset -m 'GIT_*' 'XDG_*'
setopt err_exit

trap "print -P '\n%N:%i: %B%F{red}Test faild!%F{default}%b'" ZERR
alias ct='ct --quiet --no-colours'

source test/documentation

function stringcmp {
	diff -u <(echo $1) <(echo $2)
}

tests=$PWD/test
test_pdir=$(mktemp -dt pkgdir.XXXXXX)
test_proot=$(mktemp -dt pkgroot.XXXXXX)
test_home=$(mktemp -dt pkghome.XXXXXX)

export PATH=$PWD/bin:$PATH

cat << meow
test directories:
	PKG_DIR = $test_pdir
	PKG_ROOT = $test_proot
	HOME = $test_home
meow

cd $test_home
export HOME=$test_home
source $tests/checklinks
(source $tests/setup)

echo "# bootstrapping PKG_DIR"
$test_proot/caretaker/include/bootstrap $test_proot $test_pdir

echo "# checking for success"
[[ -e $test_home/.config/caretaker/caretaker.conf ]]
[[ -d $test_proot/caretaker ]]
[[ -d $test_pdir/caretaker ]]
[[ -L $test_home/bin/ct ]]
[[ -L $test_home/bin/checklinks ]]
[[ -x $(readlink $test_home/bin/ct) ]]
[[ -x $(readlink $test_home/bin/checklinks) ]]
[[ -e $test_pdir/.collected/man/man1/ct.1 ]]
[[ -e $test_pdir/.collected/man/man5/caretaker.conf.5 ]]
[[ -e $test_pdir/.collected/man/man7/caretaker.7 ]]

echo "# ct list local"
stringcmp "caretaker" "$(ct list)"
stringcmp "caretaker" "$(ct list local)"

echo "# ct list not-installed"
stringcmp "ra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(ct list not-installed)"

echo "# ct list all"
stringcmp "caretaker\nra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(ct list all)"

echo "# ct add (no such repo)"
! ct add weltfrieden

echo "# ct add (already installed)"
! ct add caretaker

for conf_origin in 0 1; {
	echo "## GIT_USE_ORIGIN=$conf_origin"
	echo "GIT_USE_ORIGIN=$conf_origin" >> $test_home/.config/caretaker/caretaker.conf
	for repo in ra ra-bare; {
		file=${repo%-*}
		if [[ $repo == *-bare ]] {
			echo "## bare repository"
			complement=$file
		} else {
			echo "## non-bare repository"
			complement=${repo}-bare
		}
		source $tests/add
		source $tests/prereqs
		cd $test_pdir/$repo
		source $tests/push
		cd $test_pdir
		source $tests/pull-prepare
		source $tests/remove
	}
}

rm -rf $test_pdir $test_proot $test_home

print -P '%F{green} test passed%F{default}'