<?xml version="1.0" encoding="UTF-8"?>
<project name="wallabag" default="build">
    <target name="build" depends="clean,prepare,phpunit"/>
    <target name="prepare-mysql" depends="clean,db_mysql,prepare"/>
    <target name="prepare-sqlite" depends="clean,db_sqlite,prepare"/>
    <target name="prepare-pgsql" depends="clean,db_pgsql,prepare"/>

    <target name="clean" description="Cleanup build artifacts">
        <delete dir="${basedir}/var/cache"/>
    </target>

    <target name="prepare" description="Prepare for build">
        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="doctrine:database:drop"/>
            <arg value="--force"/>
            <arg value="--env=test"/>
        </exec>
        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="doctrine:database:create"/>
            <arg value="--env=test"/>
        </exec>
        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="doctrine:schema:create"/>
            <arg value="--env=test"/>
        </exec>
        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="cache:clear"/>
            <arg value="--env=test"/>
        </exec>
        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="doctrine:fixtures:load"/>
            <arg value="--no-interaction"/>
            <arg value="--env=test"/>
        </exec>
    </target>

    <target name="db_mysql" description="Run test for MySQL">
        <delete dir="${basedir}/app/config/parameters.yml"/>
        <exec executable="cp">
            <arg value="${basedir}/app/config/tests/parameters.yml.dist.mysql"/>
            <arg value="${basedir}/app/config/parameters.yml"/>
        </exec>

        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="cache:clear"/>
            <arg value="--env=test"/>
        </exec>
    </target>

    <target name="db_sqlite" description="Run test for SQLite">
        <delete dir="${basedir}/app/config/parameters.yml"/>
        <exec executable="cp">
            <arg value="${basedir}/app/config/tests/parameters.yml.dist.sqlite"/>
            <arg value="${basedir}/app/config/parameters.yml"/>
        </exec>

        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="cache:clear"/>
            <arg value="--env=test"/>
        </exec>
    </target>

    <target name="db_pgsql" description="Run test for PostgreSQL">
        <delete dir="${basedir}/app/config/parameters.yml"/>
        <exec executable="cp">
            <arg value="${basedir}/app/config/tests/parameters.yml.dist.pgsql"/>
            <arg value="${basedir}/app/config/parameters.yml"/>
        </exec>

        <exec executable="php">
            <arg value="${basedir}/bin/console"/>
            <arg value="cache:clear"/>
            <arg value="--env=test"/>
        </exec>
    </target>

    <target name="phpunit" description="Run unit tests with PHPUnit + HTML Coverage">
        <exec executable="phpunit" failonerror="true">
            <arg value="--coverage-html"/>
            <arg value="build/coverage"/>
        </exec>
    </target>
</project>
