mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-25 01:34:34 +03:00
f9b2c45fc0
Accepts the following arguments: ref checksum Checks that the checksum is a parent of the ref before rewriting the ref. https://bugzilla.gnome.org/show_bug.cgi?id=705979
278 lines
8.1 KiB
Bash
Executable File
278 lines
8.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# 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 -e
|
|
|
|
echo "1..39"
|
|
|
|
. $(dirname $0)/libtest.sh
|
|
|
|
setup_test_repository "bare"
|
|
echo "ok setup"
|
|
|
|
$OSTREE checkout test2 checkout-test2
|
|
echo "ok checkout"
|
|
|
|
$OSTREE rev-parse test2
|
|
$OSTREE rev-parse 'test2^'
|
|
$OSTREE rev-parse 'test2^^' 2>/dev/null && (echo 1>&2 "rev-parse test2^^ unexpectedly succeeded!"; exit 1)
|
|
echo "ok rev-parse"
|
|
|
|
(cd repo && ostree rev-parse test2)
|
|
echo "ok repo-in-cwd"
|
|
|
|
$OSTREE refs > reflist
|
|
assert_file_has_content reflist '^test2$'
|
|
rm reflist
|
|
|
|
echo "ok refs"
|
|
|
|
cd checkout-test2
|
|
assert_has_file firstfile
|
|
assert_has_file baz/cow
|
|
assert_file_has_content baz/cow moo
|
|
assert_has_file baz/deeper/ohyeah
|
|
echo "ok content"
|
|
|
|
rm firstfile
|
|
$OSTREE commit -b test2 -s delete
|
|
|
|
cd $test_tmpdir
|
|
$OSTREE checkout test2 $test_tmpdir/checkout-test2-2
|
|
cd $test_tmpdir/checkout-test2-2
|
|
assert_not_has_file firstfile
|
|
assert_has_file baz/saucer
|
|
echo "ok removal"
|
|
|
|
mkdir -p a/nested/tree
|
|
echo one > a/nested/tree/1
|
|
echo two2 > a/nested/2
|
|
echo 3 > a/nested/3
|
|
touch a/4
|
|
echo fivebaby > a/5
|
|
touch a/6
|
|
echo whee > 7
|
|
mkdir -p another/nested/tree
|
|
echo anotherone > another/nested/tree/1
|
|
echo whee2 > another/whee
|
|
# FIXME - remove grep for .
|
|
$OSTREE commit -b test2 -s "Another commit"
|
|
echo "ok commit"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE checkout test2 $test_tmpdir/checkout-test2-3
|
|
cd checkout-test2-3
|
|
assert_has_file a/nested/2
|
|
assert_file_has_content a/nested/2 'two2'
|
|
echo "ok stdin contents"
|
|
|
|
cd ${test_tmpdir}/checkout-test2-3
|
|
echo 4 > four
|
|
mkdir -p yet/another/tree
|
|
echo leaf > yet/another/tree/green
|
|
echo helloworld > yet/message
|
|
rm a/5
|
|
$OSTREE commit -b test2 -s "Current directory"
|
|
echo "ok cwd commit"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE checkout test2 $test_tmpdir/checkout-test2-4
|
|
cd checkout-test2-4
|
|
assert_file_has_content yet/another/tree/green 'leaf'
|
|
assert_file_has_content four '4'
|
|
echo "ok cwd contents"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE diff test2^ test2 > diff-test2
|
|
assert_file_has_content diff-test2 'D */a/5'
|
|
assert_file_has_content diff-test2 'A */yet$'
|
|
assert_file_has_content diff-test2 'A */yet/message$'
|
|
assert_file_has_content diff-test2 'A */yet/another/tree/green$'
|
|
echo "ok diff revisions"
|
|
|
|
cd ${test_tmpdir}/checkout-test2-4
|
|
echo afile > oh-look-a-file
|
|
$OSTREE diff test2 ./ > ${test_tmpdir}/diff-test2-2
|
|
rm oh-look-a-file
|
|
cd ${test_tmpdir}
|
|
assert_file_has_content diff-test2-2 'A *oh-look-a-file$'
|
|
echo "ok diff cwd"
|
|
|
|
cd ${test_tmpdir}/checkout-test2-4
|
|
rm four
|
|
mkdir four
|
|
touch four/other
|
|
$OSTREE diff test2 ./ > ${test_tmpdir}/diff-test2-2
|
|
cd ${test_tmpdir}
|
|
assert_file_has_content diff-test2-2 'M */four$'
|
|
echo "ok diff file changing type"
|
|
|
|
cd ${test_tmpdir}
|
|
mkdir repo2
|
|
${CMD_PREFIX} ostree --repo=repo2 init
|
|
${CMD_PREFIX} ostree --repo=repo2 pull-local repo
|
|
echo "ok pull-local"
|
|
|
|
cd ${test_tmpdir}
|
|
${CMD_PREFIX} ostree --repo=repo2 checkout test2 test2-checkout-from-local-clone
|
|
cd test2-checkout-from-local-clone
|
|
assert_file_has_content yet/another/tree/green 'leaf'
|
|
echo "ok local clone checkout"
|
|
|
|
$OSTREE checkout -U test2 checkout-user-test2
|
|
echo "ok user checkout"
|
|
|
|
$OSTREE commit -b test2 -s "Another commit" --tree=ref=test2
|
|
echo "ok commit from ref"
|
|
|
|
$OSTREE commit -b trees/test2 -s 'ref with / in it' --tree=ref=test2
|
|
echo "ok commit ref with /"
|
|
|
|
old_rev=$($OSTREE rev-parse test2)
|
|
$OSTREE commit --skip-if-unchanged -b test2 -s 'should not be committed' --tree=ref=test2
|
|
new_rev=$($OSTREE rev-parse test2)
|
|
assert_streq "${old_rev}" "${new_rev}"
|
|
echo "ok commit --skip-if-unchanged"
|
|
|
|
cd ${test_tmpdir}/checkout-test2-4
|
|
$OSTREE commit -b test2 -s "no xattrs" --no-xattrs
|
|
echo "ok commit with no xattrs"
|
|
|
|
cd ${test_tmpdir}
|
|
cat > test-statoverride.txt <<EOF
|
|
+2048 /a/nested/3
|
|
EOF
|
|
cd ${test_tmpdir}/checkout-test2-4
|
|
$OSTREE commit -b test2 -s "with statoverride" --statoverride=../test-statoverride.txt
|
|
echo "ok commit statoverridde"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE prune
|
|
echo "ok prune didn't fail"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE cat test2 /yet/another/tree/green > greenfile-contents
|
|
assert_file_has_content greenfile-contents "leaf"
|
|
echo "ok cat-file"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE checkout --subpath /yet/another test2 checkout-test2-subpath
|
|
cd checkout-test2-subpath
|
|
assert_file_has_content tree/green "leaf"
|
|
echo "ok checkout subpath"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE checkout --union test2 checkout-test2-union
|
|
find checkout-test2-union | wc -l > union-files-count
|
|
$OSTREE checkout --union test2 checkout-test2-union
|
|
find checkout-test2-union | wc -l > union-files-count.new
|
|
cmp union-files-count{,.new}
|
|
cd checkout-test2-union
|
|
assert_file_has_content ./yet/another/tree/green "leaf"
|
|
echo "ok checkout union 1"
|
|
|
|
cd ${test_tmpdir}
|
|
rm -rf shadow-repo
|
|
mkdir shadow-repo
|
|
${CMD_PREFIX} ostree --repo=shadow-repo init
|
|
${CMD_PREFIX} ostree --repo=shadow-repo config set core.parent $(pwd)/repo
|
|
rm -rf test2-checkout
|
|
parent_rev_test2=$(ostree --repo=repo rev-parse test2)
|
|
${CMD_PREFIX} ostree --repo=shadow-repo checkout "${parent_rev_test2}" test2-checkout
|
|
echo "ok checkout from shadow repo"
|
|
|
|
cd ${test_tmpdir}
|
|
rm -f expected-fail
|
|
$OSTREE checkout test2 --subpath /enoent 2>/dev/null || touch expected-fail
|
|
assert_has_file expected-fail
|
|
echo "ok subdir enoent"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE checkout test2 --allow-noent --subpath /enoent 2>/dev/null
|
|
echo "ok subdir noent"
|
|
|
|
cd ${test_tmpdir}
|
|
mkdir repo3
|
|
${CMD_PREFIX} ostree --repo=repo3 init
|
|
${CMD_PREFIX} ostree --repo=repo3 pull-local --remote=aremote repo test2
|
|
ostree --repo=repo3 rev-parse aremote/test2
|
|
echo "ok pull-local with --remote arg"
|
|
|
|
cd ${test_tmpdir}
|
|
ostree --repo=repo3 prune
|
|
find repo3/objects -name '*.commit' > objlist-before-prune
|
|
rm repo3/refs/heads/* repo3/refs/remotes/* -rf
|
|
ostree --repo=repo3 prune --refs-only
|
|
find repo3/objects -name '*.commit' > objlist-after-prune
|
|
if cmp -s objlist-before-prune objlist-after-prune; then
|
|
echo "Prune didn't delete anything!"; exit 1
|
|
fi
|
|
rm repo3 objlist-before-prune objlist-after-prune -rf
|
|
echo "ok prune"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE commit -b test3 -s "Another commit" --tree=ref=test2
|
|
ostree --repo=repo refs > reflist
|
|
assert_file_has_content reflist '^test3$'
|
|
ostree --repo=repo refs --delete test3
|
|
ostree --repo=repo refs > reflist
|
|
assert_not_file_has_content reflist '^test3$'
|
|
echo "ok reflist --delete"
|
|
|
|
cd ${test_tmpdir}
|
|
rm -rf test2-checkout
|
|
$OSTREE checkout test2 test2-checkout
|
|
(cd test2-checkout && $OSTREE commit --link-checkout-speedup -b test2 -s "tmp")
|
|
echo "ok commit with link speedup"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE ls test2
|
|
echo "ok ls with no argument"
|
|
|
|
cd ${test_tmpdir}
|
|
$OSTREE show test2
|
|
echo "ok show with non-checksum"
|
|
|
|
cd ${test_tmpdir}
|
|
checksum=$($OSTREE commit -b test4 -s "Third commit")
|
|
$OSTREE show test4 > show-output
|
|
assert_file_has_content show-output "Third commit"
|
|
assert_file_has_content show-output "commit $checksum"
|
|
echo "ok show full output"
|
|
|
|
cd ${test_tmpdir}
|
|
checksum1=$($OSTREE commit -b test5 -s "First commit")
|
|
checksum2=$($OSTREE commit -b test5 -s "Second commit")
|
|
$OSTREE log test5 > log-output
|
|
assert_file_has_content log-output "First commit"
|
|
assert_file_has_content log-output "commit $checksum1"
|
|
assert_file_has_content log-output "Second commit"
|
|
assert_file_has_content log-output "commit $checksum2"
|
|
echo "ok log output"
|
|
|
|
cd ${test_tmpdir}
|
|
checksum1=$($OSTREE commit -b test6 -s "First commit")
|
|
checksum2=$($OSTREE commit -b test6 -s "Second commit")
|
|
$OSTREE show test6 > show-output
|
|
assert_file_has_content show-output "commit $checksum2"
|
|
$OSTREE reset test6 $checksum1
|
|
$OSTREE show test6 > show-output
|
|
assert_file_has_content show-output "commit $checksum1"
|
|
echo "ok basic reset"
|