Merge branch 'MDL-69251-311' of https://github.com/snake/moodle into MOODLE_311_STABLE
[moodle.git] / lib / phpunit / phpunit.xsd
blob3785d21fef7737d158257360a3a14d2500efc215
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3 <xs:annotation>
4 <xs:documentation source="https://phpunit.de/documentation.html">
5 This Schema file defines the rules by which the XML configuration file of PHPUnit 9.5 may be structured.
6 </xs:documentation>
7 <xs:appinfo source="https://phpunit.de/documentation.html"/>
8 </xs:annotation>
9 <xs:element name="phpunit" type="phpUnitType">
10 <xs:annotation>
11 <xs:documentation>Root Element</xs:documentation>
12 </xs:annotation>
13 </xs:element>
14 <xs:complexType name="coverageType">
15 <xs:all>
16 <xs:element name="include" minOccurs="0" maxOccurs="1">
17 <xs:complexType>
18 <xs:group ref="pathGroup"/>
19 </xs:complexType>
20 </xs:element>
21 <xs:element name="exclude" minOccurs="0" maxOccurs="1">
22 <xs:complexType>
23 <xs:group ref="pathGroup"/>
24 </xs:complexType>
25 </xs:element>
26 <xs:element name="report" minOccurs="0" maxOccurs="1">
27 <xs:complexType>
28 <xs:group ref="coverageReportGroup"/>
29 </xs:complexType>
30 </xs:element>
31 </xs:all>
32 <xs:attribute name="cacheDirectory" type="xs:anyURI"/>
33 <xs:attribute name="pathCoverage" type="xs:boolean" default="false"/>
34 <xs:attribute name="includeUncoveredFiles" type="xs:boolean" default="true"/>
35 <xs:attribute name="processUncoveredFiles" type="xs:boolean" default="false"/>
36 <xs:attribute name="ignoreDeprecatedCodeUnits" type="xs:boolean" default="false"/>
37 <xs:attribute name="disableCodeCoverageIgnore" type="xs:boolean" default="false"/>
38 </xs:complexType>
39 <xs:complexType name="loggingType">
40 <xs:group ref="loggingGroup"/>
41 </xs:complexType>
42 <xs:complexType name="groupsType">
43 <xs:choice>
44 <xs:sequence>
45 <xs:element name="include" type="groupType"/>
46 <xs:element name="exclude" type="groupType" minOccurs="0"/>
47 </xs:sequence>
48 <xs:sequence>
49 <xs:element name="exclude" type="groupType"/>
50 </xs:sequence>
51 </xs:choice>
52 </xs:complexType>
53 <xs:complexType name="groupType">
54 <xs:sequence>
55 <xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
56 </xs:sequence>
57 </xs:complexType>
58 <xs:complexType name="extensionsType">
59 <xs:sequence>
60 <xs:element name="extension" type="objectType" maxOccurs="unbounded"/>
61 </xs:sequence>
62 </xs:complexType>
63 <xs:complexType name="listenersType">
64 <xs:sequence>
65 <xs:element name="listener" type="objectType" maxOccurs="unbounded"/>
66 </xs:sequence>
67 </xs:complexType>
68 <xs:complexType name="objectType">
69 <xs:sequence>
70 <xs:element name="arguments" minOccurs="0">
71 <xs:complexType>
72 <xs:group ref="argumentsGroup"/>
73 </xs:complexType>
74 </xs:element>
75 </xs:sequence>
76 <xs:attribute name="class" type="xs:string" use="required"/>
77 <xs:attribute name="file" type="xs:anyURI"/>
78 </xs:complexType>
79 <xs:complexType name="arrayType">
80 <xs:sequence>
81 <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/>
82 </xs:sequence>
83 </xs:complexType>
84 <xs:complexType name="argumentType">
85 <xs:group ref="argumentChoice"/>
86 <xs:attribute name="key" use="required"/>
87 </xs:complexType>
88 <xs:group name="argumentsGroup">
89 <xs:sequence>
90 <xs:choice minOccurs="0" maxOccurs="unbounded">
91 <xs:element name="array" type="arrayType" />
92 <xs:element name="integer" type="xs:integer" />
93 <xs:element name="string" type="xs:string" />
94 <xs:element name="double" type="xs:double" />
95 <xs:element name="null" />
96 <xs:element name="object" type="objectType" />
97 <xs:element name="file" type="xs:anyURI" />
98 <xs:element name="directory" type="xs:anyURI" />
99 <xs:element name="boolean" type="xs:boolean" />
100 </xs:choice>
101 </xs:sequence>
102 </xs:group>
103 <xs:group name="argumentChoice">
104 <xs:choice>
105 <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
106 <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
107 <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
108 <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
109 <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
110 <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
111 <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
112 <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
113 <xs:element name="boolean" type="xs:boolean" minOccurs="0" maxOccurs="unbounded"/>
114 </xs:choice>
115 </xs:group>
116 <xs:simpleType name="columnsType">
117 <xs:union>
118 <xs:simpleType>
119 <xs:restriction base="xs:integer"/>
120 </xs:simpleType>
121 <xs:simpleType>
122 <xs:restriction base="xs:string">
123 <xs:enumeration value="max"/>
124 </xs:restriction>
125 </xs:simpleType>
126 </xs:union>
127 </xs:simpleType>
128 <xs:group name="pathGroup">
129 <xs:sequence>
130 <xs:choice minOccurs="0" maxOccurs="unbounded">
131 <xs:element name="directory" type="directoryFilterType"/>
132 <xs:element name="file" type="fileFilterType"/>
133 </xs:choice>
134 </xs:sequence>
135 </xs:group>
136 <xs:complexType name="directoryFilterType">
137 <xs:simpleContent>
138 <xs:extension base="xs:anyURI">
139 <xs:attribute type="xs:string" name="prefix" default=""/>
140 <xs:attribute type="xs:string" name="suffix" default="Test.php"/>
141 <xs:attributeGroup ref="phpVersionGroup"/>
142 </xs:extension>
143 </xs:simpleContent>
144 </xs:complexType>
145 <xs:simpleType name="executionOrderType">
146 <xs:restriction base="xs:string">
147 <xs:enumeration value="default"/>
148 <xs:enumeration value="defects"/>
149 <xs:enumeration value="depends"/>
150 <xs:enumeration value="depends,defects"/>
151 <xs:enumeration value="depends,duration"/>
152 <xs:enumeration value="depends,random"/>
153 <xs:enumeration value="depends,reverse"/>
154 <xs:enumeration value="depends,size"/>
155 <xs:enumeration value="duration"/>
156 <xs:enumeration value="no-depends"/>
157 <xs:enumeration value="no-depends,defects"/>
158 <xs:enumeration value="no-depends,duration"/>
159 <xs:enumeration value="no-depends,random"/>
160 <xs:enumeration value="no-depends,reverse"/>
161 <xs:enumeration value="no-depends,size"/>
162 <xs:enumeration value="random"/>
163 <xs:enumeration value="reverse"/>
164 <xs:enumeration value="size"/>
165 </xs:restriction>
166 </xs:simpleType>
167 <xs:complexType name="fileFilterType">
168 <xs:simpleContent>
169 <xs:extension base="xs:anyURI">
170 <xs:attributeGroup ref="phpVersionGroup"/>
171 </xs:extension>
172 </xs:simpleContent>
173 </xs:complexType>
174 <xs:attributeGroup name="phpVersionGroup">
175 <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/>
176 <xs:attribute name="phpVersionOperator" type="xs:string" default="&gt;="/>
177 </xs:attributeGroup>
178 <xs:complexType name="phpType">
179 <xs:sequence>
180 <xs:choice maxOccurs="unbounded">
181 <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
182 <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
183 <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
184 <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
185 <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
186 <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
187 <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
188 <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
189 <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
190 <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
191 <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
192 </xs:choice>
193 </xs:sequence>
194 </xs:complexType>
195 <xs:complexType name="namedValueType">
196 <xs:attribute name="name" use="required" type="xs:string"/>
197 <xs:attribute name="value" use="required" type="xs:anySimpleType"/>
198 <xs:attribute name="verbatim" use="optional" type="xs:boolean"/>
199 <xs:attribute name="force" use="optional" type="xs:boolean"/>
200 </xs:complexType>
201 <xs:complexType name="phpUnitType">
202 <xs:annotation>
203 <xs:documentation>The main type specifying the document structure</xs:documentation>
204 </xs:annotation>
205 <xs:group ref="configGroup"/>
206 <xs:attributeGroup ref="configAttributeGroup"/>
207 </xs:complexType>
208 <xs:attributeGroup name="configAttributeGroup">
209 <xs:attribute name="backupGlobals" type="xs:boolean" default="false"/>
210 <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/>
211 <xs:attribute name="bootstrap" type="xs:anyURI"/>
212 <xs:attribute name="cacheResult" type="xs:boolean" default="true"/>
213 <xs:attribute name="cacheResultFile" type="xs:anyURI"/>
214 <xs:attribute name="colors" type="xs:boolean" default="false"/>
215 <xs:attribute name="columns" type="columnsType" default="80"/>
216 <xs:attribute name="convertDeprecationsToExceptions" type="xs:boolean" default="true"/>
217 <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/>
218 <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/>
219 <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/>
220 <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/>
221 <xs:attribute name="printerClass" type="xs:string" default="PHPUnit\TextUI\DefaultResultPrinter"/>
222 <xs:attribute name="printerFile" type="xs:anyURI"/>
223 <xs:attribute name="processIsolation" type="xs:boolean" default="false"/>
224 <xs:attribute name="stopOnDefect" type="xs:boolean" default="false"/>
225 <xs:attribute name="stopOnError" type="xs:boolean" default="false"/>
226 <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/>
227 <xs:attribute name="stopOnWarning" type="xs:boolean" default="false"/>
228 <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/>
229 <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/>
230 <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/>
231 <xs:attribute name="failOnEmptyTestSuite" type="xs:boolean" default="false"/>
232 <xs:attribute name="failOnIncomplete" type="xs:boolean" default="false"/>
233 <xs:attribute name="failOnRisky" type="xs:boolean" default="false"/>
234 <xs:attribute name="failOnSkipped" type="xs:boolean" default="false"/>
235 <xs:attribute name="failOnWarning" type="xs:boolean" default="false"/>
236 <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/>
237 <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/>
238 <xs:attribute name="beStrictAboutResourceUsageDuringSmallTests" type="xs:boolean" default="false"/>
239 <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="true"/>
240 <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/>
241 <xs:attribute name="beStrictAboutCoversAnnotation" type="xs:boolean" default="false"/>
242 <xs:attribute name="defaultTimeLimit" type="xs:integer" default="0"/>
243 <xs:attribute name="enforceTimeLimit" type="xs:boolean" default="false"/>
244 <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/>
245 <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/>
246 <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/>
247 <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit\Runner\StandardTestSuiteLoader"/>
248 <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/>
249 <xs:attribute name="defaultTestSuite" type="xs:string" default=""/>
250 <xs:attribute name="verbose" type="xs:boolean" default="false"/>
251 <xs:attribute name="testdox" type="xs:boolean" default="false"/>
252 <xs:attribute name="stderr" type="xs:boolean" default="false"/>
253 <xs:attribute name="reverseDefectList" type="xs:boolean" default="false"/>
254 <xs:attribute name="registerMockObjectsFromTestArgumentsRecursively" type="xs:boolean" default="false"/>
255 <xs:attribute name="extensionsDirectory" type="xs:string"/>
256 <xs:attribute name="executionOrder" type="executionOrderType" default="default"/>
257 <xs:attribute name="resolveDependencies" type="xs:boolean" default="true"/>
258 <xs:attribute name="noInteraction" type="xs:boolean" default="false"/>
259 </xs:attributeGroup>
260 <xs:group name="configGroup">
261 <xs:all>
262 <xs:element ref="testSuiteFacet" minOccurs="0"/>
263 <xs:element name="groups" type="groupsType" minOccurs="0"/>
264 <xs:element name="testdoxGroups" type="groupsType" minOccurs="0"/>
265 <xs:element name="coverage" type="coverageType" minOccurs="0"/>
266 <xs:element name="logging" type="loggingType" minOccurs="0"/>
267 <xs:element name="extensions" type="extensionsType" minOccurs="0"/>
268 <xs:element name="listeners" type="listenersType" minOccurs="0"/>
269 <xs:element name="php" type="phpType" minOccurs="0"/>
270 </xs:all>
271 </xs:group>
272 <xs:element name="testSuiteFacet" abstract="true"/>
273 <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/>
274 <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/>
275 <xs:complexType name="testSuitesType">
276 <xs:sequence>
277 <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/>
278 </xs:sequence>
279 </xs:complexType>
280 <xs:complexType name="testSuiteType">
281 <xs:sequence>
282 <xs:group ref="pathGroup"/>
283 <xs:element name="exclude" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
284 </xs:sequence>
285 <xs:attribute name="name" type="xs:string" use="required"/>
286 </xs:complexType>
287 <xs:group name="coverageReportGroup">
288 <xs:all>
289 <xs:element name="clover" type="logToFileType" minOccurs="0"/>
290 <xs:element name="cobertura" type="logToFileType" minOccurs="0"/>
291 <xs:element name="crap4j" type="coverageReportCrap4JType" minOccurs="0" />
292 <xs:element name="html" type="coverageReportHtmlType" minOccurs="0" />
293 <xs:element name="php" type="logToFileType" minOccurs="0" />
294 <xs:element name="text" type="coverageReportTextType" minOccurs="0" />
295 <xs:element name="xml" type="logToDirectoryType" minOccurs="0" />
296 </xs:all>
297 </xs:group>
298 <xs:group name="loggingGroup">
299 <xs:all>
300 <xs:element name="junit" type="logToFileType" minOccurs="0" />
301 <xs:element name="teamcity" type="logToFileType" minOccurs="0" />
302 <xs:element name="testdoxHtml" type="logToFileType" minOccurs="0" />
303 <xs:element name="testdoxText" type="logToFileType" minOccurs="0" />
304 <xs:element name="testdoxXml" type="logToFileType" minOccurs="0" />
305 <xs:element name="text" type="logToFileType" minOccurs="0"/>
306 </xs:all>
307 </xs:group>
308 <xs:complexType name="logToFileType">
309 <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
310 </xs:complexType>
311 <xs:complexType name="logToDirectoryType">
312 <xs:attribute name="outputDirectory" type="xs:anyURI" use="required"/>
313 </xs:complexType>
314 <xs:complexType name="coverageReportCrap4JType">
315 <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
316 <xs:attribute name="threshold" type="xs:integer"/>
317 </xs:complexType>
318 <xs:complexType name="coverageReportHtmlType">
319 <xs:attribute name="outputDirectory" type="xs:anyURI" use="required"/>
320 <xs:attribute name="lowUpperBound" type="xs:integer" default="50"/>
321 <xs:attribute name="highLowerBound" type="xs:integer" default="90"/>
322 </xs:complexType>
323 <xs:complexType name="coverageReportTextType">
324 <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
325 <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/>
326 <xs:attribute name="showOnlySummary" type="xs:boolean" default="false"/>
327 </xs:complexType>
328 </xs:schema>