<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright (c) 2019 Mia-Software and others.
   
    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
    https://www.eclipse.org/legal/epl-2.0/
   
    SPDX-License-Identifier: EPL-2.0
   
    Contributors:
        Unknown - initial API and implementation
 -->

<project xmlns:m2="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.eclipse.modisco</groupId>
    <artifactId>org.eclipse.modisco.releng.tycho</artifactId>
    <version>1.5.1-SNAPSHOT</version>
    <relativePath>../org.eclipse.modisco.releng.tycho</relativePath>
  </parent>
  <groupId>org.eclipse.modisco</groupId>
  <artifactId>org.eclipse.modisco.infra.query.tests</artifactId>
  <version>1.5.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>
   <build>
      <plugins>
         <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-surefire-plugin</artifactId>
            <configuration>
               <skipTests>${SKIP_TESTS}</skipTests>
               <testFailureIgnore>true</testFailureIgnore>
               <failIfNoTests>false</failIfNoTests>
               <forkedProcessTimeoutInSeconds>1800</forkedProcessTimeoutInSeconds>
               <argLine>-DoutputEncoding=UTF-8</argLine>
               <!--application>org.eclipse.ui.ide.workbench</application-->
               <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
               <showEclipseLog>true</showEclipseLog>
            </configuration>
            <executions>
               <execution>
                  <id>default-test</id>
                  <configuration>
                     <includes>
                        <include>**/AllTestsNotInUIThread.class</include>
                     </includes>
                     <useUIThread>false</useUIThread>
                     <useUIHarness>true</useUIHarness>
                  </configuration>
                  <goals>
                     <goal>test</goal>
                  </goals>
                  <phase>integration-test</phase>
               </execution>
               <execution>
                  <id>AllUITests</id>
                  <configuration>
                     <includes>
                        <include>**/AllTestsInUIThread.class</include>
                     </includes>
                     <useUIThread>true</useUIThread>
                     <useUIHarness>true</useUIHarness>
                  </configuration>
                  <goals>
                     <goal>test</goal>
                  </goals>
                  <phase>integration-test</phase>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>
