<?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.19.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.core</groupId>
  <artifactId>org.eclipse.core.tests.resources</artifactId>
  <version>3.10.1100-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>
