+t-expect-fsck-fail () {
+ echo >>$tmp/fsck.expected-errors "$1"
+}
+
+t-git-fsck () {
+ local fsckerrs=$(git rev-parse --git-dir)/dgit-test-fsck.errs
+
+ set +e
+ LC_MESSAGES=C git fsck --no-dangling --strict 2>&1 \
+ | tee $fsckerrs
+ ps="${PIPESTATUS[*]}"
+ set -e
+
+ local pats
+ if [ -f $tmp/fsck.expected-errors ]; then
+ pats=(-w -f $tmp/fsck.expected-errors)
+ else
+ test "$ps" = "0 0"
+ fi
+ pats+=(-e 'notice: HEAD points to an unborn branch')
+ pats+=(-e 'notice: No default references')
+
+ set +e
+ grep -v "${pats[@]}" $fsckerrs
+ rc=$?
+ set -e
+ case $rc in
+ 1) ;; # no unexpected errors
+ 0) fail "unexpected messages from git-fsck" ;;
+ *) fail "grep of git-fsck failed" ;;
+ esac
+}
+
+t-fscks () {
+ (
+ shopt -s nullglob
+ for d in $tmp/*/.git $tmp/git/*.git; do
+ cd "${d%/.git}"
+ t-git-fsck
+ done
+ )
+}
+
+t-ok () {
+ : '========================================'
+ t-fscks
+ t-save-artifacts
+ echo ok.
+}
+
+t-save-artifacts () {
+ artifacts="$AUTOPKGTEST_ARTIFACTS"
+ if [ x"$artifacts" = x ]; then return; fi
+ if [ x"tmp" = x ]; then return; fi
+ GZIP=-1v tar -C "$tmp" -zc -f "$artifacts/${0##*/}.tar.gz" \
+ --exclude=\*.tar .
+}
+