root/build-tools/unit-tests/deb-utils.sh

160 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
PROGNAME="$(basename "$0")"
REQUIRED_PROGS="${PYTHON3:-python3}"
for prog in ${REQUIRED_PROGS} tar ar ; do
if ! $prog --version >/dev/null 2>&1 ; then
echo "$PROGNAME: WARNING: can't find \"$prog\", skipping tests" >&2
exit 0
fi
done
source "$(dirname "$0")"/../deb-utils.sh || exit 1
source "$(dirname "$0")"/../utils.sh || exit 1
declare -i FAIL_COUNT=0
# Usage: expect EXPECTED ACTUAL [DEPTH]
function expect {
local expected="$1"
local actual="$2"
if [[ "${actual}" != "${expected}" ]] ; then
let depth="${3:-0}"
echo >&2
echo "${BASH_SOURCE[0]}:${BASH_LINENO[${depth}]}: expectation failed:" >&2
echo " actual: [$actual]" >&2
echo " expected: [$expected]" >&2
echo >&2
return 1
fi
return 0
}
# Usage: echo ACTUAL | expect_stdin EXPECTED
function expect_stdin {
expect "$1" "$(cat)" 1
}
#########################################################
# deb_get_field
#########################################################
#####################
echo "\
Dummy1: dummy1
Key1: value1
Dummy2: dummy2
" | deb_get_field "Key1" \
| expect_stdin "value1" \
|| let ++FAIL_COUNT
#####################
echo "
# 1st para
Dummy1: dummy1
Key1: value1
Dummy2: dummy2
# 2nd para
Dummy3: dummy3
Key1: value1
Dummy4: dummy4
" | deb_get_field "Key1" \
| expect_stdin "value1" \
|| let ++FAIL_COUNT
#####################
echo "
# 1st para
Dummy1: dummy1
Dummy2: dummy2
# 2nd para
Dummy3: dummy3
Key1: value1
Dummy4: dummy4
" | deb_get_field "Key1" \
| expect_stdin "" \
|| let ++FAIL_COUNT
#####################
echo "
Dummy1: dummy1
Key1: value1_line1
value1_line2
value1_line3
Dummy2: dummy2_line1
dummy2_line2
dummy2_line3
" | deb_get_field "Key1" \
| expect_stdin $'value1_line1\nvalue1_line2\nvalue1_line3' \
|| let ++FAIL_COUNT
#####################
echo "
Dummy1: dummy1
Key1: value1_line1
value1_line2
" | deb_get_field "Key1" \
| expect_stdin $'value1_line1\nvalue1_line2' \
|| let ++FAIL_COUNT
#####################
echo "
Dummy1: dummy1
Key1: value1_line1
value1_line2
Dummy2: dummy2
" | deb_get_field "Key1" \
| expect_stdin $'value1_line1\nvalue1_line2' \
|| let ++FAIL_COUNT
#####################
echo $'
Dummy1: dummy1
Key1: value1_line1
\tvalue1_line2
Dummy2: dummy2_line1
\tdummy2_line2
' | deb_get_field "Key1" \
| expect_stdin $'value1_line1\nvalue1_line2' \
|| let ++FAIL_COUNT
#########################################################
# deb_get_simple_depends
#########################################################
echo "
Depends: texinfo (>= 1.0), kernel-headers-2.2.10 [!hurd-i386],
hurd-dev [hurd-i386], gnumach-dev [hurd-i386], yy-foo (>= 1.0) | zz-bar
" | deb_get_simple_depends \
| expect_stdin $'gnumach-dev\nhurd-dev\nkernel-headers-2.2.10\ntexinfo\nyy-foo\nzz-bar' \
|| let ++FAIL_COUNT
if [[ $FAIL_COUNT -gt 0 ]] ; then
echo >&2
echo "ERROR: ${FAIL_COUNT} test(s) failed" >&2
echo >&2
exit 1
fi
echo "$PROGNAME: all tests passed" >&2
exit 0