<?xml version="1.0" encoding="UTF-8"?>
<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>
		<relativePath>../../releng/org.eclipse.emf.parsley.parent/pom.xml</relativePath>
		<groupId>org.eclipse.emf.parsley</groupId>
		<artifactId>org.eclipse.emf.parsley.parent</artifactId>
		<version>1.10.0-SNAPSHOT</version>
	</parent>

	<artifactId>org.eclipse.emf.parsley.dsl.ui.tests</artifactId>
	<packaging>eclipse-test-plugin</packaging>

	<profiles>
		<profile>
			<id>macosx-jvm-flags</id>
			<activation>
				<os>
					<family>mac</family>
				</os>
			</activation>
			<properties>
				<os-jvm-flags>-XstartOnFirstThread</os-jvm-flags>
			</properties>
		</profile>
	</profiles>

	<build>
		<plugins>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.eclipse.xtend</groupId>
				<artifactId>xtend-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>tycho-surefire-plugin</artifactId>
				<version>${tycho-version}</version>
				<executions>
					<execution>
						<id>default-test</id>
						<phase>integration-test</phase>
						<configuration>
							<skip>${dsl.tests.skip}</skip>
							<useUIHarness>true</useUIHarness>
							<useUIThread>true</useUIThread>
							<!-- tycho.testArgLine repeated to re-use the configuration for argLine 
								for jacoco agent -->
							<argLine>${tycho.testArgLine} ${uiTestsArgs} ${pdeTestsArgs}</argLine>
							<includes>
								<include>**/org/eclipse/emf/parsley/dsl/ui/tests/*Test.java</include>
							</includes>
							<!-- TODO remove with tycho 1.3 -->
							<bundleStartLevel>
								<bundle>
									<id>org.apache.felix.scr</id>
									<level>1</level>
									<autoStart>true</autoStart>
								</bundle>
							</bundleStartLevel>
						</configuration>
						<goals>
							<goal>test</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>target-platform-configuration</artifactId>
				<configuration>
					<dependency-resolution>
						<extraRequirements>
							<!-- to get the org.eclipse.osgi.compatibility.state plugin iff 
							the targeted Eclipse version (e.g., Luna) has it
							(backwards compatible with kepler and previous versions) -->
							<requirement>
								<type>eclipse-feature</type>
								<id>org.eclipse.rcp</id>
								<versionRange>0.0.0</versionRange>
							</requirement>
							<requirement>
								<type>eclipse-plugin</type>
								<id>org.apache.felix.scr</id>
								<versionRange>1.0.0</versionRange>
							</requirement>
						</extraRequirements>
					</dependency-resolution>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>