<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2018 Obeo
  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:
       Obeo - Initial API and implementation
-->
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.sirius</groupId>
    <artifactId>sirius-parent</artifactId>
    <version>7.0.0-SNAPSHOT</version>
    <relativePath>../../packaging/org.eclipse.sirius.parent</relativePath>
  </parent>

  <properties>
    <sonar.coverage.exclusions>src/**/*</sonar.coverage.exclusions>
  </properties>

  <artifactId>org.eclipse.sirius.tests.services.graphql</artifactId>
  <packaging>eclipse-test-plugin</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>${tycho-version}</version>
        <configuration>
          <skipTests>${tests.junit.skip}</skipTests>
          <includes>
            <include>${tests.junit.include}</include>
          </includes>
          <argLine>${tests.vmargs}</argLine>
          <testFailureIgnore>${tests.ignoreFailures}</testFailureIgnore>
          <testClass>org.eclipse.sirius.tests.services.graphql.api.AllSiriusGraphQLTests</testClass>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
