files="src/util/files -e $econfig"
fairland="src/util/fairland -e $econfig"
+# GNU libc memory allocation checking, see mallopt(3)
+# $RANDOM isn't portable
+malloc_perturb=${EMPIRE_CHECK_MALLOC_PERTURB:-$(perl -e 'print int(rand(255))')}
+env="MALLOC_CHECK_=3 MALLOC_PERTURB_=$malloc_perturb"
+
empthread=`sed -n 's/empthread *:= *\(.*\)/\1/p' <GNUmakefile`
warn_empthread=y
{
rm -rf sandbox
mkdir -p sandbox/etc/empire sandbox/share/empire/builtin $data
+ echo $malloc_perturb >sandbox/malloc-perturb
touch $schedule
cat >$econfig <<EOF
data "../../var/empire"
GODNEWS 0
running_test_suite 1
EOF
- cp `git ls-files "$srcdir"/src/lib/global | uniq | grep '\.config$'` sandbox/share/empire/builtin
+ cp `perl "$srcdir"/src/scripts/ls-sources.pl "$srcdir"/src/lib/global '\.config$'` sandbox/share/empire/builtin
}
copy_tables()
done
}
+# sed -i isn't portable...
+sed_i()
+{
+ local script="$1"
+ shift
+ for i
+ do sed "$script" "$i" >sandbox/$$ && mv sandbox/$$ "$i"
+ done
+}
+
customize()
{
local key
case $key in
big-city)
copy_tables sect
- sed -i '/"c" .* norm/d;/^#.*"c" .* cana/s/^#/ /' sandbox/etc/empire/sect.config
+ sed_i '/"c" .* "capital"/d;/^#.*"c" .* "city"/s/^#/ /;/"c" .* norm/d;/^#.*"c" .* cana/s/^#/ /' sandbox/etc/empire/sect.config
;;
+ trade-ship)
+ copy_tables ship
+ sed_i '/"ts trade ship"//^#/ /' sandbox/etc/empire/ship.config
esac
done
echo "custom_tables \"`cd sandbox/etc/empire && echo *.config`\"" >>$econfig
local name=$1 ret
shift
set +e
- "$@" >>sandbox/$name.out 2>>sandbox/$name.err
+ env $env "$@" >>sandbox/$name.out 2>>sandbox/$name.err
ret=$?
set -e
echo $ret >>sandbox/$name.status
check_empthread
pid=
- src/server/emp_server -e $econfig -R 1 -s -E crash-dump
+ env $env src/server/emp_server -e $econfig -R 1 -s -E crash-dump
timeout=$((`now`+5))
until pid=`cat $pidfile 2>/dev/null` && [ -n "$pid" ]
do
feed_dir()
{
- feed_files `git ls-files "$@" | uniq | grep '/[0-9][0-9]-[^/]*$'`
+ feed_files `perl "$srcdir"/src/scripts/ls-sources.pl "$@" '/[0-9][0-9]-[^/]*$'`
}
begin_test()
cmp_out1()
{
- local i=$1 exp="${2-$testdir/${1##*/}}"
+ local i=$1 master="${2-$testdir/${1##*/}}"
+ local exp="$master"
local act="sandbox/$i"
local nrm="sandbox/normalized-${i##*/}"
[ ! -e "$act" ] && return
exp=/dev/null
;;
- *.status) exp=sandbox/ok.status; echo 0 >sandbox/ok.status ;;
- *) exp=/dev/null ;;
esac
fi
elif [ "$EMPIRE_CHECK_ACCEPT" ]
then
echo "$i CHANGED"
- cp "$nrm" "$exp"
+ cp "$nrm" "$master"
else
failed=y
echo "$i FAIL"