summaryrefslogtreecommitdiff
path: root/test/main
blob: 56e6e8d8182fab36696042cf08a1faaa42ca932c (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
#!/usr/bin/env zsh
unset -m 'GIT_*'
setopt err_exit

trap "print -P '\n%N:%i: %B%F{red}Test faild!%F{default}%b'" ZERR

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)

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

source $tests/setup

echo "# bootstrapping PKG_DIR"
cd $test_home
export HOME=$test_home
$test_proot/core/include/bootstrap $test_proot $test_pdir

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

echo "# pkg list local"
stringcmp "core" "$(pkg list)"
stringcmp "core" "$(pkg list local)"

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

echo "# pkg list all"
stringcmp "core\nra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(pkg list all)"

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

echo "# pkg add (already installed)"
! pkg add core

for conf_origin in 0 1; {
	echo "## GIT_USE_ORIGIN=$conf_origin"
	echo "GIT_USE_ORIGIN=$conf_origin" >> $test_home/.config/pkg/pkg.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}'