home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _218a95c13b8bd15c01cf58851dc3108b < prev    next >
Text File  |  2004-06-01  |  4KB  |  138 lines

  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"
  138.