mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
173 lines
4.3 KiB
Bash
173 lines
4.3 KiB
Bash
# Source library for shell script tests
|
|
#
|
|
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
|
|
#
|
|
# 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 <<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
|
|
${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
|
|
cd ${oldpwd}
|
|
|
|
export OSTREE="ostree --repo=repo"
|
|
}
|
|
|
|
trap 'die' EXIT
|