xml/xmlexpatparser/src/expat-1.95.5/tests/xmltest.sh
changeset 0 e35f40988205
equal deleted inserted replaced
-1:000000000000 0:e35f40988205
       
     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() {
       
    35   $XMLWF $1 $2 > outfile || return $?
       
    36   read outdata < outfile
       
    37   if test "$outdata" = "" ; then
       
    38       echo "Well formed: $3$2"
       
    39       return 1
       
    40   else
       
    41       return 0
       
    42   fi 
       
    43 }
       
    44 
       
    45 RunXmlwfWF() {
       
    46   $XMLWF $1 -d "$OUTPUT$3" $2 > outfile || return $?
       
    47   read outdata < outfile 
       
    48   if test "$outdata" = "" ; then 
       
    49       if [ -f out/$2 ] ; then 
       
    50           diff "$OUTPUT$3$2" out/$2 > outfile 
       
    51           if [ -s outfile ] ; then 
       
    52               cp outfile $OUTPUT$3${2}.diff 
       
    53               echo "Output differs: $3$2"
       
    54               return 1
       
    55           fi 
       
    56       fi 
       
    57       return 0
       
    58   else 
       
    59       echo "In $3: $outdata"
       
    60       return 1
       
    61   fi 
       
    62 }
       
    63 
       
    64 SUCCESS=0
       
    65 ERROR=0
       
    66 
       
    67 ##########################
       
    68 # well-formed test cases #
       
    69 ##########################
       
    70 
       
    71 cd "$TS/xmlconf"
       
    72 for xmldir in ibm/valid/P*/ \
       
    73               ibm/invalid/P*/ \
       
    74               xmltest/valid/ext-sa/ \
       
    75               xmltest/valid/not-sa/ \
       
    76               xmltest/invalid/ \
       
    77               xmltest/invalid/not-sa/ \
       
    78               xmltest/valid/sa/ \
       
    79               sun/valid/ \
       
    80               sun/invalid/ ; do
       
    81   cd "$TS/xmlconf/$xmldir"
       
    82   mkdir -p "$OUTPUT$xmldir"
       
    83   for xmlfile in *.xml ; do
       
    84       if RunXmlwfWF -p "$xmlfile" "$xmldir" ; then
       
    85           SUCCESS=`expr $SUCCESS + 1`
       
    86       else
       
    87           ERROR=`expr $ERROR + 1`
       
    88       fi
       
    89   done
       
    90   rm outfile
       
    91 done
       
    92 
       
    93 cd "$TS/xmlconf/oasis"
       
    94 mkdir -p "$OUTPUT"oasis/
       
    95 for xmlfile in *pass*.xml ; do
       
    96     if RunXmlwfWF -p "$xmlfile" "oasis/" ; then
       
    97         SUCCESS=`expr $SUCCESS + 1`
       
    98     else
       
    99         ERROR=`expr $ERROR + 1`
       
   100     fi
       
   101 done
       
   102 rm outfile
       
   103 
       
   104 ##############################
       
   105 # not well-formed test cases #
       
   106 ##############################
       
   107 
       
   108 cd "$TS/xmlconf"
       
   109 for xmldir in ibm/not-wf/P*/ \
       
   110               ibm/not-wf/misc/ \
       
   111               xmltest/not-wf/ext-sa/ \
       
   112               xmltest/not-wf/not-sa/ \
       
   113               xmltest/not-wf/sa/ \
       
   114               sun/not-wf/ ; do
       
   115   cd "$TS/xmlconf/$xmldir"
       
   116   for xmlfile in *.xml ; do
       
   117       if RunXmlwfNotWF -p "$xmlfile" "$xmldir" ; then
       
   118           SUCCESS=`expr $SUCCESS + 1`
       
   119       else
       
   120           ERROR=`expr $ERROR + 1`
       
   121       fi
       
   122   done
       
   123   rm outfile
       
   124 done
       
   125 
       
   126 cd "$TS/xmlconf/oasis"
       
   127 for xmlfile in *fail*.xml ; do
       
   128     if RunXmlwfNotWF -p "$xmlfile" "oasis/" ; then
       
   129         SUCCESS=`expr $SUCCESS + 1`
       
   130     else
       
   131         ERROR=`expr $ERROR + 1`
       
   132     fi
       
   133 done
       
   134 rm outfile
       
   135 
       
   136 echo "Passed: $SUCCESS"
       
   137 echo "Failed: $ERROR"