async-test-lib
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>se.deversity.async-test-lib</groupId>
<artifactId>async-test-lib</artifactId>
<version>1.7.0-RC8</version>
</dependency><?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>se.deversity.async-test-lib</groupId>
<artifactId>async-test-parent</artifactId>
<version>1.7.0-RC8</version>
</parent>
<!-- Deliberately unchanged: this is the coordinate every existing consumer depends on. -->
<artifactId>async-test-lib</artifactId>
<packaging>jar</packaging>
<name>Async Test Library</name>
<description>Enterprise-grade JUnit 5 concurrency testing library with 127 problem detectors for detecting deadlocks, visibility issues, false sharing, livelocks, and other subtle concurrency bugs.</description>
<licenses>
<license>
<name>PolyForm Noncommercial License 1.0.0</name>
<url>https://polyformproject.org/licenses/noncommercial/1.0.0/</url>
<distribution>repo</distribution>
</license>
</licenses>
<dependencies>
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</dependency>
<dependency>
<groupId>se.deversity.common</groupId>
<artifactId>common-license-lib</artifactId>
</dependency>
<!-- SLF4J API: logging facade; consumers supply their own backend (logback, log4j, etc.) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-testkit</artifactId>
<scope>test</scope>
</dependency>
<!-- Jazzer API for fuzz targets (standalone, no JUnit runner dependency) -->
<dependency>
<groupId>com.code-intelligence</groupId>
<artifactId>jazzer-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- The binary-compatibility gate applies to this module only: it is the artifact
with a published 1.6.0 predecessor. -->
<plugin>
<groupId>com.github.siom79.japicmp</groupId>
<artifactId>japicmp-maven-plugin</artifactId>
<version>0.26.1</version>
<configuration>
<oldVersion>
<dependency>
<groupId>se.deversity.async-test-lib</groupId>
<artifactId>async-test-lib</artifactId>
<version>1.6.0</version>
<type>jar</type>
</dependency>
</oldVersion>
<newVersion>
<file>
<path>${project.build.directory}/${project.build.finalName}.${project.packaging}</path>
</file>
</newVersion>
<parameter>
<onlyBinaryIncompatible>true</onlyBinaryIncompatible>
<breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
<ignoreMissingClasses>true</ignoreMissingClasses>
<!-- Intentional, enumerated break: these two packages left this artifact
when the reactor was split. They are not deleted — they ship in
async-test-agent and async-test-analysis, unchanged, at the same
version. Anyone who referenced them from async-test-lib adds the
matching dependency; see docs/analysis/modularization.md and docs/AGENT.md.
Listed rather than waived wholesale so the gate keeps failing on any
break that is NOT one of these. Remove both lines once <oldVersion>
is re-pinned to a release that already had the split. -->
<excludes>
<exclude>se.deversity.asynctest.agent</exclude>
<exclude>se.deversity.asynctest.analysis</exclude>
</excludes>
</parameter>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>cmp</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Coverage gate. Declared here rather than in the parent so the two thin wrapper
modules are not held to ratios measured against this test suite. -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>jacoco-check</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.70</minimum>
</limit>
<limit>
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.65</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!-- PITest mutation testing — run on demand:
mvn test-compile org.pitest:pitest-maven:mutationCoverage -->
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>${pitest-maven.version}</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>${pitest-junit5-plugin.version}</version>
</dependency>
</dependencies>
<configuration>
<targetClasses>
<param>se.deversity.asynctest.*</param>
</targetClasses>
<targetTests>
<param>se.deversity.asynctest.*</param>
</targetTests>
<excludedTestClasses>
<!-- Jazzer fuzz harnesses and ArchUnit rules don't kill mutants
and are expensive under repeated forked execution -->
<param>se.deversity.asynctest.fuzz.*</param>
<param>se.deversity.asynctest.architecture.*</param>
</excludedTestClasses>
<threads>4</threads>
<!-- Surefire's argLine contains JaCoCo's late-bound @{argLine} which
pitest cannot resolve; required flags are passed via jvmArgs instead -->
<parseSurefireArgLine>false</parseSurefireArgLine>
<!-- Stress tests coordinate via CyclicBarrier; give mutants generous
headroom before being flagged TIMED_OUT -->
<timeoutConstant>10000</timeoutConstant>
<jvmArgs>
<value>-Djdk.attach.allowAttachSelf=true</value>
<value>-Dlicense.mock.mode=true</value>
</jvmArgs>
<!-- Gate: the build fails below this mutation score. Measured full-run
score is 75.4% (2026-07-17); the gate sits ~1.4pp below because
TIMED_OUT mutant counts jitter between runs. Survivors are dominated
by diagnostic output and timing-heuristic detector mutants that cannot
be killed without flaky, timing-forced tests. -->
<mutationThreshold>74</mutationThreshold>
<outputFormats>
<param>HTML</param>
<param>XML</param>
</outputFormats>
<timestampedReports>false</timestampedReports>
</configuration>
</plugin>
</plugins>
</build>
</project>