# Source library for shell script tests # # Copyright (C) 2011 Colin Walters # # 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. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # 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. cd `dirname $0` SRCDIR=`pwd` cd - TMPDIR=${TMPDIR:-/tmp} export TMPDIR test_tmpdir=`mktemp -d "$TMPDIR/ostree-tests.XXXXXXXXXX"` cd "$test_tmpdir" touch "$test_tmpdir/.test$$" export G_DEBUG=fatal-warnings if test -n "${OT_TESTS_DEBUG}"; then set -x fi 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 die () { if test -z "$OT_TESTS_DEBUG"; then test -f "$test_tmpdir/.test$$" && rm -rf "$test_tmpdir" else echo "Temporary files saved in $test_tmpdir" fi } assert_streq () { test "$1" = "$2" || (echo 1>&2 "$1 != $2"; exit 1) } assert_has_file () { test -f "$1" || (echo 1>&2 "Couldn't find '$1'"; exit 1) } assert_not_has_file () { if test -f "$1"; then echo 1>&2 "File '$1' exists"; exit 1 fi } assert_file_has_content () { if ! grep -q -e "$2" "$1"; then echo 1>&2 "File '$1' doesn't match regexp '$2'"; exit 1 fi } setup_test_repository () { mode=$1 shift oldpwd=`pwd` cd ${test_tmpdir} mkdir repo cd repo ot_repo="--repo=`pwd`" export OSTREE="${CMD_PREFIX} ostree ${ot_repo}" if test "$mode" = "archive"; then $OSTREE init --archive else $OSTREE init fi cd ${test_tmpdir} mkdir files cd files ot_files=`pwd` export ht_files ln -s nosuchfile somelink echo first > firstfile cd ${test_tmpdir}/files $OSTREE commit -b test2 -s "Test Commit 1" -m "Commit body first" mkdir baz mkfifo baz/afifo # named pipe echo moo > baz/cow echo alien > baz/saucer mkdir baz/deeper echo hi > baz/deeper/ohyeah ln -s nonexistent baz/alink mkdir baz/another/ echo x > baz/another/y cd ${test_tmpdir}/files $OSTREE commit -b test2 -s "Test Commit 2" -m "Commit body second" $OSTREE fsck -q cd $oldpwd } setup_fake_remote_repo1() { oldpwd=`pwd` mkdir ostree-srv cd ostree-srv mkdir gnomerepo ${CMD_PREFIX} ostree --repo=gnomerepo init --archive mkdir gnomerepo-files cd gnomerepo-files echo first > firstfile mkdir baz echo moo > baz/cow echo alien > baz/saucer ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit -b main -s "A remote commit" -m "Some Commit body" mkdir baz/deeper ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit -b main -s "Add deeper" echo hi > baz/deeper/ohyeah mkdir baz/another/ echo x > baz/another/y ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit -b main -s "The rest" cd .. rm -rf gnomerepo-files cd ${test_tmpdir} mkdir ${test_tmpdir}/httpd cd httpd cat >httpd.conf <