<?xml version='1.0' encoding='utf-8'?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <parent>
        <groupId>com.mulesoft</groupId>
        <artifactId>munit</artifactId>
        <version>2.0.0-rc</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mulesoft.munit</groupId>
    <artifactId>munit-integration-tests</artifactId>
    <packaging>mule-application</packaging>

    <name>MUnit :: Integration Tests</name>
    <description>Integration Test for Munit Project</description>

    <properties>
        <mule.wsc.connector.version>0.9.0</mule.wsc.connector.version>
        <mule.spring.module.version>0.9.0</mule.spring.module.version>
        <mule.http.connector.version>0.9.0</mule.http.connector.version>
        <mule.validation.module.version>0.9.0</mule.validation.module.version>
        <mule.file.connector.version>0.9.0</mule.file.connector.version>
        <mule.sockets.connector.version>0.9.0</mule.sockets.connector.version>
        <mule.vm.connector.version>0.9.0</mule.vm.connector.version>
        <mule.scripting.module.version>0.9.0</mule.scripting.module.version>
        <!--<apikit.module.version>1.0.0-rc</apikit.module.version>-->
        <mule.compatibility.module.version>1.0.0-rc</mule.compatibility.module.version>
        <smart.connector.using.core.version>4.0.0-rc</smart.connector.using.core.version>

        <xmlunit.version>1.6</xmlunit.version>
        <spring.version>4.1.9.RELEASE</spring.version>
        <spring.security.version>4.0.4.RELEASE</spring.security.version>

        <mule.maven.plugin.version>3.0.0-rc</mule.maven.plugin.version>

        <skipTests>${skipIntegrationTests}</skipTests>
        <skipMunitTests>${skipIntegrationTests}</skipMunitTests>

        <licensePath>../LICENSE_HEADER.txt</licensePath>
        <formatterConfigPath>../formatter.xml</formatterConfigPath>
        <debugger.argline>-Dfake.property=true</debugger.argline>

    </properties>

    <repositories>
        <repository>
            <id>mule-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>https://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mule-snapshots</id>
            <name>MuleSoft Snapshots Repository</name>
            <url>https://repository.mulesoft.org/snapshots/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <build>
        <pluginManagement>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-maven-plugin</artifactId>
                <version>${mule.maven.plugin.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <sharedLibraries>
                        <sharedLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-core</artifactId>
                        </sharedLibrary>
                        <sharedLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-beans</artifactId>
                        </sharedLibrary>
                        <sharedLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-context</artifactId>
                        </sharedLibrary>
                        <sharedLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aop</artifactId>
                        </sharedLibrary>
                        <sharedLibrary>
                            <groupId>org.springframework.security</groupId>
                            <artifactId>spring-security-core</artifactId>
                        </sharedLibrary>
                        <sharedLibrary>
                            <groupId>org.springframework.security</groupId>
                            <artifactId>spring-security-config</artifactId>
                        </sharedLibrary>
                    </sharedLibraries>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.mulesoft.munit.tools</groupId>
                <artifactId>munit-maven-plugin</artifactId>
                <version>${project.version}</version>
                <executions>
                    <execution>
                        <id>test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>generate-coverage-reports</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>coverage-report</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <randomFailMessages>true</randomFailMessages>
                    <dynamicPorts>
                        <dynamicPort>a.dynamic.port</dynamicPort>
                        <dynamicPort>mock.inbounds.test.port</dynamicPort>
                        <dynamicPort>http.extension.test.port</dynamicPort>
                    </dynamicPorts>
                    <systemPropertyVariables>
                        <fake.prop>fake-value</fake.prop>
                        <mule.classloading.verbose>true</mule.classloading.verbose>
                        <a.property.to.be.replaced>replaced-value</a.property.to.be.replaced>
                    </systemPropertyVariables>
                    <environmentVariables>
                        <MY_ENV>envVar</MY_ENV>
                    </environmentVariables>
                    <argLines>
                        <argLine>${debugger.argline}</argLine>
                        <argLine>-Djava.library.path=lib/</argLine>
                        <argLine>-Xmx8192m</argLine>
                        <argLine>-XX:-UseGCOverheadLimit</argLine>
                        <argLine>-Dmule.verbose.exceptions=true</argLine>
                        <!--<argLine>-verbose:class</argLine>-->
                    </argLines>
                    <coverage>
                        <runCoverage>true</runCoverage>
                        <failBuild>false</failBuild>

                        <requiredApplicationCoverage>0</requiredApplicationCoverage>
                        <requiredResourceCoverage>0</requiredResourceCoverage>
                        <requiredFlowCoverage>0</requiredFlowCoverage>

                        <formats>
                            <format>console</format>
                            <format>html</format>
                        </formats>
                    </coverage>
                    <munitTest>${munit.test}</munitTest>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <source>${jdk.version}</source>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <configuration>
                    <configLocation>http://mulesoft.org/download/attachments/92/checkstyle.xml?version=1
                    </configLocation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <configuration>
                    <targetJdk>${jdk.version}</targetJdk>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>taglist-maven-plugin</artifactId>
                <configuration>
                    <tags>
                        <tag>TODO</tag>
                        <tag>@todo</tag>
                        <tag>FIXME</tag>
                        <tag>@fixme</tag>
                        <tag>@deprecated</tag>
                    </tags>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <links>
                        <link>http://java.sun.com/j2ee/1.4/docs/api</link>
                        <link>http://java.sun.com/j2se/1.4.2/docs/api</link>
                        <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
                    </links>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.mulesoft.munit.tools</groupId>
                <artifactId>munit-maven-plugin</artifactId>
            </plugin>
        </plugins>

    </reporting>

    <dependencies>
        <!--<dependency>-->
        <!--<groupId>org.mule.runtime</groupId>-->
        <!--<artifactId>mule-runtime-api-bom</artifactId>-->
        <!--<version>${mule.version}</version>-->
        <!--<type>pom</type>-->
        <!--</dependency>-->

        <!--<dependency>-->
        <!--<groupId>com.mulesoft.munit</groupId>-->
        <!--<artifactId>munit-runtime</artifactId>-->
        <!--<version>${project.version}</version>-->
        <!--<scope>test</scope>-->
        <!--<type>pom</type>-->
        <!--</dependency>-->

        <dependency>
            <groupId>com.mulesoft.munit</groupId>
            <artifactId>munit-runner</artifactId>
            <version>${project.version}</version>
            <classifier>mule-plugin</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.munit</groupId>
            <artifactId>munit-tools</artifactId>
            <version>${project.version}</version>
            <classifier>mule-plugin</classifier>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <version>${xmlunit.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-validation-module</artifactId>
            <version>${mule.validation.module.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>

        <!--Connectors definition section-->
        <dependency>
            <groupId>org.mule.connectors</groupId>
            <artifactId>mule-http-connector</artifactId>
            <version>${mule.http.connector.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>org.mule.connectors</groupId>
            <artifactId>mule-wsc-connector</artifactId>
            <version>${mule.wsc.connector.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>org.mule.connectors</groupId>
            <artifactId>mule-file-connector</artifactId>
            <version>${mule.file.connector.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>org.mule.connectors</groupId>
            <artifactId>mule-vm-connector</artifactId>
            <version>${mule.vm.connector.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-spring-module</artifactId>
            <version>${mule.spring.module.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.mule.modules</groupId>-->
            <!--<artifactId>mule-apikit-module</artifactId>-->
            <!--<version>${apikit.module.version}</version>-->
            <!--<classifier>mule-plugin</classifier>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-scripting-module</artifactId>
            <version>${mule.scripting.module.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.mule.modules</groupId>
            <artifactId>mule-compatibility-module</artifactId>
            <version>${mule.compatibility.module.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>org.mule.tests</groupId>
            <artifactId>smart-connector-using-core</artifactId>
            <version>${smart.connector.using.core.version}</version>
            <classifier>mule-plugin</classifier>
        </dependency>

        <!-- Required to use spring beans-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.security.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.security.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- For Jar Hell issues -->
        <!--<dependency>-->
        <!--<groupId>org.jhades</groupId>-->
        <!--<artifactId>jhades</artifactId>-->
        <!--<version>1.0.4</version>-->
        <!--</dependency>-->
    </dependencies>

    <profiles>
        <profile>
            <id>debug</id>
            <properties>
                <debugger.argline>-agentlib:jdwp=transport=dt_socket,server=y,address=8002,suspend=y</debugger.argline>
            </properties>
        </profile>
        <profile>
            <id>4.x</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <mule.version>4.0.0-SNAPSHOT</mule.version>
                <munit.test>(core/.*|extension/file-connector-test.xml|extension/http-extension-test.xml)</munit.test>
            </properties>
            <build>
                <plugins>
                    <!-- TODO why not default this?? -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.12.4</version>
                        <configuration>
                            <argLine>-Dmule.env=dev</argLine>
                            <argLine>-Dmule.version.for.test=${mule.version}</argLine>
                            <argLine>-Dmaven.test.skip=true</argLine>
                            <redirectTestOutputToFile>true</redirectTestOutputToFile>
                            <excludesFile>*/src/main/java*</excludesFile>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>fullIntegration</id>
            <properties>
                <mule.version>4.0.0-rc</mule.version>
                <!--TODO Remove this when all suites are passing-->
                <munit.test>
                    (core/.*|transports/.*|extended/qa/.*|extended/extension/smart-connector-test.xml|extension/http-extension-test.xml|extension/file-connector-test.xml|
                    extension/validation-module-test.xml|extension/ws-consumer-test.xml|extension/vm-connector-test.xml)
                </munit.test>
                <munit.tags>fullIntegration,core,extension</munit.tags>
            </properties>
        </profile>
    </profiles>
</project>
