<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
         backupGlobals="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         failOnNotice="true"
         failOnWarning="true"
         displayDetailsOnTestsThatTriggerDeprecations="true"
         displayDetailsOnTestsThatTriggerErrors="true"
         displayDetailsOnTestsThatTriggerNotices="true"
         displayDetailsOnTestsThatTriggerWarnings="true"
         displayDetailsOnPhpunitDeprecations="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>
        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <!-- Tests that need the real asset build run only in the gate (docker/web-gate.sh), never in the default run. -->
    <!-- Tests of a Laravel or PHP version the application has left are excluded by their group (see tests/README.md, Version-dependent tests). -->
    <groups>
        <exclude>
            <group>built-assets</group>
            <group>laravel-6-only</group>
            <group>laravel-6-to-7-only</group>
            <group>laravel-7-only</group>
            <group>laravel-6-to-8-only</group>
            <group>laravel-8-only</group>
            <group>php-7-to-8.0-only</group>
            <group>php-7-to-8.1-only</group>
            <group>laravel-6-to-9-only</group>
            <group>laravel-9-only</group>
            <group>phpunit-9-only</group>
            <group>laravel-8-to-10-only</group>
            <group>laravel-9-to-10-only</group>
            <group>laravel-10-only</group>
            <group>php-7-to-8.2-only</group>
            <group>phpunit-10-only</group>
            <group>laravel-11-only</group>
            <group>laravel-6-to-11-only</group>
            <group>laravel-8-to-11-only</group>
            <group>laravel-10-to-11-only</group>
            <group>laravel-12-only</group>
            <group>laravel-6-to-12-only</group>
            <group>laravel-9-to-12-only</group>
        </exclude>
    </groups>
    <source>
        <include>
            <directory suffix=".php">./app</directory>
        </include>
    </source>
    <php>
        <!-- PHP runs in Asia/Tokyo (config/app.php) while the MySQL server clock is UTC: pin the PHP side before the application boots. -->
        <ini name="date.timezone" value="Asia/Tokyo"/>
        <!-- Every test boots its own application and PHP 7.4 without OPcache keeps the compiled closures of the route file it includes for each one (about 0.18 MB per test), so the default 128 MB runs out after a few hundred tests; see tests/README.md. -->
        <ini name="memory_limit" value="2G"/>
        <!-- The application throws for any APP_ENV except production, staging and local, so tests run as local. -->
        <server name="APP_ENV" value="local"/>
        <server name="APP_DEBUG" value="false"/>
        <server name="APP_KEY" value="base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="/>
        <server name="APP_URL" value="http://localhost"/>
        <server name="BCRYPT_ROUNDS" value="4"/>
        <!-- The database is the test database on the shared server; both connections of config/database.php are pinned. -->
        <server name="DB_CONNECTION" value="mysql"/>
        <server name="DB_HOST" value="mysql"/>
        <server name="DB_MASTER_HOST" value="mysql"/>
        <server name="DB_MASTER_PORT" value="3306"/>
        <server name="DB_DATABASE" value="web_test"/>
        <server name="DB_USERNAME" value="root"/>
        <server name="DB_PASSWORD" value="root"/>
        <server name="DB_SLAVE_HOST" value="mysql"/>
        <server name="DB_SLAVE_PORT" value="3306"/>
        <server name="DB_SLAVE_DATABASE" value="web_test"/>
        <server name="DB_SLAVE_USERNAME" value="root"/>
        <server name="DB_SLAVE_PASSWORD" value="root"/>
        <server name="CACHE_DRIVER" value="array"/>
        <server name="SESSION_DRIVER" value="array"/>
        <server name="SESSION_COOKIE" value="web_test_session"/>
        <server name="QUEUE_CONNECTION" value="sync"/>
        <server name="BROADCAST_DRIVER" value="log"/>
        <server name="MAIL_MAILER" value="array"/>
        <server name="MAIL_HOST" value="127.0.0.1"/>
        <server name="MAIL_PORT" value="2525"/>
        <server name="MAIL_FROM_ADDRESS" value="web@example.test"/>
        <server name="MAIL_FROM_NAME" value="Web"/>
        <server name="MAIL_ERROR_NOTICE_ADDRESS" value="errors@example.test"/>
        <server name="MAILGUN_ENDPOINT" value="obic-stub"/>
        <server name="FILESYSTEM_DRIVER" value="local"/>
        <server name="FILESTORE_DRIVER" value="local"/>
        <server name="TRACKING_APP_URL" value="http://localhost/tracking"/>
        <!-- Log shipping targets, if a test ever turns the slack or papertrail channel on, lead to the stub or the loopback address. -->
        <server name="LOG_SLACK_WEBHOOK_URL" value="http://obic-stub/slack-webhook"/>
        <server name="PAPERTRAIL_URL" value="127.0.0.1"/>
        <server name="PAPERTRAIL_PORT" value="514"/>
        <!-- Every outbound target is the stub service of the Docker environment. -->
        <server name="OBIC_API_URL" value="http://obic-stub/apiservice/storage/file/shiiremeisai"/>
        <server name="OBIC_API_KEY" value="dummy-test-key"/>
        <server name="RAKUTEN_CLIENT_ID" value="dummy-client-id"/>
        <server name="RAKUTEN_CLIENT_SECRET" value="dummy-client-secret"/>
        <server name="RAKUTEN_AUTHORIZATION_ENDPOINT" value="http://localhost/dummy-rakuten-authorize"/>
        <server name="RAKUTEN_TOKEN_ENDPOINT" value="http://obic-stub/rakuten/token"/>
        <server name="RAKUTEN_CLIENT_ID_OMNI" value="dummy-client-id-omni"/>
        <server name="RAKUTEN_CLIENT_SECRET_OMNI" value="dummy-client-secret-omni"/>
        <server name="RAKUTEN_AUTHORIZATION_ENDPOINT_OMNI" value="http://localhost/dummy-rakuten-authorize-omni"/>
        <server name="RAKUTEN_TOKEN_ENDPOINT_OMNI" value="http://obic-stub/rakuten/token-omni"/>
        <server name="GOOGLE_CLIENT_ID" value="dummy-google-id"/>
        <server name="GOOGLE_CLIENT_SECRET" value="dummy-google-secret"/>
    </php>
</phpunit>
