<!-- Copyright (c) 2011, 2020 PetalsLink and others.
All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License 2.0 which accompanies this distribution,
and is available at https://www.eclipse.org/legal/epl-2.0/

SPDX-License-Identifier: EPL-2.0

Authors:
* 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.swtbot.test</groupId>
	<artifactId>org.eclipse.swtbot.eclipse.ui.test</artifactId>
	<packaging>eclipse-test-plugin</packaging>
	<parent>
		<groupId>org.eclipse.swtbot</groupId>
		<artifactId>parent</artifactId>
		<version>4.2.0-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<profiles>
		<profile>
			<id>skip-ui-tests</id>
			<activation>
				<property>
					<name>skip-ui-tests</name>
				</property>
			</activation>
			<properties>
				<maven.test.skip>true</maven.test.skip>
			</properties>
		</profile>
		<profile>
			<id>macosx</id>
			<activation>
				<os>
					<family>mac</family>
				</os>
			</activation>
			<properties>
				<ui.test.vmargs>${uitest.vmparams} -XstartOnFirstThread</ui.test.vmargs>
			</properties>
		</profile>
		<profile>
			<id>other-os</id>
			<activation>
				<os>
					<family>!mac</family>
				</os>
			</activation>
			<properties>
				<ui.test.vmargs>${uitest.vmparams}</ui.test.vmargs>
			</properties>
		</profile>
	</profiles>

	<build>
		<plugins>
			<plugin>
				<groupId>org.eclipse.tycho</groupId>
				<artifactId>tycho-surefire-plugin</artifactId>
				<version>${tycho-version}</version>
				<configuration>
					<argLine>${ui.test.vmargs}</argLine>
					<useUIHarness>true</useUIHarness>
					<useUIThread>false</useUIThread>
					<product>org.eclipse.sdk.ide</product>
					<application>org.eclipse.ui.ide.workbench</application>
					<testSuite>org.eclipse.swtbot.eclipse.ui.test</testSuite>
					<testClass>org.eclipse.swtbot.eclipse.ui.functional.AllTests</testClass>
					<environmentVariables>
						<!-- Ubuntu overlay scrollbars cause different crashes in GTK2 so disable them -->
						<LIBOVERLAY_SCROLLBAR>0</LIBOVERLAY_SCROLLBAR>
						<SWT_GTK3>${SWT_GTK3}</SWT_GTK3>
					</environmentVariables>
					<trimStackTrace>false</trimStackTrace>
				</configuration>
			</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 if 
							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>
						</extraRequirements>
					</dependency-resolution>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
