]>
Commit | Line | Data |
---|---|---|
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 below 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 not 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 -u "$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/p28a \ | |
121 | ibm/not-wf/misc \ | |
122 | xmltest/not-wf/ext-sa \ | |
123 | xmltest/not-wf/not-sa \ | |
124 | xmltest/not-wf/sa \ | |
125 | sun/not-wf ; do | |
126 | cd "$TS/xmlconf/$xmldir" | |
127 | for xmlfile in *.xml ; do | |
128 | RunXmlwfNotWF "$xmlfile" "$xmldir/" | |
129 | UpdateStatus $? | |
130 | done | |
131 | rm outfile | |
132 | done | |
133 | ||
134 | cd "$TS/xmlconf/oasis" | |
135 | for xmlfile in *fail*.xml ; do | |
136 | RunXmlwfNotWF "$xmlfile" "oasis/" | |
137 | UpdateStatus $? | |
138 | done | |
139 | rm outfile | |
140 | ||
141 | echo "Passed: $SUCCESS" | |
142 | echo "Failed: $ERROR" |