<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2017 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php

  Contributors:
     Igor Fedorenko - initial implementation
     Lars Vogel <Lars.Vogel@vogella.com> - Bug 441877, 474544
-->
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>eclipse.platform.ui.tests</artifactId>
    <groupId>eclipse.platform.ui</groupId>
    <version>4.7.1-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.ui</groupId>
  <artifactId>org.eclipse.ui.tests</artifactId>
  <version>3.13.1-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <defaultSigning-excludeInnerJars>true</defaultSigning-excludeInnerJars>
  </properties>

  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
  			<artifactId>tycho-surefire-plugin</artifactId>
  			<version>${tycho.version}</version>
			<configuration>
				<testClass>org.eclipse.ui.tests.UiTestSuite</testClass>
				<useUIHarness>true</useUIHarness>
				<useUIThread>true</useUIThread>
	  			<dependencies>
	  				<dependency>
	  					<type>eclipse-plugin</type>
	  					<artifactId>org.eclipse.equinox.event</artifactId>
	  					<version>0.0.0</version>
	  				</dependency>
	  				<dependency>
	  					<type>eclipse-plugin</type>
	  					<artifactId>org.eclipse.osgi.compatibility.state</artifactId>
	  					<version>0.0.0</version>
	  				</dependency>
					<dependency>
						<type>eclipse-plugin</type>
						<artifactId>org.eclipse.jdt.ui</artifactId>
						<version>0.0.0</version>
					</dependency>
	  			</dependencies>
			</configuration>
			<executions>
				<execution>
					<id>jface-tests</id>
					<phase>integration-test</phase>
					<goals><goal>test</goal></goals>
					<configuration>
						<testClass>org.eclipse.jface.tests.AllTests</testClass>
						<useUIHarness>false</useUIHarness>
					</configuration>
				</execution>
			</executions>
  		</plugin>
  	</plugins>
  </build>
</project>
