<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2016, 2015 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
     Mickael Istria (Red Hat Inc.) - Settings to enable tests with surefire
-->
<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.resources.tests</artifactId>
    <groupId>eclipse.platform.resources</groupId>
    <version>4.15.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.core</groupId>
  <artifactId>org.eclipse.core.tests.resources</artifactId>
  <version>3.10.800-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
  	<testSuite>${project.artifactId}</testSuite>
  	<testClass>org.eclipse.core.tests.resources.AutomatedTests</testClass>
  </properties>

  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
  			<artifactId>target-platform-configuration</artifactId>
  			<version>${tycho.version}</version>
  			<configuration>
  				<dependency-resolution>
	  				<extraRequirements>
	  					<requirement>
		  					<versionRange>0.0.0</versionRange>
		  					<type>eclipse-feature</type>
		  					<id>org.eclipse.core.tests.filesystem.feature</id>
	  					</requirement>
	  				</extraRequirements>
  				</dependency-resolution>
  			</configuration>
  		</plugin>

  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
  			<artifactId>tycho-surefire-plugin</artifactId>
  			<version>${tycho.version}</version>
  			<configuration>
  				<useUIHarness>false</useUIHarness>
  			 	<useUIThread>false</useUIThread>
  			 	<dependencies>
  			 		<dependency>
  			 			<artifactId>org.eclipse.core.tests.filesystem.feature</artifactId>
  			 			<type>eclipse-feature</type>
  			 		</dependency>
  			 	</dependencies>
  			</configuration>
  		</plugin>
  	</plugins>
  </build>
</project>
