. "$BST_LIB"
require xmlwf expat/present
tmp=${TMPDIR:-/tmp}/bst-expat.$$
mkdir -p "$tmp"
# well-formed document: xmlwf is silent and exits 0
printf '\n- text
\n' > "$tmp/ok.xml"
out=$(xmlwf "$tmp/ok.xml" 2>&1); rc=$?
if [ "$rc" -eq 0 ] && [ -z "$out" ]; then
bst_ok expat/wellformed-silent
else
bst_notok expat/wellformed-silent "rc=$rc out=$(_bst_1line "$out")"
fi
# malformed document (mismatched tag): the report names file:line and rc is non-zero
printf '\n\n\n' > "$tmp/bad.xml"
out=$(xmlwf "$tmp/bad.xml" 2>&1); rc=$?
case "$out" in
*bad.xml:*[0-9]:*) bst_ok expat/malformed-line ;;
*) bst_notok expat/malformed-line "no file:line in: $(_bst_1line "$out")" ;;
esac
if [ "$rc" -ne 0 ]; then
bst_ok expat/malformed-rc
else
bst_notok expat/malformed-rc "rc=0 on malformed input"
fi
rm -rf "$tmp"