tests/test-pull-bare.sh \
tests/test-pull-bareuser.sh \
tests/test-pull-bareuseronly.sh \
+ tests/test-pull2-bareuseronly.sh \
tests/test-pull-commit-only.sh \
tests/test-pull-depth.sh \
tests/test-pull-mirror-summary.sh \
dist_installed_test_data = tests/archive-test.sh \
tests/pull-test.sh \
+ tests/pull-test2.sh \
tests/admin-test.sh \
tests/basic-test.sh \
tests/pre-endian-deltas-repo-big.tar.xz \
tests/pre-endian-deltas-repo-little.tar.xz \
+ tests/fah-deltadata-old.tar.xz \
+ tests/fah-deltadata-new.tar.xz \
tests/libtest-core.sh \
$(NULL)
fi
}
+# The original one; use setup_fake_remote_repo2 for newer code,
+# down the line we'll try to port tests.
setup_fake_remote_repo1() {
mode=$1
commit_opts=${2:-}
export OSTREE="${CMD_PREFIX} ostree --repo=repo"
}
+# Newer version of the above with more "real" data
+setup_fake_remote_repo2() {
+ mode=$1
+ commit_opts=${2:-}
+ args=${3:-}
+ shift
+ oldpwd=`pwd`
+ mkdir ostree-srv
+ cd ostree-srv
+ mkdir repo
+ ostree_repo_init repo --mode=$mode
+ # Backcompat
+ ln -sr repo gnomerepo
+ # Initialize content
+ mkdir files
+ cd files
+ mkdir -p usr/{etc,bin,lib,share}
+ ln -sr usr/bin bin
+ ln -sr usr/lib lib
+ tar xf ${test_srcdir}/fah-deltadata-old.tar.xz
+ remote_ref=exampleos/42/x86_64/main
+ cd ..
+ ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo commit \
+ --consume $commit_opts --add-metadata-string version=42.0 -b ${remote_ref} \
+ --tree=dir=files
+ test '!' -d files
+ ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo checkout -U ${remote_ref} files
+ (cd files && tar xf ${test_srcdir}/fah-deltadata-new.tar.xz)
+ ${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/repo commit \
+ --consume $commit_opts --add-metadata-string version=42.1 -b ${remote_ref} \
+ --tree=dir=files
+
+ # And serve via HTTP
+ cd ${test_tmpdir}
+ mkdir ${test_tmpdir}/httpd
+ cd httpd
+ ln -s ${test_tmpdir}/ostree-srv ostree
+ ${OSTREE_HTTPD} --autoexit --log-file $(pwd)/httpd.log --daemonize -p ${test_tmpdir}/httpd-port $args
+ port=$(cat ${test_tmpdir}/httpd-port)
+ echo "http://127.0.0.1:${port}" > ${test_tmpdir}/httpd-address
+ cd ${oldpwd}
+ export OSTREE="${CMD_PREFIX} ostree --repo=repo"
+}
+
setup_os_boot_syslinux() {
# Stub syslinux configuration
mkdir -p sysroot/boot/loader.0
--- /dev/null
+# This file is to be sourced, not executed
+
+# 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.
+
+set -euo pipefail
+
+function repo_init() {
+ cd ${test_tmpdir}
+ rm repo -rf
+ mkdir repo
+ ostree_repo_init repo --mode=${repo_mode}
+ ${CMD_PREFIX} ostree --repo=repo remote add origin $(cat httpd-address)/ostree/gnomerepo "$@"
+}
+
+repo_init --no-gpg-verify
+
+# See also the copy of this in basic-test.sh
+COMMIT_ARGS=""
+CHECKOUT_U_ARG=""
+CHECKOUT_H_ARGS="-H"
+if is_bare_user_only_repo repo; then
+ COMMIT_ARGS="--canonical-permissions"
+ # Also, since we can't check out uid=0 files we need to check out in user mode
+ CHECKOUT_U_ARG="-U"
+ CHECKOUT_H_ARGS="-U -H"
+else
+ if grep -E -q '^mode=bare-user' repo/config; then
+ CHECKOUT_H_ARGS="-U -H"
+ fi
+fi
+
+echo "1..1"
+cd ${test_tmpdir}
+repo_init --no-gpg-verify
+prev_rev=$(ostree --repo=ostree-srv/repo rev-parse ${remote_ref}^)
+rev=$(ostree --repo=ostree-srv/repo rev-parse ${remote_ref})
+${CMD_PREFIX} ostree --repo=ostree-srv/repo static-delta generate ${remote_ref}
+${CMD_PREFIX} ostree --repo=ostree-srv/repo summary -u
+${CMD_PREFIX} ostree --repo=repo pull origin ${remote_ref}@${prev_rev}
+${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${remote_ref} >dry-run-pull.txt
+assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts, 0 bytes/[45][0-9].[0-9] kB, 1.[678] MB total uncompressed'
+${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin ${remote_ref}
+final_rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:${remote_ref})
+assert_streq "${rev}" "${final_rev}"
+${CMD_PREFIX} ostree --repo=repo fsck
+echo "ok delta"
--- /dev/null
+#!/bin/bash
+#
+# Copyright (C) 2017 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.
+
+set -euo pipefail
+
+. $(dirname $0)/libtest.sh
+
+setup_fake_remote_repo2 "archive" "--canonical-permissions"
+
+repo_mode=bare-user-only
+. ${test_srcdir}/pull-test2.sh