diff options
author | Colin Walters <walters@verbum.org> | 2017-04-11 17:22:54 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2017-04-12 21:30:33 +0000 |
commit | b9df96db8bd5bc40f90a9006c9aa8cbcf01fbc41 (patch) | |
tree | be87900c025a5129670f2f56d3199548a9e96fe8 /tests/pull-test.sh | |
parent | 8742287b117cb8a04d4106d37bfe0e15f9666ef7 (diff) | |
download | ostree-b9df96db8bd5bc40f90a9006c9aa8cbcf01fbc41.tar.gz |
pull: Support deltas for explicit commits
I think the majority of OSTree usage calls pull with refs, not
explicit commits. We even added special "override syntax" with
`@` (e.g. `ostree pull foo@ab12c34`) as a hybrid.
However, some users may want to still pull explicit commits
for whatever reason. The old static delta logic looked at
the previous commit of the ref. However, in https://github.com/ostreedev/ostree/pull/710
we enhanced the logic to look at all local commits.
It's now a lot more natural to teach the delta logic
to support revisions, e.g. `ostree pull someorigin ab12c34`.
This also fixes the problem that before, `--require-static-deltas`
was completely ignored when processing revisions.
This is a nontrivial refactoring of the logic, but the end
result feels a lot more readable to me.
Closes: https://github.com/ostreedev/ostree/issues/783
Closes: #787
Approved by: cgwalters
Diffstat (limited to 'tests/pull-test.sh')
-rw-r--r-- | tests/pull-test.sh | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/tests/pull-test.sh b/tests/pull-test.sh index f2486c31..f81d8023 100644 --- a/tests/pull-test.sh +++ b/tests/pull-test.sh @@ -35,7 +35,7 @@ function verify_initial_contents() { assert_file_has_content baz/cow '^moo$' } -echo "1..15" +echo "1..16" # Try both syntaxes repo_init @@ -150,23 +150,33 @@ prev_rev=$(ostree --repo=ostree-srv/gnomerepo rev-parse main^) new_rev=$(ostree --repo=ostree-srv/gnomerepo rev-parse main) ${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo summary -u +# Explicitly test delta fetches via ref name as well as commit hash +for delta_target in main ${new_rev}; do cd ${test_tmpdir} repo_init ${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev} -${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin main >dry-run-pull.txt +${CMD_PREFIX} ostree --repo=repo pull --dry-run --require-static-deltas origin ${delta_target} >dry-run-pull.txt # Compression can vary, so we support 400-699 assert_file_has_content dry-run-pull.txt 'Delta update: 0/1 parts, 0 bytes/[456][0-9][0-9] bytes, 455 bytes total uncompressed' rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main) assert_streq "${prev_rev}" "${rev}" ${CMD_PREFIX} ostree --repo=repo fsck +done +# Explicitly test delta fetches via ref name as well as commit hash +for delta_target in main ${new_rev}; do cd ${test_tmpdir} repo_init ${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev} -${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin main -rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main) -assert_streq "${new_rev}" "${rev}" +${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin ${delta_target} +if test ${delta_target} = main; then + rev=$(${CMD_PREFIX} ostree --repo=repo rev-parse origin:main) + assert_streq "${new_rev}" "${rev}" +else + ${CMD_PREFIX} ostree --repo=repo rev-parse ${delta_target} +fi ${CMD_PREFIX} ostree --repo=repo fsck +done cd ${test_tmpdir} repo_init @@ -208,8 +218,23 @@ fi assert_file_has_content err.txt "deltas required, but none found" ${CMD_PREFIX} ostree --repo=repo fsck +# Now test with a partial commit +repo_init +${CMD_PREFIX} ostree --repo=repo pull --commit-metadata-only origin main@${prev_rev} +if ${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin main 2>err.txt; then + assert_not_reached "--require-static-deltas unexpectedly succeeded" +fi +assert_file_has_content err.txt "deltas required, but none found" echo "ok delta required but don't exist" +repo_init +${CMD_PREFIX} ostree --repo=repo pull origin main@${prev_rev} +if ${CMD_PREFIX} ostree --repo=repo pull --require-static-deltas origin ${new_rev} 2>err.txt; then + assert_not_reached "--require-static-deltas unexpectedly succeeded" +fi +assert_file_has_content err.txt "deltas required, but none found" +echo "ok delta required for revision" + cd ${test_tmpdir} rm main-files -rf ${CMD_PREFIX} ostree --repo=ostree-srv/gnomerepo checkout main main-files |