<?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>8.2.0</version>
  </parent>

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

  <name>Linux Tools Callgraph Graphing 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.callgraph.tests</testSuite>
          <testClass>org.eclipse.linuxtools.callgraph.tests.AllTests</testClass>
             <useUIHarness>true</useUIHarness>
          <useUIThread>true</useUIThread>
          <product>org.eclipse.platform.ide</product>
        </configuration>
      </plugin>
    </plugins>
   </build>

</project>
