2011-10-13 00:46:23 +04:00
# Source library for shell script tests
#
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
#
2011-11-10 22:17:04 +04:00
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
2011-10-13 00:46:23 +04:00
#
2011-11-10 22:17:04 +04:00
# This library is distributed in the hope that it will be useful,
2011-10-13 00:46:23 +04:00
# but WITHOUT ANY WARRANTY; without even the implied warranty of
2011-11-10 22:17:04 +04:00
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
2011-10-13 00:46:23 +04:00
#
2011-11-10 22:17:04 +04:00
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
2011-10-13 00:46:23 +04:00
2011-11-01 04:24:38 +04:00
cd ` dirname $0 `
SRCDIR = ` pwd `
cd -
2011-10-13 00:46:23 +04:00
TMPDIR = ${ TMPDIR :- /tmp }
export TMPDIR
2011-10-18 22:44:48 +04:00
test_tmpdir = ` mktemp -d " $TMPDIR /ostree-tests.XXXXXXXXXX " `
2011-10-13 00:46:23 +04:00
cd " $test_tmpdir "
touch " $test_tmpdir /.test $$ "
2011-11-04 23:58:32 +04:00
export G_DEBUG = fatal-warnings
2011-11-09 14:28:13 +04:00
if test -n " ${ OT_TESTS_DEBUG } " ; then
set -x
fi
2012-05-04 18:04:32 +04:00
if test -n " $OT_TESTS_VALGRIND " ; then
CMD_PREFIX = " env G_SLICE=always-malloc valgrind -q --leak-check=full --num-callers=30 --suppressions= ${ SRCDIR } /ostree-valgrind.supp "
fi
2011-10-13 00:46:23 +04:00
die ( ) {
2011-10-27 17:21:07 +04:00
if test -z " $OT_TESTS_SAVE_TEMPS " ; then
2011-10-15 05:08:09 +04:00
test -f " $test_tmpdir /.test $$ " && rm -rf " $test_tmpdir "
else
echo " Temporary files saved in $test_tmpdir "
fi
2011-10-13 00:46:23 +04:00
}
2011-11-01 16:49:01 +04:00
assert_streq ( ) {
2011-11-04 20:31:40 +04:00
test " $1 " = " $2 " || ( echo 1>& 2 " $1 != $2 " ; exit 1)
2011-11-01 16:49:01 +04:00
}
2011-10-15 09:22:42 +04:00
assert_has_file ( ) {
2011-11-04 20:31:40 +04:00
test -f " $1 " || ( echo 1>& 2 " Couldn't find ' $1 ' " ; exit 1)
2011-10-15 17:56:31 +04:00
}
assert_not_has_file ( ) {
if test -f " $1 " ; then
2011-11-04 20:31:40 +04:00
echo 1>& 2 " File ' $1 ' exists " ; exit 1
2011-10-15 17:56:31 +04:00
fi
2011-10-15 09:22:42 +04:00
}
2011-10-15 21:07:26 +04:00
assert_file_has_content ( ) {
2011-12-19 02:35:30 +04:00
if ! grep -q -e " $2 " " $1 " ; then
2011-11-04 20:31:40 +04:00
echo 1>& 2 " File ' $1 ' doesn't match regexp ' $2 ' " ; exit 1
2011-10-15 21:07:26 +04:00
fi
}
2011-11-01 06:42:14 +04:00
setup_test_repository ( ) {
mode = $1
shift
2011-10-15 08:45:07 +04:00
2011-11-01 06:42:14 +04:00
oldpwd = ` pwd `
2011-10-15 09:22:42 +04:00
2011-11-09 03:11:42 +04:00
cd ${ test_tmpdir }
mkdir repo
cd repo
ot_repo = "--repo=`pwd`"
2012-05-04 18:04:32 +04:00
export OSTREE = " ${ CMD_PREFIX } ostree ${ ot_repo } "
2011-11-09 03:11:42 +04:00
if test " $mode " = "archive" ; then
$OSTREE init --archive
else
$OSTREE init
fi
cd ${ test_tmpdir }
2011-10-15 09:22:42 +04:00
mkdir files
cd files
2011-11-01 06:42:14 +04:00
ot_files = ` pwd `
2011-10-15 09:22:42 +04:00
export ht_files
2011-11-01 06:42:14 +04:00
ln -s nosuchfile somelink
2011-10-15 09:22:42 +04:00
echo first > firstfile
2011-11-09 03:11:42 +04:00
cd ${ test_tmpdir } /files
$OSTREE commit -b test2 -s "Test Commit 1" -m "Commit body first"
2011-10-15 09:22:42 +04:00
mkdir baz
2011-11-09 18:08:58 +04:00
mkfifo baz/afifo # named pipe
2011-10-15 09:22:42 +04:00
echo moo > baz/cow
echo alien > baz/saucer
mkdir baz/deeper
echo hi > baz/deeper/ohyeah
2011-11-01 06:42:14 +04:00
ln -s nonexistent baz/alink
2011-10-15 09:22:42 +04:00
mkdir baz/another/
echo x > baz/another/y
2011-11-09 03:11:42 +04:00
cd ${ test_tmpdir } /files
$OSTREE commit -b test2 -s "Test Commit 2" -m "Commit body second"
2011-11-04 07:08:28 +04:00
$OSTREE fsck -q
2011-11-01 06:42:14 +04:00
cd $oldpwd
2011-10-15 08:45:07 +04:00
}
2011-11-01 04:24:38 +04:00
setup_fake_remote_repo1( ) {
oldpwd = ` pwd `
mkdir ostree-srv
cd ostree-srv
mkdir gnomerepo
2012-05-04 18:04:32 +04:00
${ CMD_PREFIX } ostree --repo= gnomerepo init --archive
2011-11-01 04:24:38 +04:00
mkdir gnomerepo-files
cd gnomerepo-files
echo first > firstfile
mkdir baz
echo moo > baz/cow
echo alien > baz/saucer
2012-05-04 18:04:32 +04:00
${ CMD_PREFIX } ostree --repo= ${ test_tmpdir } /ostree-srv/gnomerepo commit -b main -s "A remote commit" -m "Some Commit body"
2011-11-01 04:24:38 +04:00
mkdir baz/deeper
2012-05-04 18:04:32 +04:00
${ CMD_PREFIX } ostree --repo= ${ test_tmpdir } /ostree-srv/gnomerepo commit -b main -s "Add deeper"
2011-11-01 04:24:38 +04:00
echo hi > baz/deeper/ohyeah
mkdir baz/another/
echo x > baz/another/y
2012-05-04 18:04:32 +04:00
${ CMD_PREFIX } ostree --repo= ${ test_tmpdir } /ostree-srv/gnomerepo commit -b main -s "The rest"
2011-11-01 04:24:38 +04:00
cd ..
rm -rf gnomerepo-files
cd ${ test_tmpdir }
mkdir ${ test_tmpdir } /httpd
cd httpd
cat >httpd.conf <<EOF
ServerRoot ${ test_tmpdir } /httpd
PidFile pid
LogLevel crit
ErrorLog log
LockFile lock
ServerName localhost
LoadModule alias_module modules/mod_alias.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule env_module modules/mod_env.so
StartServers 1
# SetEnv OSTREE_REPO_PREFIX ${test_tmpdir}/ostree-srv
Alias /ostree/ ${ test_tmpdir } /ostree-srv/
# ScriptAlias /ostree/ ${test_tmpdir}/httpd/ostree-http-backend/
EOF
2011-11-01 20:35:50 +04:00
${ SRCDIR } /tmpdir-lifecycle ${ SRCDIR } /run-apache ` pwd ` /httpd.conf ${ test_tmpdir } /httpd-address &
for i in $( seq 5) ; do
if ! test -f ${ test_tmpdir } /httpd-address; then
sleep 1
else
break
fi
done
if ! test -f ${ test_tmpdir } /httpd-address; then
echo "Error: timed out waiting for httpd-address file"
exit 1
fi
2011-11-01 04:24:38 +04:00
cd ${ oldpwd }
2011-11-04 07:08:28 +04:00
export OSTREE = "ostree --repo=repo"
2011-11-01 04:24:38 +04:00
}
2011-10-13 00:46:23 +04:00
trap 'die' EXIT