<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements. See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership. The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied. See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         bootstrap="test/bootstrap.php"
         cacheResult="false"
         colors="true"
         stopOnWarning="true"
         stopOnFailure="true"
         processIsolation="true"
         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd">
    <source>
        <include>
            <directory suffix=".php">./lib</directory>
        </include>
    </source>
    <testsuites>
        <testsuite name="Thrift PHP Unit Test Suite">
            <directory>./test/Unit</directory>
        </testsuite>
        <testsuite name="Thrift PHP Integration Test Suite">
            <directory>./test/Integration</directory>
        </testsuite>
    </testsuites>
</phpunit>
