File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / expat / tests / xmltest.sh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:00:54 2012 UTC (12 years, 4 months ago) by misho
Branches: expat, MAIN
CVS tags: v2_0_1p0, v2_0_1, HEAD
expat

    1: #! /bin/sh
    2: 
    3: #   EXPAT TEST SCRIPT FOR W3C XML TEST SUITE
    4: 
    5: # This script can be used to exercise Expat against the
    6: # w3c.org xml test suite, available from
    7: # http://www.w3.org/XML/Test/xmlts20020606.zip.
    8: 
    9: # To run this script, first set XMLWF so that xmlwf can be
   10: # found, then set the output directory with OUTPUT.
   11: 
   12: # The script lists all test cases where Expat shows a discrepancy
   13: # from the expected result. Test cases where only the canonical
   14: # output differs are prefixed with "Output differs:", and a diff file
   15: # is generated in the appropriate subdirectory under $OUTPUT.
   16: 
   17: # If there are output files provided, the script will use
   18: # output from xmlwf and compare the desired output against it.
   19: # However, one has to take into account that the canonical output
   20: # produced by xmlwf conforms to an older definition of canonical XML
   21: # and does not generate notation declarations.
   22: 
   23: MYDIR="`dirname \"$0\"`"
   24: cd "$MYDIR"
   25: MYDIR="`pwd`"
   26: XMLWF="`dirname \"$MYDIR\"`/xmlwf/xmlwf"
   27: # XMLWF=/usr/local/bin/xmlwf
   28: TS="$MYDIR/XML-Test-Suite"
   29: # OUTPUT must terminate with the directory separator.
   30: OUTPUT="$TS/out/"
   31: # OUTPUT=/home/tmp/xml-testsuite-out/
   32: 
   33: 
   34: # RunXmlwfNotWF file reldir
   35: # reldir includes trailing slash
   36: RunXmlwfNotWF() {
   37:   file="$1"
   38:   reldir="$2"
   39:   $XMLWF -p "$file" > outfile || return $?
   40:   read outdata < outfile
   41:   if test "$outdata" = "" ; then
   42:       echo "Expected well-formed: $reldir$file"
   43:       return 1
   44:   else
   45:       return 0
   46:   fi 
   47: }
   48: 
   49: # RunXmlwfWF file reldir
   50: # reldir includes trailing slash
   51: RunXmlwfWF() {
   52:   file="$1"
   53:   reldir="$2"
   54:   $XMLWF -p -d "$OUTPUT$reldir" "$file" > outfile || return $?
   55:   read outdata < outfile 
   56:   if test "$outdata" = "" ; then 
   57:       if [ -f "out/$file" ] ; then 
   58:           diff "$OUTPUT$reldir$file" "out/$file" > outfile 
   59:           if [ -s outfile ] ; then 
   60:               cp outfile "$OUTPUT$reldir$file.diff"
   61:               echo "Output differs: $reldir$file"
   62:               return 1
   63:           fi 
   64:       fi 
   65:       return 0
   66:   else 
   67:       echo "In $reldir: $outdata"
   68:       return 1
   69:   fi 
   70: }
   71: 
   72: SUCCESS=0
   73: ERROR=0
   74: 
   75: UpdateStatus() {
   76:   if [ "$1" -eq 0 ] ; then
   77:     SUCCESS=`expr $SUCCESS + 1`
   78:   else
   79:     ERROR=`expr $ERROR + 1`
   80:   fi
   81: }
   82: 
   83: ##########################
   84: # well-formed test cases #
   85: ##########################
   86: 
   87: cd "$TS/xmlconf"
   88: for xmldir in ibm/valid/P* \
   89:               ibm/invalid/P* \
   90:               xmltest/valid/ext-sa \
   91:               xmltest/valid/not-sa \
   92:               xmltest/invalid \
   93:               xmltest/invalid/not-sa \
   94:               xmltest/valid/sa \
   95:               sun/valid \
   96:               sun/invalid ; do
   97:   cd "$TS/xmlconf/$xmldir"
   98:   mkdir -p "$OUTPUT$xmldir"
   99:   for xmlfile in *.xml ; do
  100:       RunXmlwfWF "$xmlfile" "$xmldir/"
  101:       UpdateStatus $?
  102:   done
  103:   rm outfile
  104: done
  105: 
  106: cd "$TS/xmlconf/oasis"
  107: mkdir -p "$OUTPUT"oasis
  108: for xmlfile in *pass*.xml ; do
  109:     RunXmlwfWF "$xmlfile" "oasis/"
  110:     UpdateStatus $?
  111: done
  112: rm outfile
  113: 
  114: ##############################
  115: # not well-formed test cases #
  116: ##############################
  117: 
  118: cd "$TS/xmlconf"
  119: for xmldir in ibm/not-wf/P* \
  120:               ibm/not-wf/misc \
  121:               xmltest/not-wf/ext-sa \
  122:               xmltest/not-wf/not-sa \
  123:               xmltest/not-wf/sa \
  124:               sun/not-wf ; do
  125:   cd "$TS/xmlconf/$xmldir"
  126:   for xmlfile in *.xml ; do
  127:       RunXmlwfNotWF "$xmlfile" "$xmldir/"
  128:       UpdateStatus $?
  129:   done
  130:   rm outfile
  131: done
  132: 
  133: cd "$TS/xmlconf/oasis"
  134: for xmlfile in *fail*.xml ; do
  135:     RunXmlwfNotWF "$xmlfile" "oasis/"
  136:     UpdateStatus $?
  137: done
  138: rm outfile
  139: 
  140: echo "Passed: $SUCCESS"
  141: echo "Failed: $ERROR"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>