<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 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
     Lars Vogel <Lars.Vogel@vogella.com> - Bug 457867, 474544
     Mickael Istria (Red Hat Inc.) - Bug 457868
-->
<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.6.3-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.ui</groupId>
  <artifactId>org.eclipse.ui.tests.navigator</artifactId>
  <version>3.5.1-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
    <testSuite>${project.artifactId}</testSuite>
    <testClass>org.eclipse.ui.tests.navigator.NavigatorTestSuite</testClass>
  </properties>

   <build>
    <plugins>
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>target-platform-configuration</artifactId>
				<configuration>
					<dependency-resolution>
						<!-- Behavioral dependency for test to succeed -->
						<!-- Wouldn't it be better to have it in MANIFEST? -->
						<extraRequirements>
							<requirement>
								<type>eclipse-plugin</type>
								<id>org.eclipse.jdt.ui</id>
								<versionRange>0.0.0</versionRange>
							</requirement>
						</extraRequirements>
					</dependency-resolution>
				</configuration>
			</plugin>
    </plugins>
 </build>

</project>
