tests: introduce require_for_model function
[rainbows.git] / t / test-lib.sh
blob29b57f733267690dddcde68225811a6654033dfa
1 #!/bin/sh
2 # Copyright (c) 2009 Rainbows! developers
4 set -o pipefail >/dev/null 2>&1 || : # non-POSIX, but useful in ksh/bash
5 set -e
6 set -u
7 T=$(basename $0)
8 ruby="${ruby-ruby}"
10 # ensure a sane environment
11 TZ=UTC LC_ALL=C LANG=C
12 export LANG LC_ALL TZ
13 unset CDPATH
15 die () {
16 echo >&2 "$@"
17 exit 1
20 _TEST_RM_LIST=""
21 trap 'rm -f $_TEST_RM_LIST' 0
22 PATH=$PWD/bin:$PATH
23 export PATH
25 test -x $PWD/bin/unused_listen || die "must be run in 't' directory"
27 wait_for_pid () {
28 path="$1"
29 nr=30
30 while ! test -s "$path" && test $nr -gt 0
32 nr=$(($nr - 1))
33 sleep 1
34 done
37 require_revactor () {
38 if ! $ruby -rrevactor -e "puts Revactor::VERSION" >/dev/null 2>&1
39 then
40 echo >&2 "skipping $T since we don't have Revactor"
41 exit 0
45 require_rev() {
46 if ! $ruby -rrev -e "puts Rev::VERSION" >/dev/null 2>&1
47 then
48 echo >&2 "skipping $T since we don't have Rev"
49 exit 0
53 require_for_model () {
54 case $model in
55 Rev) require_rev ;;
56 Revactor) require_revactor ;;
57 esac
60 # given a list of variable names, create temporary files and assign
61 # the pathnames to those variables
62 rtmpfiles () {
63 for id in "$@"
65 _tmp=$(mktemp -t rainbows.$$.$id.XXXXXXXX)
66 eval "$id=$_tmp"
67 _TEST_RM_LIST="$_TEST_RM_LIST $_tmp"
68 done
71 dbgcat () {
72 id=$1
73 eval '_file=$'$id
74 echo "==> $id <=="
75 sed -e "s/^/$id:/" < $_file