<?xml version="1.0" encoding="UTF-8"?>
<!--
  Minimal local schema for PHPUnit 10.x
  Covers php, testsuites, source, coverage/report, logging.
  Works offline and matches official element names.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

    <xs:element name="phpunit">
        <xs:complexType>
            <xs:sequence>

                <!-- php -->
                <xs:element name="php" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="env" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:attribute name="name"  type="xs:string" use="required"/>
                                    <xs:attribute name="value" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <!-- testsuites -->
                <xs:element name="testsuites" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="testsuite" minOccurs="1" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="directory" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
                                    </xs:sequence>
                                    <xs:attribute name="name" type="xs:string" use="optional"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <!-- source -->
                <xs:element name="source" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="include" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="directory" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="exclude" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="directory" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <!-- coverage -->
                <xs:element name="coverage" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="report" minOccurs="0">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="clover" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:attribute name="outputFile" type="xs:string" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="html" minOccurs="0" maxOccurs="1">
                                            <xs:complexType>
                                                <xs:attribute name="outputDirectory" type="xs:string" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

                <!-- logging -->
                <xs:element name="logging" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="testdoxText" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:attribute name="outputFile" type="xs:string" use="required"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>

            <!-- attributes -->
            <xs:attribute name="bootstrap" type="xs:string" use="optional"/>
            <xs:attribute name="colors" type="xs:string" use="optional"/>
            <xs:attribute name="cacheDirectory" type="xs:string" use="optional"/>
            <xs:attribute name="executionOrder" type="xs:string" use="optional"/>
            <xs:attribute name="failOnWarning" type="xs:boolean" use="optional"/>
            <xs:attribute name="failOnRisky" type="xs:boolean" use="optional"/>
            <xs:attribute name="stopOnFailure" type="xs:boolean" use="optional"/>
            <xs:attribute name="displayDetailsOnIncompleteTests" type="xs:boolean" use="optional"/>
            <xs:attribute name="displayDetailsOnSkippedTests" type="xs:boolean" use="optional"/>

        </xs:complexType>
    </xs:element>

</xs:schema>
