<!--
 * Copyright (c) 2011 PetalsLink
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  which accompanies this distribution, and is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 *  
 *   Contributors:
 *      Mickael istria (PetalsLink)
-->
<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>
	<groupId>org.eclipse.gmf-tooling.tests</groupId>
	<artifactId>org.eclipse.gmf.tests</artifactId>
	<packaging>eclipse-test-plugin</packaging>
	<version>2.1.0-SNAPSHOT</version>

	<parent>
		<groupId>org.eclipse.gmf-tooling</groupId>
		<artifactId>tests</artifactId>
		<version>2.4.1-SNAPSHOT</version>
		<relativePath>../</relativePath>
	</parent>

	<build>
		<plugins>
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>tycho-surefire-plugin</artifactId>
				<version>${tycho-version}</version>
				<executions>
					<execution>
						<id>SWTBot tests</id>
						<phase>test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<testClass>org.eclipse.gmf.tests.AllSWTBotTests</testClass>
		        			<useUIThread>false</useUIThread>
						</configuration>
					</execution>
					<execution>
						<id>non SWTBot tests</id>
						<phase>test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<testClass>org.eclipse.gmf.tests.AllTests</testClass>
		        			<useUIThread>true</useUIThread>
						</configuration>
					</execution>
					<execution>
						<!-- Skip default test -->
						<id>default-test</id>
						<configuration>
							<skipTests>true</skipTests>
						</configuration>
					</execution>
				</executions>
				<!-- Inherited configuration -->
				<configuration>
					<useUIHarness>true</useUIHarness>
					<testSuite>org.eclipse.gmf.tests</testSuite>
					<argLine>${tycho.testArgLine} -Xmx512m -XX:MaxPermSize=128m -DbuildingWithTycho=true</argLine>
					<bundleStartLevel>
						<bundle>
							<id>org.eclipse.equinox.ds</id>
							<level>1</level>
							<autoStart>true</autoStart>
						</bundle>
					</bundleStartLevel>
					<dependencies>
						<dependency>
	             				<type>p2-installable-unit</type>
	             				<artifactId>org.eclipse.gmf.feature.group</artifactId>
	          				</dependency>
	          				<dependency>
	             				<type>p2-installable-unit</type>
	             				<artifactId>org.eclipse.pde.feature.group</artifactId>
	          				</dependency>
	          				<dependency>
	             				<type>p2-installable-unit</type>
	             				<artifactId>org.eclipse.emf.validation.ocl</artifactId>
	          				</dependency>
					</dependencies>
				</configuration>
			</plugin>
		</plugins>
	</build>


</project>