<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2014, Google Inc 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

  Contributors:
      Marcus Eng (Google) - initial API and implementation
      Lars Vogel <Lars.Vogel@vogella.com> - Bug 443678, 457719
-->
<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.9.0-SNAPSHOT</version>
  </parent>
  <groupId>org.eclipse.ui</groupId>
  <artifactId>org.eclipse.ui.monitoring.tests</artifactId>
  <version>1.1.100-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <properties>
	<unitTestSuite>org.eclipse.ui.internal.monitoring.MonitoringTestSuite</unitTestSuite>
  </properties>

  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.eclipse.tycho</groupId>
  			<artifactId>tycho-surefire-plugin</artifactId>
  			<version>${tycho.version}</version>
			<configuration>
				<testSuite>org.eclipse.ui.monitoring.tests</testSuite>
				<testClass>${unitTestSuite}</testClass>
				<useUIHarness>true</useUIHarness>
				<useUIThread>true</useUIThread>
	  			<dependencies>
					<dependency>
						<type>eclipse-plugin</type>
						<artifactId>org.eclipse.ui.monitoring</artifactId>
						<version>0.0.0</version>
					</dependency>
  				</dependencies>
			</configuration>
  		</plugin>
  	</plugins>
  </build>
</project>
