On 05/09/2013 06:18 AM, Ján Tomko wrote:
Currently, using an invalid XML in tests fails, because
the schema test expects all of them to be valid.
Treat files with -invalid.xml suffix as invalid and expect
them to fail validation.
---
tests/schematestutils.sh | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tests/schematestutils.sh b/tests/schematestutils.sh
index 4361221..e739b99 100644
--- a/tests/schematestutils.sh
+++ b/tests/schematestutils.sh
@@ -20,6 +20,18 @@ do
result=`$cmd 2>&1`
ret=$?
+ grep -- '-invalid.xml$' <<< "$xml" 2>&1
>/dev/null
<<< is not portable shell, but this script wants to use /bin/sh. You
need to either rewrite the script to use /bin/bash, or avoid <<<. And I
think it's easier to just use portable shell:
invalid=false
case $xml in
*-invalid.xml) invalid=: ;;
esac
+ invalid=$?
+
+ # per xmllint man page, the return codes for validation error
+ # are 3 and 4
+ if test $invalid -eq 0; then
+ if test $ret -eq 4 || test $ret -eq 3; then
+ ret=0
+ elif test $ret -eq 0; then
+ ret=3
+ fi
+ fi
Or even make the case statement check invalid and exit status all at the
same time. I see you already pushed, so I'll write the followup.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org