[libvirt] [PATCH 3/3] schematestutils: Add check_schema_quick

Ján Tomko jtomko at redhat.com
Tue Jun 7 15:15:58 UTC 2016


We have hundreds of XML files.
Pass multiple of them on xmllint command line to avoid spawning
a process for every single one.

If any of them fails validation, or VIR_TEST_EXPENSIVE was set to 1,
fall back to the file-by-file checking.
---
 tests/schematestutils.sh | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/tests/schematestutils.sh b/tests/schematestutils.sh
index 498b7ec..81a1006 100644
--- a/tests/schematestutils.sh
+++ b/tests/schematestutils.sh
@@ -6,10 +6,19 @@ check_schema () {
 
 DIRS=$1
 SCHEMA="$abs_top_srcdir/docs/schemas/$2"
+SKIP_EXPENSIVE=0
 
 test_intro $this_test
 
-check_schema_by_one
+if test "$VIR_TEST_EXPENSIVE" != 1; then
+  check_schema_quick
+  test $f == 0 && SKIP_EXPENSIVE=1
+fi
+
+if test $SKIP_EXPENSIVE != 1; then
+  check_schema_by_one
+fi
+
 test_final $n $f
 
 ret=0
@@ -18,6 +27,28 @@ exit $ret
 
 }
 
+check_schema_quick () {
+  f=0
+  ABSDIRS=""
+  for dir in $DIRS; do
+    ABSDIRS="$ABSDIRS $abs_srcdir/$dir"
+  done
+  VALIDXMLS=`find $ABSDIRS -not -name '*-invalid.xml' -name '*.xml'` || exit 1
+  INVALIDXMLS=`find $ABSDIRS -name '*-invalid.xml'` || exit 1
+
+  n=`echo "$VALIDXMLS" | wc -l`
+  result=`echo "$VALIDXMLS" | xargs xmllint --relaxng $SCHEMA --noout 2>&1`
+  ret=$?
+  if test "$ret" != 0 ; then
+    f=`expr $f + 1`
+  fi
+
+  for xml in `echo "$INVALIDXMLS" | sort`
+  do
+    check_one_file
+  done
+}
+
 check_schema_by_one () {
 
 for dir in $DIRS
-- 
2.7.3




More information about the libvir-list mailing list