<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2011, 2018 Red Hat, Inc.

   This program and the accompanying materials are made
   available under the terms of the Eclipse Public License 2.0
   which is available at https://www.eclipse.org/legal/epl-2.0/
  
   SPDX-License-Identifier: EPL-2.0
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>linuxtools-systemtap-parent</artifactId>
    <groupId>org.eclipse.linuxtools.systemtap</groupId>
    <version>7.4.0-SNAPSHOT</version>
  </parent>

  <artifactId>org.eclipse.linuxtools.systemtap.ui.consolelog.tests</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>eclipse-test-plugin</packaging>

  <name>Linux Tools SystemTap ConsoleLog Tests Plug-in</name>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
          <excludes>
            <!-- test mojo matches TestProject be default and treats it as PojoTest -->
            <exclude>**/Test*.class</exclude>
          </excludes>
          <testSuite>org.eclipse.linuxtools.systemtap.ui.consolelog.tests</testSuite>
          <testClass>org.eclipse.linuxtools.systemtap.ui.consolelog.test.AllTests</testClass>
             <useUIHarness>true</useUIHarness>
          <useUIThread>true</useUIThread>
          <product>org.eclipse.platform.ide</product>
        </configuration>
      </plugin>
    </plugins>
   </build>

</project>
