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/manual/5.7/en/appendixes.configuration.html"> 5 This Schema file defines the rules by which the XML configuration file of PHPUnit 5.7 may be structured. 6 </xs:documentation> 7 <xs:appinfo source="https://phpunit.de/manual/5.7/en/appendixes.configuration.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="filtersType"> 15 <xs:sequence> 16 <xs:element name="whitelist" type="whiteListType" minOccurs="0"/> 17 </xs:sequence> 18 </xs:complexType> 19 <xs:complexType name="filterType"> 20 <xs:sequence> 21 <xs:group ref="pathGroup"/> 22 <xs:element name="exclude" maxOccurs="unbounded" minOccurs="0"> 23 <xs:complexType> 24 <xs:group ref="pathGroup"/> 25 </xs:complexType> 26 </xs:element> 27 </xs:sequence> 28 </xs:complexType> 29 <xs:complexType name="whiteListType"> 30 <xs:complexContent> 31 <xs:extension base="filterType"> 32 <xs:attribute name="addUncoveredFilesFromWhitelist" default="true" type="xs:boolean"/> 33 <xs:attribute name="processUncoveredFilesFromWhitelist" default="false" type="xs:boolean"/> 34 </xs:extension> 35 </xs:complexContent> 36 </xs:complexType> 37 <xs:complexType name="groupsType"> 38 <xs:choice> 39 <xs:sequence> 40 <xs:element name="include" type="groupType"/> 41 <xs:element name="exclude" type="groupType" minOccurs="0"/> 42 </xs:sequence> 43 <xs:sequence> 44 <xs:element name="exclude" type="groupType"/> 45 </xs:sequence> 46 </xs:choice> 47 </xs:complexType> 48 <xs:complexType name="groupType"> 49 <xs:sequence> 50 <xs:element name="group" type="xs:string" maxOccurs="unbounded"/> 51 </xs:sequence> 52 </xs:complexType> 53 <xs:complexType name="listenersType"> 54 <xs:sequence> 55 <xs:element name="listener" type="objectType" maxOccurs="unbounded"/> 56 </xs:sequence> 57 </xs:complexType> 58 <xs:complexType name="objectType"> 59 <xs:sequence> 60 <xs:element name="arguments" minOccurs="0"> 61 <xs:complexType> 62 <xs:group ref="argumentsGroup"/> 63 </xs:complexType> 64 </xs:element> 65 </xs:sequence> 66 <xs:attribute name="class" type="xs:string" use="required"/> 67 <xs:attribute name="file" type="xs:anyURI"/> 68 </xs:complexType> 69 <xs:complexType name="arrayType"> 70 <xs:sequence> 71 <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/> 72 </xs:sequence> 73 </xs:complexType> 74 <xs:complexType name="argumentType"> 75 <xs:group ref="argumentChoice"/> 76 <xs:attribute name="key" use="required"/> 77 </xs:complexType> 78 <xs:group name="argumentsGroup"> 79 <xs:sequence> 80 <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/> 81 <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/> 82 <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 83 <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/> 84 <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/> 85 <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/> 86 <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 87 <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 88 </xs:sequence> 89 </xs:group> 90 <xs:group name="argumentChoice"> 91 <xs:choice> 92 <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/> 93 <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/> 94 <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 95 <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/> 96 <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/> 97 <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/> 98 <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 99 <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 100 </xs:choice> 101 </xs:group> 102 <xs:complexType name="loggersType"> 103 <xs:sequence> 104 <xs:element name="log" type="loggerType" maxOccurs="unbounded"/> 105 </xs:sequence> 106 </xs:complexType> 107 <xs:complexType name="loggerType"> 108 <xs:attribute name="type"> 109 <xs:simpleType> 110 <xs:restriction base="xs:string"> 111 <xs:enumeration value="coverage-html"/> 112 <xs:enumeration value="coverage-text"/> 113 <xs:enumeration value="coverage-clover"/> 114 <xs:enumeration value="coverage-crap4j"/> 115 <xs:enumeration value="coverage-xml"/> 116 <xs:enumeration value="json"/> 117 <xs:enumeration value="plain"/> 118 <xs:enumeration value="tap"/> 119 <xs:enumeration value="teamcity"/> 120 <xs:enumeration value="junit"/> 121 <xs:enumeration value="testdox-html"/> 122 <xs:enumeration value="testdox-text"/> 123 <xs:enumeration value="testdox-xml"/> 124 </xs:restriction> 125 </xs:simpleType> 126 </xs:attribute> 127 <xs:attribute name="target" type="xs:anyURI"/> 128 <xs:attribute name="lowUpperBound" type="xs:nonNegativeInteger" default="35"/> 129 <xs:attribute name="highLowerBound" type="xs:nonNegativeInteger" default="70"/> 130 <xs:attribute name="logIncompleteSkipped" type="xs:boolean" default="false"/> 131 <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/> 132 <xs:attribute name="threshold" type="xs:nonNegativeInteger" default="30"/> 133 </xs:complexType> 134 <xs:group name="pathGroup"> 135 <xs:sequence> 136 <xs:element name="directory" type="directoryFilterType" minOccurs="0" maxOccurs="unbounded"/> 137 <xs:element name="file" type="fileFilterType" minOccurs="0" maxOccurs="unbounded"/> 138 </xs:sequence> 139 </xs:group> 140 <xs:complexType name="directoryFilterType"> 141 <xs:simpleContent> 142 <xs:extension base="xs:anyURI"> 143 <xs:attribute type="xs:string" name="suffix" default="Test.php"/> 144 <xs:attributeGroup ref="phpVersionGroup"/> 145 </xs:extension> 146 </xs:simpleContent> 147 </xs:complexType> 148 <xs:complexType name="fileFilterType"> 149 <xs:simpleContent> 150 <xs:extension base="xs:anyURI"> 151 <xs:attributeGroup ref="phpVersionGroup"/> 152 </xs:extension> 153 </xs:simpleContent> 154 </xs:complexType> 155 <xs:attributeGroup name="phpVersionGroup"> 156 <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/> 157 <xs:attribute name="phpVersionOperator" type="xs:string" default=">="/> 158 </xs:attributeGroup> 159 <xs:complexType name="phpType"> 160 <xs:sequence> 161 <xs:choice maxOccurs="unbounded"> 162 <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 163 <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 164 <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 165 <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 166 <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 167 <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 168 <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 169 <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 170 <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 171 <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 172 <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/> 173 </xs:choice> 174 </xs:sequence> 175 </xs:complexType> 176 <xs:complexType name="namedValueType"> 177 <xs:attribute name="name" use="required" type="xs:string"/> 178 <xs:attribute name="value" use="required" type="xs:anySimpleType"/> 179 </xs:complexType> 180 <xs:complexType name="phpUnitType"> 181 <xs:annotation> 182 <xs:documentation>The main type specifying the document structure</xs:documentation> 183 </xs:annotation> 184 <xs:group ref="configGroup"/> 185 <xs:attributeGroup ref="configAttributeGroup"/> 186 </xs:complexType> 187 <xs:attributeGroup name="configAttributeGroup"> 188 <xs:attribute name="backupGlobals" type="xs:boolean" default="true"/> 189 <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/> 190 <xs:attribute name="bootstrap" type="xs:anyURI"/> 191 <xs:attribute name="cacheTokens" type="xs:boolean"/> 192 <xs:attribute name="colors" type="xs:boolean" default="false"/> 193 <xs:attribute name="columns" type="xs:integer" default="80"/> 194 <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/> 195 <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/> 196 <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/> 197 <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/> 198 <xs:attribute name="printerClass" type="xs:string" default="PHPUnit_TextUI_ResultPrinter"/> 199 <xs:attribute name="printerFile" type="xs:anyURI"/> 200 <xs:attribute name="processIsolation" type="xs:boolean" default="false"/> 201 <xs:attribute name="stopOnError" type="xs:boolean" default="false"/> 202 <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/> 203 <xs:attribute name="stopOnWarning" type="xs:boolean" default="false"/> 204 <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/> 205 <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/> 206 <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/> 207 <xs:attribute name="failOnRisky" type="xs:boolean" default="false"/> 208 <xs:attribute name="failOnWarning" type="xs:boolean" default="false"/> 209 <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/> 210 <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/> 211 <xs:attribute name="beStrictAboutResourceUsageDuringSmallTests" type="xs:boolean" default="false"/> 212 <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="false"/> 213 <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/> 214 <xs:attribute name="beStrictAboutCoversAnnotation" type="xs:boolean" default="false"/> 215 <xs:attribute name="checkForUnintentionallyCoveredCode" type="xs:boolean" default="false"/> 216 <xs:attribute name="enforceTimeLimit" type="xs:boolean" default="false"/> 217 <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/> 218 <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/> 219 <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/> 220 <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit_Runner_StandardTestSuiteLoader"/> 221 <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/> 222 <xs:attribute name="verbose" type="xs:boolean" default="false"/> 223 <xs:attribute name="stderr" type="xs:boolean" default="false"/> 224 <xs:attribute name="reverseDefectList" type="xs:boolean" default="false"/> 225 <xs:attribute name="registerMockObjectsFromTestArgumentsRecursively" type="xs:boolean" default="false"/> 226 <xs:attribute name="extensionsDirectory" type="xs:string"/> 227 </xs:attributeGroup> 228 <xs:group name="configGroup"> 229 <xs:all> 230 <xs:element ref="testSuiteFacet" minOccurs="0"/> 231 <xs:element name="groups" type="groupsType" minOccurs="0"/> 232 <xs:element name="testdoxGroups" type="groupsType" minOccurs="0"/> 233 <xs:element name="filter" type="filtersType" minOccurs="0"/> 234 <xs:element name="logging" type="loggersType" minOccurs="0"/> 235 <xs:element name="listeners" type="listenersType" minOccurs="0"/> 236 <xs:element name="php" type="phpType" minOccurs="0"/> 237 </xs:all> 238 </xs:group> 239 <xs:element name="testSuiteFacet" abstract="true"/> 240 <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/> 241 <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/> 242 <xs:complexType name="testSuitesType"> 243 <xs:sequence> 244 <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/> 245 </xs:sequence> 246 </xs:complexType> 247 <xs:complexType name="testSuiteType"> 248 <xs:sequence> 249 <xs:group ref="pathGroup"/> 250 <xs:element name="exclude" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> 251 </xs:sequence> 252 <xs:attribute name="name" type="xs:string" use="required"/> 253 </xs:complexType> 254</xs:schema> 255