From 27fcf68e7c12f8ade32e0cc8860e3533a3da52b5 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sun, 13 Sep 2015 21:35:10 -0400 Subject: [PATCH] tests: Add a test for static-delta apply-offline Obviously it was broken... --- tests/test-delta.sh | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/tests/test-delta.sh b/tests/test-delta.sh index fe2f4aac..9760a570 100755 --- a/tests/test-delta.sh +++ b/tests/test-delta.sh @@ -24,7 +24,7 @@ set -e bindatafiles="bash true ostree" morebindatafiles="false ls" -echo '1..2' +echo '1..3' mkdir repo ostree --repo=repo init --mode=archive-z2 @@ -78,6 +78,45 @@ if ${CMD_PREFIX} ostree --repo=repo static-delta generate --from=${origrev} --to assert_not_reached "static-delta generate --from=${origrev} --empty unexpectedly succeeded" fi -mkdir repo2 -ostree --repo=repo2 init --mode=archive-z2 +echo 'ok generate' + +mkdir repo2 && ostree --repo=repo2 init --mode=archive-z2 +ostree --repo=repo2 pull-local repo ${newrev} +ostree --repo=repo2 fsck +ostree --repo=repo2 ls ${newrev} >/dev/null + +echo 'ok pull delta' + +rm repo2 -rf +mkdir repo2 && ostree --repo=repo2 init --mode=bare-user +mkdir deltadir + +get_assert_one_direntry_matching() { + local path=$1 + local r=$2 + local child="" + local bn + for p in ${path}/*; do + bn=$(basename $p) + if ! echo ${bn} | grep -q "$r"; then + continue + fi + if test -z "${child}"; then + child=${bn} + else + assert_not_reached "Expected only one child matching ${r} in ${path}"; + fi + done + if test -z "${child}"; then + assert_not_reached "Failed to find child matching ${r}" + fi + echo ${child} +} + +deltaprefix=$(get_assert_one_direntry_matching repo/deltas '.') +deltadir=$(get_assert_one_direntry_matching repo/deltas/${deltaprefix} '-') ostree --repo=repo2 pull-local repo ${origrev} +ostree --repo=repo2 ls ${origrev} >/dev/null +ostree --repo=repo2 static-delta apply-offline repo/deltas/${deltaprefix}/${deltadir} +ostree --repo=repo2 fsck +ostree --repo=repo2 ls ${newrev} >/dev/null