157 lines
3.0 KiB
Bash
Executable File
157 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
echo >&2 "ERR: root needed"
|
|
exit 1
|
|
fi
|
|
|
|
set -u
|
|
set -e
|
|
|
|
DIR="$(pwd)/workdir"
|
|
PKGDIR="$DIR/pkg"
|
|
LOCDIR="$DIR/loc"
|
|
PKGNAME="pkgname"
|
|
PKGF="$PKGDIR/conffile"
|
|
LOCF="$LOCDIR/conffile"
|
|
PKGRF="$PKGDIR/renamedconffile"
|
|
LOCRF="$LOCDIR/renamedconffile"
|
|
REFDIR="reference"
|
|
PKGREF="$REFDIR/pkg"
|
|
LOCREF="$REFDIR/loc"
|
|
PKGRREF="$REFDIR/renamedpkg"
|
|
LOCRREF="$REFDIR/renamedloc"
|
|
LOCNEWF="$DIR/localnewfile"
|
|
|
|
TESTEE="ucf-helper-functions.sh"
|
|
if [ -x "./$TESTEE" ]; then
|
|
. ./$TESTEE
|
|
fi
|
|
|
|
cd tests
|
|
|
|
cleanup() {
|
|
for fn in $LOCF $LOCNEWF $LOCRF; do
|
|
ucf --purge $fn
|
|
ucfr --purge $PKGNAME $fn
|
|
done
|
|
rm -rf $DIR $PKGDIR $LOCDIR $REFDIR
|
|
rm -f result
|
|
}
|
|
|
|
prepare() {
|
|
cleanup
|
|
mkdir $DIR $PKGDIR $LOCDIR $REFDIR
|
|
cp package-orig $PKGF
|
|
}
|
|
|
|
take_ref() {
|
|
if [ -e "$PKGF" ]; then
|
|
cp $PKGF $PKGREF
|
|
else
|
|
touch $PKGREF-deleted
|
|
fi
|
|
if [ -e "$LOCF" ]; then
|
|
cp $LOCF $LOCREF
|
|
else
|
|
touch $LOCREF-deleted
|
|
fi
|
|
if [ -e "$PKGRF" ]; then
|
|
cp $PKGRF $PKGRREF
|
|
else
|
|
touch $PKGRREF-deleted
|
|
fi
|
|
if [ -e "$LOCRF" ]; then
|
|
cp $LOCRF $LOCRREF
|
|
else
|
|
touch $LOCRREF-deleted
|
|
fi
|
|
}
|
|
|
|
check_ucfq_number() {
|
|
EXPECTED="$1"
|
|
if [ $(ucfq --with-colons $PKGNAME | wc -l) != "$EXPECTED" ]; then
|
|
echo >&2 "number of files registered to $PKGNAME not equal $EXPECTED, test failed"
|
|
ucfq --with-colons $PKGNAME | wc -l
|
|
ucfq $PKGNAME
|
|
return 1
|
|
else
|
|
echo >&2 "$EXPECTED file(s) registered to $PKGNAME, test passed"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
|
|
is_package() {
|
|
local LOCF
|
|
local REFF
|
|
LOCF=$1
|
|
REFF=${2:-$PKGREF}
|
|
if ! cmp $LOCF $REFF; then
|
|
echo >&2 "$LOCF not equal $REFF, test failed"
|
|
return 1
|
|
else
|
|
echo >&2 "$LOCF equals $REFF, test passed"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
is_local() {
|
|
local LOCF
|
|
local REFF
|
|
LOCF=$1
|
|
REFF="${2:-$LOCREF}"
|
|
if ! cmp $LOCF $REFF; then
|
|
echo >&2 "$LOCF not equal $REFF, test failed"
|
|
return 1
|
|
else
|
|
echo >&2 "$LOCF equals $REFF, test passed"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
is_deleted() {
|
|
RET=0
|
|
FN="$1"
|
|
if [ -e "$FN" ]; then
|
|
echo >&2 "$FN does still exist, test failed"
|
|
RET=1
|
|
else
|
|
echo >&2 "$FN is deleted, test passed"
|
|
fi
|
|
return $RET
|
|
}
|
|
|
|
print_state() {
|
|
printf -- "------- %s\n" "${1:-}"
|
|
echo "ls -alR $DIR"
|
|
ls -alR $DIR
|
|
head -n-0 /dev/null $DIR/*/*
|
|
printf "ucfq $PKGNAME knows about %d files\n" "$(ucfq --with-colons "$PKGNAME" | wc -l)"
|
|
ucfq --with-colons "$PKGNAME"
|
|
}
|
|
|
|
DEBIAN_FRONTEND=readline
|
|
GLOB="${1:-*}"
|
|
for test in ./test_$GLOB; do
|
|
prepare
|
|
RET=0
|
|
unset UCF_FORCE_CONFFOLD
|
|
export -n UCF_FORCE_CONFFOLOLD
|
|
unset UCF_FORCE_CONFFNEW
|
|
export -n UCF_FORCE_CONFFNEW
|
|
. $test || RET=$?
|
|
if [ "$RET" -ne 0 ]; then
|
|
echo "$test failed"
|
|
print_state "$test failed"
|
|
cleanup
|
|
exit 1
|
|
else
|
|
echo "$test passed"
|
|
fi
|
|
cleanup
|
|
done
|
|
|
|
# vim:sw=4:sts=4:et:
|
|
|