<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2007, 2018 THALES GLOBAL SERVICES
  This program and the accompanying materials
  are made available under the terms of the Eclipse Public License 2.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/legal/epl-2.0.html

  SPDX-License-Identifier: EPL-2.0
  
  Contributors:
       Obeo - Initial API and implementation
-->
<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">
  <modelVersion>4.0.0</modelVersion>

  <prerequisites>
    <maven>3.0</maven>
  </prerequisites>

  <parent>
    <groupId>org.eclipse.sirius</groupId>
    <artifactId>sirius-parent</artifactId>
    <version>6.3.5-SNAPSHOT</version>
    <relativePath>../../packaging/org.eclipse.sirius.parent</relativePath>
  </parent>

  <groupId>org.eclipse.sirius</groupId>
  <artifactId>sirius-tests-parent</artifactId>
  <version>6.3.5-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Sirius Tests Parent</name>

  <!--Add specific repositories, pluginRepositories and dependencies for Acceleo3 compilation. See http://wiki.eclipse.org/Acceleo/Maven for more details. -->
  <repositories>
    <repository>
      <id>Indigo Release</id>
      <url>http://www.obeo.fr/download/acceleo/maven/releases/indigo</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>Indigo Release</id>
      <url>http://www.obeo.fr/download/acceleo/maven/releases/indigo</url>
    </pluginRepository>
  </pluginRepositories>

  <dependencies>
    <dependency>
      <groupId>org.eclipse.acceleo</groupId>
      <artifactId>org.eclipse.acceleo.maven</artifactId>
      <version>3.5.2</version>
    </dependency>
  </dependencies>

  <properties>
    <tests.skipLongTests>false</tests.skipLongTests>
    <tests.skipUnreliableTests>false</tests.skipUnreliableTests>
    <tests.timeout>0</tests.timeout>
    <tests.vmargs.mac />
    <tests.junit.skip>true</tests.junit.skip>
    <tests.swtbot.skip>true</tests.swtbot.skip>
    <tests.junit.include />
    <tests.swtbot.include />
    <tests.swtbot-sequence.include />
    <tests.ignoreFailures>true</tests.ignoreFailures>
  </properties>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.acceleo</groupId>
          <artifactId>org.eclipse.acceleo.maven</artifactId>
          <version>3.5.2</version>
          <executions>
            <execution>
              <id>acceleo-compile</id>
              <phase>compile</phase>
              <goals>
                <goal>acceleo-compile</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>junit</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.junit.skip>false</tests.junit.skip>
        <tests.timeout>${tests.timeout.junit}</tests.timeout>
        <tests.junit.include>org/eclipse/sirius/tests/suite/AllSiriusTestSuite.java, org/eclipse/sirius/tests/suite/tree/AllSiriusTestSuite.java, org/eclipse/sirius/tests/ui/properties/internal/AllTests.java</tests.junit.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
      </properties>
    </profile>
     <profile>
      <id>gerrit-junit</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.junit.skip>false</tests.junit.skip>
        <tests.timeout>${tests.timeout.junit}</tests.timeout>
        <tests.junit.include>org/eclipse/sirius/tests/suite/GerritJUnitSuite.java, org/eclipse/sirius/tests/suite/tree/AllSiriusTestSuite.java, org/eclipse/sirius/tests/ui/properties/internal/AllTests.java</tests.junit.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
        <tests.ignoreFailures>false</tests.ignoreFailures>
      </properties>
    </profile>
    <profile>
      <id>swtbot</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot}</tests.timeout>
        <tests.swtbot.include>org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java</tests.swtbot.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
      </properties>
    </profile>
    <profile>
      <id>swtbot-part1</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot}</tests.timeout>
        <tests.swtbot.include>org/eclipse/sirius/tests/swtbot/suite/SWTBotPart1Suite.java</tests.swtbot.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
      </properties>
    </profile>
    <profile>
      <id>swtbot-part2</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot}</tests.timeout>
        <tests.swtbot.include>org/eclipse/sirius/tests/swtbot/suite/SWTBotPart2Suite.java</tests.swtbot.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
      </properties>
    </profile>
    <profile>
      <id>gerrit-swtbot</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot}</tests.timeout>
        <tests.swtbot.include>org/eclipse/sirius/tests/swtbot/suite/GerritSWTBotSuite.java</tests.swtbot.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
        <tests.ignoreFailures>false</tests.ignoreFailures>
      </properties>
    </profile>
    <profile>
      <id>swtbot-sequence</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot-sequence}</tests.timeout>
        <tests.swtbot-sequence.include>org/eclipse/sirius/tests/swtbot/suite/SequenceSwtBotTestSuite.java</tests.swtbot-sequence.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
      </properties>
    </profile>
    <profile>
      <id>gerrit-swtbot-sequence</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <tests.swtbot.skip>false</tests.swtbot.skip>
        <tests.timeout>${tests.timeout.swtbot-sequence}</tests.timeout>
        <tests.swtbot-sequence.include>org/eclipse/sirius/tests/swtbot/suite/GerritSequenceSWTBotSuite.java</tests.swtbot-sequence.include>
        <tests.vmargs>${jacoco.agent.ut.arg} ${tests.vmargs.mac} -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError</tests.vmargs>
        <tests.ignoreFailures>false</tests.ignoreFailures>
      </properties>
    </profile>
  </profiles>

</project>
