<?xml version="1.0" encoding="UTF-8"?><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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.top-logic</groupId>
    <artifactId>tl-parent-core</artifactId>
    <version>8.0.0-alpha10</version>
    <relativePath />
  </parent>
  <artifactId>tl-ai-parent</artifactId>
  <licenses>
    <license>
      <name>LicenseRef-BOS-TopLogic-1.0</name>
      <url>https://github.com/top-logic/.github/blob/main/LICENSES/LicenseRef-BOS-TopLogic-1.0.md</url>
    </license>
  </licenses>
  <version>2.1.2</version>
  <packaging>pom</packaging>
  <scm>
    <connection>scm:git:https://github.com/top-logic/tl-ai.git</connection>
    <developerConnection>scm:git:http://tl.bos.local:3000/TopLogic/tl-ai.git</developerConnection>
    <url>https://github.com/top-logic/tl-ai</url>
    <tag>TL_2.1.2</tag>
  </scm>
  <modules>
    <module>tl-ai-mcp-server</module>
    <module>tl-ai-a2a</module>
    <module>tl-chat</module>
    <module>tl-chat-classic</module>
    <module>tl-ai-views</module>
    <module>tl-ai-index</module>
    <module>tl-ai-index-onnx</module>
    <module>tl-ai-demo</module>
    <module>tl-ai-vector-index</module>
    <module>tl-ai-tool-api</module>
    <module>tl-ai-core</module>
    <module>tl-ai-eval</module>
  </modules>
  <properties>
    <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
  </properties>
  <dependencies />
  <build>
    <plugins>
      <!--
        Which test classes a build runs.

        tl-parent-core configures surefire with the single include "test/TestAll.java". That names
        the engine's generic suite, which additionally collects everything below
        src/test/java/test - so a test in the "test" package root runs by itself. The first include
        below names the same class. This repository keeps most of its tests in packages that mirror
        the production code instead - a test for com.top_logic.tl.ai.core.agent sits in
        com.top_logic.tl.ai.core.agent, not in test.com.top_logic.tl.ai.core.agent - and those were
        invisible to the build until #369.

        The second include picks them up by their location. It has to be a %regex[] pattern: a
        path pattern like com/**/Test*.java is implicitly prefixed with "**/" by surefire, which
        would match the engine's own test classes inside the tl-basic test jar named in
        dependenciesToScan, and would match this repository's own test/com/... classes a second
        time. A %regex[] include is anchored at the start of the path, so it matches exactly the
        two package roots this repository owns and nothing else.

        Both includes are %regex[] patterns, the first one too, and each accepts a class in two
        spellings: as the class file path (com/top_logic/.../TestX.class) and as the class name
        (com.top_logic....TestX). The plugin selects the classes by their path. Surefire 3.6.0,
        which tl-parent-core brings, then filters that selection again in the test JVM. There it
        matches a %regex[] include against the class name, and when Ant and %regex[] includes are
        both configured, it keeps only a class that matches one of each kind. With the path spelling
        alone, or with "test/TestAll.java" next to a regex, the build runs no test at all and
        passes with "Tests run: 0". The second filter can only remove classes from the selection,
        so the class-name spelling selects nothing that the path does not. Surefire 3.6.1 matches
        the path in both places (apache/maven-surefire#3465); once the build uses it, the
        class-name spelling can go.

        Whether every test file is in fact reachable this way is asserted by
        TestSuiteReachability, so a test class in a package nobody scans fails the build instead
        of silently not running.
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <includes>
            <include>%regex[test[/.]TestAll(\.class)?]</include>
            <include>%regex[com[/.]top_logic[/.](ai|tl[/.]ai)[/.](.*[/.])?(Test[A-Z0-9][^/.$]*|[^/.$]*Test)(\.class)?]</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
