#!/usr/bin/env zsh 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) } test_pdir=$(mktemp -dt pkgdir.XXXXXX) test_proot=$(mktemp -dt pkgroot.XXXXXX) test_home=$(mktemp -dt pkghome.XXXXXX) cat << meow test directories: PDIR = $test_pdir PKG_ROOT = $test_proot HOME = $test_home meow echo "# setting up PKG_ROOT" cd $test_proot git clone ${1-git://git.tabularazor.org/~derf/pkg} core cp core/include/pkglist pkglist for repo in ra rb rc; ( mkdir $repo cd $repo git init touch foo mkdir bin touch bin/$repo mkdir -p man/2 echo "=head1 WASTED SPACE\n\nhuhu" > man/2/$repo chmod 755 bin/$repo git add . git commit -m 'initial commit' cd .. mkdir ${repo}-bare cd ${repo}-bare git --bare init cd ../$repo git push ../${repo}-bare master ) echo "# bootstrapping PDIR" cd $test_home export HOME=$test_home $test_proot/core/include/bootstrap $test_proot $test_pdir echo "# checking for success" [[ -e $test_home/.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 repo in ra ra-bare; { file=${repo%-*} if [[ $repo == *-bare ]] { echo "## bare repository" complement=$file } else { echo "## non-bare repository" complement=${repo}-bare } echo "# pkg add (ok)" pkg add $repo [[ -e $test_pdir/$repo/foo ]] [[ -d $test_pdir/$repo/.git ]] echo "# pkg add (already installed)" ! pkg add $repo echo "# populate_collected" [[ -L $test_home/bin/$file ]] [[ -x $(readlink $test_home/bin/$file) ]] [[ -e $test_pdir/.collected/man/man2/$file.2 ]] repeat 2 { echo "# pkg list" stringcmp "core\n$repo" "$(pkg list local)" stringcmp "$complement\nrb\nrb-bare\nrc\nrc-bare" "$(pkg list not-installed)" stringcmp "core\nra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(pkg list remote)" pkg update } echo "# pkg remove (not installed/nonexistent)" ! pkg remove suckage ! pkg remove rb echo "# pkg remove (ok)" pkg remove $repo echo "# genocide_collected (~/bin)" [[ ! -L $test_home/bin/$file ]] [[ ! -e $test_pdir/.collected/man/man2/$file.2 ]] repeat 2 { echo "# pkg list" stringcmp "core" "$(pkg list local)" stringcmp "ra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(pkg list not-installed)" stringcmp "core\nra\nra-bare\nrb\nrb-bare\nrc\nrc-bare" "$(pkg list remote)" pkg update } } rm -rf $test_pdir $test_proot $test_home print -P '%F{green} test passed%F{default}'