mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
bdbce9d042
The ostree fsck test is aimed to check that it will still fail an fsck if the repository has been repaired by fsck. It also checks that a pull operation corrects the error and ostree fsck will exit with zero. The test was modeled after the following script: rm -rf ./f1 mkdir -p ./f1 ./ostree --repo=./f1 init --mode=archive-z2 mkdir -p ./trial echo test > ./trial/test ./ostree --repo=./f1 commit --tree=dir=./trial --skip-if-unchanged --branch=exp1 --subject="test Commit" rm -rf ./f2 mkdir -p ./f2 ./ostree --repo=./f2 init ./ostree --repo=./f2 pull-local ./f1 echo whoops > `find ./f2 |grep objects |grep \\.file ` ./ostree fsck --repo=./f2 ; echo Exit: $? ./ostree fsck --delete --repo=./f2 ; echo Exit: $? ./ostree fsck --repo=./f2 ; echo Exit: $? ./ostree --repo=./f2 pull-local ./f1 ./ostree fsck --repo=./f2 ; echo Exit: $? Signed-off-by: Jason Wessel <jason.wessel@windriver.com> fsck: Update test so that it will pass on fs without xattrs The fsck test does not require xattrs to prove that it works. It is simple enough to change it to use an archvie instead of a bare type repository. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Closes: #1910 Approved by: cgwalters
84 lines
2.5 KiB
Bash
Executable File
84 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright © 2019 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: LGPL-2.0+
|
|
#
|
|
# 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
|
|
|
|
echo '1..6'
|
|
|
|
cd ${test_tmpdir}
|
|
|
|
rm -rf ./f1
|
|
mkdir -p ./f1
|
|
${CMD_PREFIX} ostree --repo=./f1 init --mode=archive-z2
|
|
rm -rf ./trial
|
|
mkdir -p ./trial
|
|
echo test > ./trial/test
|
|
${CMD_PREFIX} ostree --repo=./f1 commit --tree=dir=./trial --skip-if-unchanged --branch=exp1 --subject="test Commit"
|
|
|
|
rm -rf ./f2
|
|
mkdir -p ./f2
|
|
${CMD_PREFIX} ostree --repo=./f2 init --mode=archive-z2
|
|
${CMD_PREFIX} ostree --repo=./f2 pull-local ./f1
|
|
echo "ok 1 fsck-pre-commit"
|
|
|
|
file=`find ./f2 |grep objects |grep \\.file |tail -1 `
|
|
rm $file
|
|
echo whoops > $file
|
|
|
|
# First check for corruption
|
|
if ${CMD_PREFIX} ostree fsck --repo=./f2 > fsck 2> fsck-error; then
|
|
assert_not_reached "fsck did not fail"
|
|
fi
|
|
assert_file_has_content fsck "^Validating refs\.\.\.$"
|
|
assert_file_has_content fsck-error "^error: In commits"
|
|
|
|
echo "ok 2 fsck-fail-check"
|
|
|
|
# Fix the corruption
|
|
if ${CMD_PREFIX} ostree fsck --delete --repo=./f2 > fsck 2> fsck-error; then
|
|
assert_not_reached "fsck did not fail"
|
|
fi
|
|
assert_file_has_content fsck "^Validating refs\.\.\.$"
|
|
assert_file_has_content fsck-error "^In commits"
|
|
|
|
echo "ok 3 fsck-delete-check"
|
|
|
|
# Check that fsck still exits with non-zero after corruption fix
|
|
if ${CMD_PREFIX} ostree fsck --repo=./f2 > fsck 2> fsck-error; then
|
|
assert_not_reached "fsck did not fail"
|
|
fi
|
|
assert_file_has_content fsck "^Validating refs\.\.\.$"
|
|
assert_file_has_content fsck-error "^error: 1"
|
|
|
|
echo "ok 4 fsck-post-delete-check"
|
|
|
|
${CMD_PREFIX} ostree --repo=./f2 pull-local ./f1 > /dev/null
|
|
echo "ok 5 fsck-repair"
|
|
|
|
if ! ${CMD_PREFIX} ostree fsck --repo=./f2 > fsck 2> fsck-error; then
|
|
assert_not_reached "fsck failed when it should have passed"
|
|
fi
|
|
assert_file_has_content fsck "^Validating refs\.\.\.$"
|
|
assert_file_empty fsck-error
|
|
echo "ok 6 fsck-good"
|