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

   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html
-->
<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>0.9.0</version>
  </parent>

  <artifactId>org.eclipse.linuxtools.callgraph.tests</artifactId>
  <version>0.9.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.sdk.ide</product>
        </configuration>
      </plugin>
    </plugins>
   </build>

</project>
