[Expat-checkins] expat/tests .cvsignore,1.3,1.4 xmltest.sh,1.1,1.2
Fred L. Drake
fdrake@users.sourceforge.net
Tue, 03 Sep 2002 16:19:32 -0700
Update of /cvsroot/expat/expat/tests
In directory usw-pr-cvs1:/tmp/cvs-serv2833/tests
Modified Files:
.cvsignore xmltest.sh
Log Message:
Update to Karl's version of this script, and use the latest version of
the tests from the W3C.
Index: .cvsignore
===================================================================
RCS file: /cvsroot/expat/expat/tests/.cvsignore,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- .cvsignore 29 Apr 2002 21:31:18 -0000 1.3
+++ .cvsignore 3 Sep 2002 23:19:30 -0000 1.4
@@ -1,5 +1,5 @@
Makefile
runtests
-xmltest
-xmltest.zip
+xmlts.zip
+XML-Test-Suite
.libs
Index: xmltest.sh
===================================================================
RCS file: /cvsroot/expat/expat/tests/xmltest.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- xmltest.sh 29 Apr 2002 21:31:18 -0000 1.1
+++ xmltest.sh 3 Sep 2002 23:19:30 -0000 1.2
@@ -1,48 +1,127 @@
#! /bin/sh
-VERBOSE=''
+# EXPAT TEST SCRIPT FOR W3C XML TEST SUITE
-if [ "$1" = '-v' -o "$1" = '--verbose' ] ; then
- VERBOSE="$1"
- shift
-fi
+# This script can be used to exercise Expat against the
+# w3c.org xml test suite, available from
+# http://www.w3.org/XML/Test/xmlts20020606.zip.
-if [ ! "$1" = '' ] ; then
- ERRORS=0
- if [ "$VERBOSE" ] ; then
- OUTPUT="/tmp/$$.out"
+# To run this script, first set XMLWF so that xmlwf can be
+# found, then set the output directory with OUTPUT.
+
+# The script lists all test cases where Expat shows a discrepancy
+# from the expected result. Test cases where only the canonical
+# output differs are prefixed with "Output differs:", and a diff file
+# is generated in the appropriate subdirectory under $OUTPUT.
+
+# The script does not use "invalid" test cases for validating parsers.
+# If there are output files provided, the script will use
+# output from xmlwf and compare the desired output against it.
+# However, one has to take into account that the canonical output
+# produced by xmlwf conforms to an older definition of canonical XML
+# and does not generate notation declarations.
+
+MYDIR="`dirname \"$0\"`"
+cd "$MYDIR"
+MYDIR="`pwd`"
+XMLWF="`dirname \"$MYDIR\"`/xmlwf/xmlwf"
+# XMLWF=/usr/local/bin/xmlwf
+# XMLWF=f:/Libraries/XML/expat/xmlwf/release/xmlwf
+TS="$MYDIR/XML-Test-Suite"
+# OUTPUT must terminate with the directory separater.
+OUTPUT="$TS/out/"
+# OUTPUT=/home/tmp/xml-testsuite-out/
+# OUTPUT=f:/Libraries/XML/XML-Test-Suite/out/
+
+RunXmlwfNotWF() {
+ $XMLWF $1 $2 > outfile || return $?
+ read outdata < outfile
+ if test "$outdata" = "" ; then
+ echo "Well formed: $3$2"
+ return 1
+ else
+ return 0
+ fi
+}
+
+RunXmlwfWF() {
+ $XMLWF $1 -d "$OUTPUT$3" $2 > outfile || return $?
+ read outdata < outfile
+ if test "$outdata" = "" ; then
+ if [ -f out/$2 ] ; then
+ diff "$OUTPUT$3$2" out/$2 > outfile
+ if [ -s outfile ] ; then
+ cp outfile $OUTPUT$3${2}.diff
+ echo "Output differs: $3$2"
+ return 1
+ fi
+ fi
+ return 0
+ else
+ echo "In $3: $outdata"
+ return 1
+ fi
+}
+
+SUCCESS=0
+ERROR=0
+
+cd "$TS/xmlconf"
+for xmldir in ibm/valid/P*/ \
+ xmltest/valid/ext-sa/ \
+ xmltest/valid/not-sa/ \
+ xmltest/valid/sa/ \
+ sun/valid/ ; do
+ cd "$TS/xmlconf/$xmldir"
+ mkdir -p "$OUTPUT$xmldir"
+ for xmlfile in *.xml ; do
+ if RunXmlwfWF -p "$xmlfile" "$xmldir" ; then
+ SUCCESS=`expr $SUCCESS + 1`
+ else
+ ERROR=`expr $ERROR + 1`
+ fi
+ done
+ rm outfile
+done
+
+cd "$TS/xmlconf/oasis"
+mkdir -p "$OUTPUT"oasis/
+for xmlfile in *pass*.xml ; do
+ if RunXmlwfWF -p "$xmlfile" "oasis/" ; then
+ SUCCESS=`expr $SUCCESS + 1`
else
- OUTPUT="/dev/null"
- fi
- while [ "$1" ] ; do
- FILE="`basename \"$1\"`"
- DIR="`dirname \"$1\"`"
- DIR="`dirname \"$DIR\"`"
- ../xmlwf/xmlwf -d /tmp "$DIR/$FILE"
- diff -u "$DIR/out/$FILE" "/tmp/$FILE" >$OUTPUT
- ERR=$?
- rm "/tmp/$FILE"
- if [ ! "$ERR" = 0 ] ; then
- ERRORS=`expr $ERRORS + 1`
- echo "$DIR/$FILE ... Error"
- cat $OUTPUT
- elif [ "$VERBOSE" ] ; then
- echo "$DIR/$FILE ... Ok"
- fi
- shift
- done
- if [ "$VERBOSE" ] ; then
- rm $OUTPUT
- fi
- if [ ! "$ERRORS" = '0' ] ; then
- echo " Errors: $ERRORS"
- exit 1
+ ERROR=`expr $ERROR + 1`
fi
-else
- SCRIPTDIR="`dirname \"$0\"`"
- cd "$SCRIPTDIR"
- find xmltest -name \*.xml | grep /out/ | xargs ./xmltest.sh $VERBOSE
- if [ ! "$?" = "0" ] ; then
- exit 1
+done
+rm outfile
+
+cd "$TS/xmlconf"
+for xmldir in ibm/not-wf/P*/ \
+ ibm/not-wf/misc/ \
+ xmltest/not-wf/ext-sa/ \
+ xmltest/not-wf/not-sa/ \
+ xmltest/not-wf/sa/ \
+ sun/not-wf/ ; do
+ cd "$TS/xmlconf/$xmldir"
+ for xmlfile in *.xml ; do
+ if RunXmlwfNotWF -p "$xmlfile" "$xmldir" ; then
+ SUCCESS=`expr $SUCCESS + 1`
+ else
+ ERROR=`expr $ERROR + 1`
+ fi
+ done
+ rm outfile
+done
+
+cd "$TS/xmlconf/oasis"
+for xmlfile in *fail*.xml ; do
+ if RunXmlwfNotWF -p "$xmlfile" "oasis/" ; then
+ SUCCESS=`expr $SUCCESS + 1`
+ else
+ ERROR=`expr $ERROR + 1`
fi
-fi
+done
+rm outfile
+
+echo "Passed: $SUCCESS"
+echo "Failed: $ERROR"