elements) {
* group of acceptable values.
*/
@SafeVarargs
+ @SuppressWarnings("varargs")
public final A isNoneOf(E... elements) {
requireNonNullValues(elements, "elements");
requireAtLeastOne(elements, "elements");
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/JctAssertions.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/JctAssertions.java
index 431d37908..e5db126f1 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/JctAssertions.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/JctAssertions.java
@@ -21,7 +21,6 @@
import io.github.ascopes.jct.containers.PackageContainerGroup;
import io.github.ascopes.jct.diagnostics.TraceDiagnostic;
import io.github.ascopes.jct.filemanagers.PathFileObject;
-import io.github.ascopes.jct.utils.UtilityClass;
import java.util.List;
import javax.tools.Diagnostic;
import javax.tools.JavaFileManager.Location;
@@ -35,7 +34,7 @@
* @since 0.0.1
*/
@SuppressWarnings("unused")
-public final class JctAssertions extends UtilityClass {
+public final class JctAssertions {
private JctAssertions() {
// Disallow initialisation.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/compilers/JctCompilers.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/compilers/JctCompilers.java
index 9b901b564..1777a0059 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/compilers/JctCompilers.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/compilers/JctCompilers.java
@@ -16,7 +16,6 @@
package io.github.ascopes.jct.compilers;
import io.github.ascopes.jct.compilers.impl.JavacJctCompilerImpl;
-import io.github.ascopes.jct.utils.UtilityClass;
/**
* Helpers to create new compiler instances.
@@ -24,7 +23,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class JctCompilers extends UtilityClass {
+public final class JctCompilers {
private JctCompilers() {
// Static-only class.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/diagnostics/TracingDiagnosticListener.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/diagnostics/TracingDiagnosticListener.java
index df6f8841c..40288a9eb 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/diagnostics/TracingDiagnosticListener.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/diagnostics/TracingDiagnosticListener.java
@@ -18,7 +18,6 @@
import static java.util.Objects.requireNonNull;
import io.github.ascopes.jct.utils.LoomPolyfill;
-import io.github.ascopes.jct.utils.VisibleForTestingOnly;
import java.time.Instant;
import java.util.List;
import java.util.Locale;
@@ -67,19 +66,7 @@ public TracingDiagnosticListener(
);
}
- /**
- * Only visible for testing.
- *
- * Users should NOT use this constructor. It may be changed
- * or removed without notice.
- *
- * @param logger the logger to use.
- * @param threadGetter the supplier of the current thread.
- * @param logging whether to enable logging.
- * @param stackTraces whether to enable stack traces in the logging.
- */
- @VisibleForTestingOnly
- protected TracingDiagnosticListener(
+ TracingDiagnosticListener(
Logger logger,
Supplier extends Thread> threadGetter,
boolean logging,
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManager.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManager.java
index 7f9b1e387..1b7e032a4 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManager.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManager.java
@@ -411,9 +411,9 @@ Set list(
@Override
Iterable> listLocationsForModules(Location location) throws IOException;
- ///
- /// Default helper overrides
- ///
+ /*
+ * Default helper overrides
+ */
/**
* Get the location holding the {@link StandardLocation#CLASS_OUTPUT class outputs}.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManagers.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManagers.java
index 42b49496a..95037c981 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManagers.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/JctFileManagers.java
@@ -17,7 +17,6 @@
import io.github.ascopes.jct.compilers.JctCompiler;
import io.github.ascopes.jct.filemanagers.impl.JctFileManagerFactoryImpl;
-import io.github.ascopes.jct.utils.UtilityClass;
/**
* Helpers to create instances of default implementations for file managers.
@@ -25,7 +24,7 @@
* @author Ashley Scopes
* @since 1.1.0
*/
-public final class JctFileManagers extends UtilityClass {
+public final class JctFileManagers {
private JctFileManagers() {
// Static-only class.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImpl.java
index e0b1a9837..2c05c4e6a 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImpl.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImpl.java
@@ -27,7 +27,6 @@
import io.github.ascopes.jct.filemanagers.config.JctFileManagerLoggingProxyConfigurer;
import io.github.ascopes.jct.filemanagers.config.JctFileManagerRequiredLocationsConfigurer;
import io.github.ascopes.jct.filemanagers.config.JctFileManagerWorkspaceConfigurer;
-import io.github.ascopes.jct.utils.VisibleForTestingOnly;
import io.github.ascopes.jct.workspaces.Workspace;
/**
@@ -54,12 +53,10 @@ public JctFileManagerFactoryImpl(JctCompiler compiler) {
}
/**
- * Get the compiler that was set on this file manager factory.
+ * Get the associated compiler.
*
- * @return the compiler
- * @since 1.1.0
+ * @return the associated compiler.
*/
- @VisibleForTestingOnly
public JctCompiler getCompiler() {
return compiler;
}
@@ -72,16 +69,7 @@ public JctFileManager createFileManager(Workspace workspace) {
.configure(fileManager);
}
- /**
- * Create the default configurer chain to use for the given workspace.
- *
- * This is visible for testing only.
- *
- * @param workspace the workspace to configure with.
- * @return the chain to use.
- */
- @VisibleForTestingOnly
- public JctFileManagerConfigurerChain createConfigurerChain(Workspace workspace) {
+ JctFileManagerConfigurerChain createConfigurerChain(Workspace workspace) {
// The order here is important. Do not adjust it without testing extensively first!
return new JctFileManagerConfigurerChain()
.addLast(new JctFileManagerWorkspaceConfigurer(workspace))
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/LoggingFileManagerProxy.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/LoggingFileManagerProxy.java
index d30f40b73..9f113e7f4 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/LoggingFileManagerProxy.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/LoggingFileManagerProxy.java
@@ -69,7 +69,7 @@ private LoggingFileManagerProxy(JctFileManager inner, boolean stackTraces) {
*/
@Nullable
@Override
- public Object invoke(Object proxy, Method method, Object @Nullable ... args) throws Throwable {
+ public Object invoke(Object proxy, Method method, Object @Nullable[] args) throws Throwable {
if (method.getName().equals("toString")) {
return toString();
}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java
index 82180b67d..df3b78144 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java
@@ -309,7 +309,7 @@ private JctCompilerConfigurer> initializeConfigurer(
}
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({"rawtypes", "unchecked", "RedundantSuppression"})
private static Class[] emptyArray() {
return (Class[]) new Class[0];
}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/JavacCompilersProvider.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/JavacCompilersProvider.java
index 84686ca45..df3cb2526 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/JavacCompilersProvider.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/JavacCompilersProvider.java
@@ -17,7 +17,6 @@
import io.github.ascopes.jct.compilers.JctCompiler;
import io.github.ascopes.jct.compilers.impl.JavacJctCompilerImpl;
-import io.github.ascopes.jct.utils.VisibleForTestingOnly;
import org.junit.jupiter.params.support.AnnotationConsumer;
/**
@@ -29,14 +28,7 @@
public final class JavacCompilersProvider extends AbstractCompilersProvider
implements AnnotationConsumer {
- /**
- * Initialise the provider.
- *
- * This is only visible for testing purposes, users should have no need to
- * initialise this class directly.
- */
- @VisibleForTestingOnly
- public JavacCompilersProvider() {
+ JavacCompilersProvider() {
// Visible for testing only.
}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/FileUtils.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/FileUtils.java
index 16ee36c00..40cf9b943 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/FileUtils.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/FileUtils.java
@@ -37,7 +37,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class FileUtils extends UtilityClass {
+public final class FileUtils {
// Exclude any "empty" extensions. At the time of writing, this will just exclude Kind.EMPTY,
// but doing this will prevent future API changes from breaking any assumptions we make. In
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IoExceptionUtils.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IoExceptionUtils.java
index 5c16fd843..4e7938fe0 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IoExceptionUtils.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IoExceptionUtils.java
@@ -24,7 +24,7 @@
*
* @author Ashley Scopes
*/
-public final class IoExceptionUtils extends UtilityClass {
+public final class IoExceptionUtils {
private IoExceptionUtils() {
// Disallow initialisation.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IterableUtils.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IterableUtils.java
index 9acf13b3b..bd2aab0e0 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IterableUtils.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/IterableUtils.java
@@ -31,7 +31,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class IterableUtils extends UtilityClass {
+public final class IterableUtils {
private IterableUtils() {
// Disallow initialisation.
@@ -184,9 +184,7 @@ public static T[] requireNonNullValues(
throw new NullPointerException(error);
}
- //noinspection RedundantCast -- Cast is not redundant as we're casting away any nullability
- // annotations for nullness typecheckers. Don't let IntelliJ tell you otherwise as it is a
- // bug.
- return (T[]) array;
+ //noinspection NullableProblems
+ return array;
}
}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/LoomPolyfill.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/LoomPolyfill.java
index 856bbbed3..edef6b371 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/LoomPolyfill.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/LoomPolyfill.java
@@ -24,7 +24,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class LoomPolyfill extends UtilityClass {
+public final class LoomPolyfill {
private LoomPolyfill() {
// Static-only class.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java
index 4735be978..71fd5a6c0 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java
@@ -35,7 +35,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class ModuleDiscoverer extends UtilityClass {
+public final class ModuleDiscoverer {
private static final Logger log = LoggerFactory.getLogger(ModuleDiscoverer.class);
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/SpecialLocationUtils.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/SpecialLocationUtils.java
index 63058b634..efab0b84f 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/SpecialLocationUtils.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/SpecialLocationUtils.java
@@ -31,7 +31,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class SpecialLocationUtils extends UtilityClass {
+public final class SpecialLocationUtils {
// Files we don't want to propagate by default as they may clash with the environment.
private static final Set BLACKLISTED_FILE_NAMES = Set.of(
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/StringUtils.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/StringUtils.java
index 4856db87b..fd634cc48 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/StringUtils.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/StringUtils.java
@@ -33,7 +33,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class StringUtils extends UtilityClass {
+public final class StringUtils {
// Number formatting stuff
private static final BigDecimal THOUSAND = BigDecimal.valueOf(1_000);
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/UtilityClass.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/UtilityClass.java
deleted file mode 100644
index 163516d9d..000000000
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/UtilityClass.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2022 - 2025, the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.github.ascopes.jct.utils;
-
-/**
- * Abstract base for a static-only class. This base cannot be initialised.
- *
- * @author Ashley Scopes
- * @since 0.0.1
- */
-public abstract class UtilityClass {
-
- protected UtilityClass() {
- throw new UnsupportedOperationException(
- "this is a utility class that cannot be initialised or extended"
- );
- }
-}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/VisibleForTestingOnly.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/VisibleForTestingOnly.java
deleted file mode 100644
index 680fe0bfd..000000000
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/VisibleForTestingOnly.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2022 - 2025, the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.github.ascopes.jct.utils;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation that marks the annotated method or constructor as only being visible for testing
- * purposes.
- *
- * This means any API should not be using this element directly.
- *
- * @author Ashley Scopes
- * @since 0.0.1
- */
-@Documented
-@Retention(RetentionPolicy.CLASS)
-@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
-public @interface VisibleForTestingOnly {
-}
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspace.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspace.java
index 416b15c4e..ed89f407c 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspace.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspace.java
@@ -17,7 +17,6 @@
import io.github.ascopes.jct.filemanagers.JctFileManager;
import io.github.ascopes.jct.filemanagers.ModuleLocation;
-import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Path;
import java.util.List;
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspaces.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspaces.java
index 18867fe23..b13efa72a 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspaces.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/Workspaces.java
@@ -16,7 +16,6 @@
package io.github.ascopes.jct.workspaces;
import io.github.ascopes.jct.compilers.JctCompiler;
-import io.github.ascopes.jct.utils.UtilityClass;
import io.github.ascopes.jct.workspaces.impl.WorkspaceImpl;
/**
@@ -25,7 +24,7 @@
* @author Ashley Scopes
* @since 0.0.1
*/
-public final class Workspaces extends UtilityClass {
+public final class Workspaces {
private Workspaces() {
// Do nothing.
diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceDumper.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceDumper.java
index 7bf3912da..d73e24018 100644
--- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceDumper.java
+++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceDumper.java
@@ -18,7 +18,6 @@
import static io.github.ascopes.jct.utils.IoExceptionUtils.uncheckedIo;
import io.github.ascopes.jct.workspaces.PathRoot;
-import java.io.Closeable;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
diff --git a/java-compiler-testing/src/main/java/module-info.java b/java-compiler-testing/src/main/java/module-info.java
index 7b9fefad5..3b2d8ba42 100644
--- a/java-compiler-testing/src/main/java/module-info.java
+++ b/java-compiler-testing/src/main/java/module-info.java
@@ -123,15 +123,15 @@
/// DEPENDENCIES ///
////////////////////
- requires com.github.marschall.memoryfilesystem;
- requires java.compiler;
- requires java.management;
- requires me.xdrop.fuzzywuzzy;
- requires org.assertj.core;
- requires static org.jspecify;
- requires static org.junit.jupiter.api;
- requires static org.junit.jupiter.params;
- requires org.slf4j;
+ requires transitive com.github.marschall.memoryfilesystem;
+ requires transitive java.compiler;
+ requires transitive java.management;
+ requires me.xdrop.fuzzywuzzy; // automatic module
+ requires transitive org.assertj.core;
+ requires transitive org.jspecify;
+ requires static transitive org.junit.jupiter.api;
+ requires static transitive org.junit.jupiter.params;
+ requires transitive org.slf4j;
//////////////////
/// PUBLIC API ///
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
index a68c72c7b..edb1e86a7 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
@@ -21,6 +21,7 @@
import static io.github.ascopes.jct.fixtures.Fixtures.someOf;
import static io.github.ascopes.jct.fixtures.Fixtures.someRelease;
import static io.github.ascopes.jct.fixtures.Fixtures.someText;
+import static io.github.ascopes.jct.fixtures.Fixtures.unused;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.fail;
@@ -396,6 +397,8 @@ void compileReturnsTheExpectedCompilation() {
)
) {
// Given
+ unused(compilationFactoryConstructor);
+
fileManagersCls.when(() -> JctFileManagers.newJctFileManagerFactory(any()))
.thenReturn(fileManagerFactory);
@@ -418,6 +421,7 @@ void compilePropagatesExceptionsThrownByTheCompilationProcess() {
)
) {
// Given
+ unused(compilationFactoryConstructor);
fileManagersCls.when(() -> JctFileManagers.newJctFileManagerFactory(any()))
.thenReturn(fileManagerFactory);
@@ -447,6 +451,7 @@ void compileRethrowsFileManagerClosureExceptions() throws IOException {
)
) {
// Given
+ unused(compilationFactoryConstructor);
fileManagersCls.when(() -> JctFileManagers.newJctFileManagerFactory(any()))
.thenReturn(fileManagerFactory);
@@ -1757,9 +1762,7 @@ void buildFlagsBuildsTheExpectedFlags() {
assertThat(actualFlags).isEqualTo(expectedFlags);
}
- /////////////////////
- /// Param sources ///
- /////////////////////
+ /// ////////////////// Param sources /// //////////////////
static Stream locales() {
return Stream.of(
@@ -1781,9 +1784,7 @@ static Stream charsets() {
);
}
- ////////////////////////////////
- /// Helper methods and types ///
- ////////////////////////////////
+ /// ///////////////////////////// Helper methods and types /// /////////////////////////////
class CompilerImpl extends AbstractJctCompiler {
@@ -1828,11 +1829,9 @@ final List concat(List first, List... more) {
return newList;
}
- ///
/// Reflection logic in tests is nasty, but this helps keep the tests for the constructor,
- /// accessors, and mutators separate.
- /// Since the AbstractJctCompiler is mostly just a fat POJO, I will allow it this time.
- ///
+ /// accessors, and mutators separate. Since the AbstractJctCompiler is mostly just a fat POJO, I
+ /// will allow it this time.
AbstractObjectAssert, ?> assertThatCompilerField(String field) {
return assertThat(compiler).extracting(field);
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationFactoryImplTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationFactoryImplTest.java
index 77e27a24e..07e0967dc 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationFactoryImplTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationFactoryImplTest.java
@@ -22,6 +22,7 @@
import static io.github.ascopes.jct.fixtures.Fixtures.someLinesOfText;
import static io.github.ascopes.jct.fixtures.Fixtures.someText;
import static io.github.ascopes.jct.fixtures.Fixtures.someTraceDiagnostic;
+import static io.github.ascopes.jct.fixtures.Fixtures.unused;
import static io.github.ascopes.jct.utils.IterableUtils.flatten;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -476,7 +477,9 @@ void diagnosticsGetPlacedInTheCompilationResult() throws IOException {
MockInitializer configurer =
(mock, ctx) -> when(mock.getDiagnostics()).thenReturn(diagnostics);
- try (var ignored = mockConstruction(TracingDiagnosticListener.class, configurer)) {
+ try (var mockedConstruction = mockConstruction(TracingDiagnosticListener.class, configurer)) {
+ unused(mockedConstruction);
+
// Do not inline this, it will break in Mockito's stubber backend.
var fileObjects = Set.of(somePathFileObject(someBinaryName()));
when(fileManager.list(any(), any(), any(), anyBoolean()))
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationImplTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationImplTest.java
index f8c1dcb88..161850f29 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationImplTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/impl/JctCompilationImplTest.java
@@ -472,11 +472,13 @@ void buildingWithNullOutputLinesRaisesNullPointerException() {
}
@SafeVarargs
+ @SuppressWarnings("varargs")
static Set nullableSetOf(T... values) {
return new LinkedHashSet<>(Arrays.asList(values));
}
@SafeVarargs
+ @SuppressWarnings("varargs")
static List nullableListOf(T... values) {
return Arrays.asList(values);
}
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/diagnostics/TeeWriterTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/diagnostics/TeeWriterTest.java
index ee515c490..4b9fb4de0 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/diagnostics/TeeWriterTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/diagnostics/TeeWriterTest.java
@@ -16,6 +16,7 @@
package io.github.ascopes.jct.diagnostics;
import static io.github.ascopes.jct.fixtures.Fixtures.someText;
+import static io.github.ascopes.jct.fixtures.Fixtures.unused;
import static java.nio.charset.Charset.defaultCharset;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
@@ -117,14 +118,13 @@ void flushDelegatesToTheWriter() throws IOException {
}
@DisplayName(".close() delegates to the writer")
- @SuppressWarnings("EmptyTryBlock")
@Test
void closeDelegatesToTheWriter() throws IOException {
// Given
var writer = mock(Writer.class);
- try (var ignoredTee = new TeeWriter(writer)) {
- // Do nothing
+ try (var tee = new TeeWriter(writer)) {
+ unused(tee);
}
// Then
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImplTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImplTest.java
index 496fa3056..7efe0e685 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImplTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerFactoryImplTest.java
@@ -15,6 +15,7 @@
*/
package io.github.ascopes.jct.filemanagers.impl;
+import static io.github.ascopes.jct.fixtures.Fixtures.unused;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_MOCKS;
@@ -80,7 +81,8 @@ void getCompilerReturnsTheCompiler() {
@Test
void createdFileManagersUseTheEffectiveRelease() {
// Given
- try (var ignored = configurerChainMock()) {
+ try (var chain = configurerChainMock()) {
+ unused(chain);
var release = Fixtures.someRelease();
when(compiler.getEffectiveRelease()).thenReturn(release);
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/ExtraArgumentMatchers.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/ExtraArgumentMatchers.java
index 4f15c4975..140b807d9 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/ExtraArgumentMatchers.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/ExtraArgumentMatchers.java
@@ -60,6 +60,7 @@ public static T hasGenericType(T... varargs) {
* @return the argument matcher.
*/
@SafeVarargs
+ @SuppressWarnings("varargs")
public static > T containsExactlyElements(E... expected) {
return containsExactlyElements(Set.of(expected));
}
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java
index ff0f0d855..a52513e0f 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java
@@ -49,6 +49,7 @@
import javax.tools.Diagnostic.Kind;
import javax.tools.JavaFileManager.Location;
import javax.tools.JavaFileObject;
+import org.jspecify.annotations.Nullable;
import org.mockito.quality.Strictness;
/**
@@ -479,6 +480,17 @@ public static T oneOf(Collection items) {
return iter.next();
}
+ /**
+ * Hack to shut up javac about unused attributes within try-with-resources, because
+ * Mockito really gives us no sensible choice when mocking statics/construction. Side
+ * effects are fairly regular in this library as well unfortunately.
+ *
+ * @param whatever whatever you want to not use.
+ */
+ public static void unused(@SuppressWarnings("unused") @Nullable Object whatever) {
+ // Do nothing what-so-ever, but spook javac into leaving us alone.
+ }
+
/**
* Return some of the members of a given enum.
*
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java
index 519a06ba3..89e84955a 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java
@@ -17,7 +17,6 @@
import static org.assertj.core.api.Assertions.assertThat;
-import io.github.ascopes.jct.utils.ToStringBuilder;
import java.util.AbstractMap.SimpleImmutableEntry;
import java.util.ArrayList;
import java.util.Arrays;
@@ -150,21 +149,7 @@ public boolean isErrorEnabled(Marker marker) {
return true;
}
- private static class LogRecord {
-
- private final Throwable ex;
- private final String message;
- private final Object[] args;
-
- LogRecord(
- Throwable ex,
- String message,
- Object... args
- ) {
- this.ex = ex;
- this.message = message;
- this.args = args;
- }
+ private record LogRecord(Throwable ex, String message, Object... args) {
@Override
public boolean equals(Object other) {
@@ -175,14 +160,5 @@ public boolean equals(Object other) {
}
return false;
}
-
- @Override
- public String toString() {
- return new ToStringBuilder(this)
- .attribute("ex", ex)
- .attribute("message", message)
- .attribute("args", args)
- .toString();
- }
}
}
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/UtilityClassTestTemplate.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/UtilityClassTestTemplate.java
index e2f944d18..6b015dc32 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/UtilityClassTestTemplate.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/UtilityClassTestTemplate.java
@@ -17,13 +17,11 @@
import static java.util.function.Predicate.not;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatObject;
import static org.assertj.core.api.InstanceOfAssertFactories.BOOLEAN;
import static org.assertj.core.api.InstanceOfAssertFactories.array;
import static org.junit.jupiter.api.DynamicTest.dynamicTest;
-import io.github.ascopes.jct.utils.UtilityClass;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -62,13 +60,6 @@ default void openModuleForReflection() {
type.getModule().addOpens(type.getPackageName(), getClass().getModule());
}
- @DisplayName("Class should extend UtilityClass")
- @Test
- default void testClassExtendsUtilityClass() {
- assertThat(getTypeBeingTested())
- .hasSuperclass(UtilityClass.class);
- }
-
@DisplayName("Class should not implement any interfaces")
@Test
default void classShouldNotImplementAnyInterfaces() {
@@ -108,15 +99,6 @@ default void testClassConstructorHasNoArguments() {
.isEqualTo(0);
}
- @DisplayName("Class constructor should throw an UnsupportedOperationException")
- @Test
- default void testClassConstructorThrowsUnsupportedOperationException() {
- assertThatCode(() -> getSingleConstructor().newInstance())
- .cause()
- .isInstanceOf(UnsupportedOperationException.class)
- .hasMessage("this is a utility class that cannot be initialised or extended");
- }
-
@DisplayName("All methods should be static")
@TestFactory
default Stream allMethodsShouldBeStatic() {
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/AbstractCompilersProviderTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/AbstractCompilersProviderTest.java
index 4dde7eb34..37a1d6a68 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/AbstractCompilersProviderTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/AbstractCompilersProviderTest.java
@@ -372,6 +372,7 @@ public CompilersProviderImpl(int minSupportedVersion, int maxSupportedVersion) {
}
@SafeVarargs
+ @SuppressWarnings("varargs")
final void configureInternals(
int min,
int max,
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/JavacCompilersProviderTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/JavacCompilersProviderTest.java
index 7eb9d5d9d..815041d05 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/JavacCompilersProviderTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/junit/JavacCompilersProviderTest.java
@@ -144,6 +144,7 @@ void providerUsesTheMaxCompilerVersionAllowedIfExceeded() {
}
@SafeVarargs
+ @SuppressWarnings("varargs")
final JavacCompilerTest someAnnotation(
int min,
int max,
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/FileUtilsTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/FileUtilsTest.java
index cf199d3c7..95212da35 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/FileUtilsTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/FileUtilsTest.java
@@ -609,6 +609,7 @@ static Stream fileWithAnyKindExistingFileTestCases() {
}
@SafeVarargs
+ @SuppressWarnings("varargs")
static Set set(T... args) {
return Set.of(args);
}
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/SpecialLocationsUtilsTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/SpecialLocationsUtilsTest.java
index e7521284d..cf8bcde1e 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/SpecialLocationsUtilsTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/utils/SpecialLocationsUtilsTest.java
@@ -17,6 +17,7 @@
import static io.github.ascopes.jct.fixtures.Fixtures.oneOf;
import static io.github.ascopes.jct.fixtures.Fixtures.someText;
+import static io.github.ascopes.jct.fixtures.Fixtures.unused;
import static java.util.function.Predicate.not;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;
@@ -39,8 +40,6 @@
import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledForJreRange;
-import org.junit.jupiter.api.condition.JRE;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
import org.junit.jupiter.api.parallel.Isolated;
@@ -118,8 +117,10 @@ void currentModulePathLocationsReturnsTheClassPathLocationsThatExist() throws IO
// Given
try (
var tempPaths = new TempPaths();
- var ignored = new MockedSystemProperty("jdk.module.path", tempPaths.toPathString())
+ var property = new MockedSystemProperty("jdk.module.path", tempPaths.toPathString())
) {
+ unused(property);
+
// We always exclude this path.
var ideaRt = tempPaths.addFile("idea_rt.jar");
diff --git a/pom.xml b/pom.xml
index 32e13faf1..b170bf15a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -248,6 +248,9 @@
${maven-compiler-plugin.version}
+
+ -Xlint:all,-classfile,-processing,-requires-automatic,-serial
+
true
true
${java-release}
From da4957e83a09a2d0c63f4338663b03dccde3bce5 Mon Sep 17 00:00:00 2001
From: ascopes
Date: Sat, 4 Oct 2025 13:37:35 +0000
Subject: [PATCH 05/37] [maven-release-plugin] prepare release v6.0.0
---
java-compiler-testing/pom.xml | 2 +-
pom.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/java-compiler-testing/pom.xml b/java-compiler-testing/pom.xml
index ac97ddd1a..831cfbc01 100644
--- a/java-compiler-testing/pom.xml
+++ b/java-compiler-testing/pom.xml
@@ -22,7 +22,7 @@
io.github.ascopes.jct
java-compiler-testing-parent
- 6.0.0-SNAPSHOT
+ 6.0.0
../pom.xml
diff --git a/pom.xml b/pom.xml
index b170bf15a..bc231d2a6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
io.github.ascopes.jct
java-compiler-testing-parent
- 6.0.0-SNAPSHOT
+ 6.0.0
pom
Java Compiler Testing parent project
@@ -84,7 +84,7 @@
https://github.com/ascopes/java-compiler-testing
scm:git:https://github.com/ascopes/java-compiler-testing
scm:git:https://github.com/ascopes/java-compiler-testing
- vHEAD
+ v6.0.0
From 0372e45e84d1184d1346bf9d807dde8d4c2e9ea2 Mon Sep 17 00:00:00 2001
From: ascopes
Date: Sat, 4 Oct 2025 13:37:36 +0000
Subject: [PATCH 06/37] [maven-release-plugin] prepare for next development
iteration
---
java-compiler-testing/pom.xml | 2 +-
pom.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/java-compiler-testing/pom.xml b/java-compiler-testing/pom.xml
index 831cfbc01..29ecda0cb 100644
--- a/java-compiler-testing/pom.xml
+++ b/java-compiler-testing/pom.xml
@@ -22,7 +22,7 @@
io.github.ascopes.jct
java-compiler-testing-parent
- 6.0.0
+ 6.0.1-SNAPSHOT
../pom.xml
diff --git a/pom.xml b/pom.xml
index bc231d2a6..bfe7dcc6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
io.github.ascopes.jct
java-compiler-testing-parent
- 6.0.0
+ 6.0.1-SNAPSHOT
pom
Java Compiler Testing parent project
@@ -84,7 +84,7 @@
https://github.com/ascopes/java-compiler-testing
scm:git:https://github.com/ascopes/java-compiler-testing
scm:git:https://github.com/ascopes/java-compiler-testing
- v6.0.0
+ vHEAD
From e717b640aeec49c2d30842f9643c153f33e32406 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 1 Nov 2025 22:01:20 +0000
Subject: [PATCH 07/37] Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6ac806ac4..5ec9472a3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Stash reports
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: always()
with:
name: reports-${{ matrix.java-version }}-${{ matrix.os-name }}
From 1afffde727afdf8275f24c96a69809e04bf467ba Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 1 Nov 2025 22:01:33 +0000
Subject: [PATCH 08/37] Bump org.jacoco:jacoco-maven-plugin from 0.8.13 to
0.8.14
Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.13 to 0.8.14.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.13...v0.8.14)
---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
dependency-version: 0.8.14
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bfe7dcc6e..c3e555bd2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
0.9.0
- 0.8.13
+ 0.8.14
5.0.0
3.6.0
3.14.1
From c1a11448610acfc02f8ffab5bc98ac4a55b29f1b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 1 Nov 2025 22:01:49 +0000
Subject: [PATCH 09/37] Bump com.github.marschall:memoryfilesystem from 2.8.1
to 2.8.2
Bumps [com.github.marschall:memoryfilesystem](https://github.com/marschall/memoryfilesystem) from 2.8.1 to 2.8.2.
- [Release notes](https://github.com/marschall/memoryfilesystem/releases)
- [Commits](https://github.com/marschall/memoryfilesystem/compare/2.8.1...2.8.2)
---
updated-dependencies:
- dependency-name: com.github.marschall:memoryfilesystem
dependency-version: 2.8.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bfe7dcc6e..42313c95c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,7 +94,7 @@
1.4.0
1.0.0
6.0.0
- 2.8.1
+ 2.8.2
5.20.0
2.0.17
From d6a239150c1a3f210628d62f18cee5e09d7c19e2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 1 Nov 2025 22:01:55 +0000
Subject: [PATCH 10/37] Bump me.fabriciorby:maven-surefire-junit5-tree-reporter
Bumps [me.fabriciorby:maven-surefire-junit5-tree-reporter](https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter) from 1.4.0 to 1.5.1.
- [Release notes](https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter/releases)
- [Commits](https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter/compare/v1.4.0...v1.5.1)
---
updated-dependencies:
- dependency-name: me.fabriciorby:maven-surefire-junit5-tree-reporter
dependency-version: 1.5.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bfe7dcc6e..ea2818145 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,7 +118,7 @@
11.1.0
- 1.4.0
+ 1.5.1
true
From 96101fe736a2dc5c309c459d2b22e1865878ef5e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 2 Nov 2025 07:06:32 +0000
Subject: [PATCH 11/37] Bump com.puppycrawl.tools:checkstyle from 11.1.0 to
12.1.1
Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 11.1.0 to 12.1.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-11.1.0...checkstyle-12.1.1)
---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
dependency-version: 12.1.1
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 1ae5b5c86..97e18acef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
3.5.4
- 11.1.0
+ 12.1.1
1.5.1
From 84958e7e2c3ade25498b8d9e8c5ac34d87f17c15 Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Sun, 2 Nov 2025 08:15:11 +0000
Subject: [PATCH 12/37] Change JDK distribution from Zulu to Temurin
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.github/workflows/build.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5ec9472a3..37923e853 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -37,11 +37,11 @@ jobs:
with:
fetch-depth: 2
- - name: Initialize Zulu JDK
+ - name: Initialize JDK
uses: actions/setup-java@v5
with:
check-latest: true
- distribution: zulu
+ distribution: temurin
java-version: ${{ matrix.java-version }}
- name: Maven cache
From 8f0b5bbb4d0ab7bc6475fdbd525dcd12a2826420 Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Sun, 2 Nov 2025 08:16:57 +0000
Subject: [PATCH 13/37] Update Java version for Windows ARM in build workflow
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 37923e853..35efc0a2b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -27,7 +27,7 @@ jobs:
- 25 # LTS
include:
- os-name: windows-11-arm
- java-version: 25 # LTS
+ java-version: 23 # Latest Temurin for ARM
- os-name: macos-latest
java-version: 25 # LTS
From 0a9cd83ea09c2429888b4c0f511b95518bb39cd5 Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Tue, 4 Nov 2025 07:50:20 +0000
Subject: [PATCH 14/37] Disable automatic release notes generation
This is noisy for users; for now, I'll write these manually.
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.github/workflows/deploy.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index c87932737..94b0576ae 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -92,6 +92,6 @@ jobs:
with:
tag: v${{ env.release_version }}
name: v${{ env.release_version }}
- generateReleaseNotes: true
+ generateReleaseNotes: false
token: ${{ secrets.GITHUB_TOKEN }}
From e44dd5df5f312893900b34d7bbda171baaad0963 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 01:19:46 +0000
Subject: [PATCH 15/37] Bump com.puppycrawl.tools:checkstyle from 12.1.1 to
12.2.0
Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-12.1.1...checkstyle-12.2.0)
---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
dependency-version: 12.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 97e18acef..c8e0cd601 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
3.5.4
- 12.1.1
+ 12.2.0
1.5.1
From 415d61169e58462ba376588a128bbd79932f17ee Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 01:19:58 +0000
Subject: [PATCH 16/37] Bump org.apache.maven.plugins:maven-source-plugin from
3.3.1 to 3.4.0
Bumps [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/apache/maven-source-plugin/releases)
- [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.3.1...maven-source-plugin-3.4.0)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-source-plugin
dependency-version: 3.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 97e18acef..8eccf4a97 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,7 @@
3.9.1
3.0.0-M7
3.3.1
- 3.3.1
+ 3.4.0
3.5.4
From 3702715cfb7c18b4ee9646ab91f1563871bfb1ad Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 01:20:10 +0000
Subject: [PATCH 17/37] Bump org.apache.maven.plugins:maven-jar-plugin from
3.4.2 to 3.5.0
Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.4.2 to 3.5.0.
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.4.2...maven-jar-plugin-3.5.0)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
dependency-version: 3.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 97e18acef..5586f1ad1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,7 @@
3.5.4
3.2.1
3.1.4
- 3.4.2
+ 3.5.0
3.12.0
3.9.1
3.0.0-M7
From ca28ecb27ad1a68ad44e4dae6abe79a73b398ce6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 01:28:56 +0000
Subject: [PATCH 18/37] Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
.github/workflows/build.yml | 4 ++--
.github/workflows/deploy.yml | 2 +-
.github/workflows/pages.yml | 2 +-
.github/workflows/security.yml | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 35efc0a2b..1326290ba 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -33,7 +33,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v5
+ uses: actions/checkout@v6
with:
fetch-depth: 2
@@ -83,7 +83,7 @@ jobs:
- build
steps:
- name: Checkout code
- uses: actions/checkout@v5
+ uses: actions/checkout@v6
- name: Publish code coverage
uses: codecov/codecov-action@v5
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 94b0576ae..ae06772c5 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -32,7 +32,7 @@ jobs:
steps:
- name: Checkout Repository
- uses: actions/checkout@v5
+ uses: actions/checkout@v6
with:
fetch-depth: 2
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index 8c66c2896..6997cb1e0 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v6
- name: Set up JDK
uses: actions/setup-java@v5
diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml
index 8cea7a73e..f53d61b04 100644
--- a/.github/workflows/security.yml
+++ b/.github/workflows/security.yml
@@ -13,7 +13,7 @@ jobs:
contents: write
steps:
- name: Checkout repository
- uses: actions/checkout@v5
+ uses: actions/checkout@v6
with:
fetch-depth: 1
From b9c13fa01e410de55e4a7518197a3435295a6e82 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 2 Dec 2025 07:13:00 +0000
Subject: [PATCH 19/37] Bump org.apache.maven.plugins:maven-resources-plugin
from 3.3.1 to 3.4.0
Bumps [org.apache.maven.plugins:maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/apache/maven-resources-plugin/releases)
- [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.3.1...v3.4.0)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-resources-plugin
dependency-version: 3.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index c75f30996..59e6ffeab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,7 +112,7 @@
3.12.0
3.9.1
3.0.0-M7
- 3.3.1
+ 3.4.0
3.4.0
3.5.4
From 56f831dd25da5efb6f262cda32fcf73009b7dfdc Mon Sep 17 00:00:00 2001
From: Ashley Scopes <73482956+ascopes@users.noreply.github.com>
Date: Sat, 20 Dec 2025 09:48:21 +0000
Subject: [PATCH 20/37] Build on Maven 3.9.12
---
.mvn/wrapper/maven-wrapper.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index c0bcafe98..8dea6c227 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,3 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
From 44c5b86abbb95b09f4d08823f223fb435c02ce5c Mon Sep 17 00:00:00 2001
From: Ashley Scopes <73482956+ascopes@users.noreply.github.com>
Date: Sat, 20 Dec 2025 09:57:31 +0000
Subject: [PATCH 21/37] Avoid crawling MethodHandle internals in unit tests
with AssertJ
Attempts to fix java.lang.NoSuchFieldException: no such field:
java.lang.invoke.BoundMethodHandle.argL0/java.lang.Object/getField
---
.../ascopes/jct/compilers/AbstractJctCompilerTest.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
index edb1e86a7..71ad4032c 100644
--- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
+++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/compilers/AbstractJctCompilerTest.java
@@ -1834,7 +1834,13 @@ final List concat(List first, List... more) {
/// will allow it this time.
AbstractObjectAssert, ?> assertThatCompilerField(String field) {
- return assertThat(compiler).extracting(field);
+ try {
+ var fieldObj = AbstractJctCompiler.class.getDeclaredField(field);
+ fieldObj.setAccessible(true);
+ return assertThat(fieldObj.get(compiler));
+ } catch (ReflectiveOperationException ex) {
+ return fail("Failed to get field " + field, ex);
+ }
}
T setFieldOnCompiler(String field, T value) {
From ce781bc6b788b9677b0bbf113b862f6f16a75a21 Mon Sep 17 00:00:00 2001
From: Ashley Scopes <73482956+ascopes@users.noreply.github.com>
Date: Sun, 21 Dec 2025 10:18:38 +0000
Subject: [PATCH 22/37] Remove years from copyright header
Copyright can be inspected via the Git history and GitHub
audit logs to infer the date range, and this avoids yearly
'busy work' moving forwards.
---
.mvn/license/license-header.txt | 2 +-
codecov.yml | 2 +-
java-compiler-testing/pom.xml | 2 +-
java-compiler-testing/src/it/avaje-http/pom.xml | 2 +-
.../jct/acceptancetests/avajehttp/AvajeHttpTest.java | 2 +-
.../src/test/resources/code/module-info.java | 2 +-
.../test/resources/code/org/example/PatchedUser.java | 2 +-
.../src/test/resources/code/org/example/User.java | 2 +-
.../src/test/resources/code/org/example/UserApi.java | 2 +-
java-compiler-testing/src/it/avaje-inject/pom.xml | 2 +-
.../acceptancetests/avajeinject/AvajeInjectTest.java | 2 +-
.../src/test/resources/code/module-info.java | 2 +-
.../test/resources/code/org/example/CoffeeMaker.java | 2 +-
.../src/test/resources/code/org/example/Grinder.java | 2 +-
.../src/test/resources/code/org/example/Pump.java | 2 +-
java-compiler-testing/src/it/avaje-jsonb/pom.xml | 2 +-
.../acceptancetests/avajejsonb/AvajeJsonbTest.java | 2 +-
.../it/avaje-jsonb/src/test/resources/code/User.java | 2 +-
java-compiler-testing/src/it/checkerframework/pom.xml | 2 +-
.../checkerframework/CheckerNullTest.java | 2 +-
.../test/resources/code/nullness/happy/HappyCase.java | 2 +-
.../src/test/resources/code/nullness/sad/SadCase.java | 2 +-
java-compiler-testing/src/it/dagger/pom.xml | 2 +-
.../jct/acceptancetests/dagger/DaggerTest.java | 2 +-
.../it/dagger/src/test/resources/code/WebServer.java | 2 +-
.../test/resources/code/WebServerConfiguration.java | 2 +-
java-compiler-testing/src/it/dogfood/pom.xml | 2 +-
.../dogfood/JctCompilationConfigurer.java | 2 +-
.../jct/acceptancetests/dogfood/JctDogfoodTest.java | 2 +-
.../src/it/dogfood/src/test/java/module-info.java | 2 +-
.../src/it/google-auto-factory/pom.xml | 2 +-
.../acceptancetests/autofactory/AutoFactoryTest.java | 2 +-
.../src/test/resources/code/User.java | 2 +-
.../src/it/google-auto-service/pom.xml | 2 +-
.../acceptancetests/autoservice/AutoServiceTest.java | 2 +-
.../src/test/resources/code/SomeImpl.java | 2 +-
.../src/test/resources/code/SomeInterface.java | 2 +-
.../src/it/google-auto-value/pom.xml | 2 +-
.../jct/acceptancetests/autovalue/AutoValueTest.java | 2 +-
.../src/test/resources/code/User.java | 2 +-
.../src/test/resources/code/UserBuilder.java | 2 +-
.../src/it/google-error-prone/pom.xml | 2 +-
.../src/it/google-error-prone/selector.bsh | 2 +-
.../acceptancetests/errorprone/ErrorProneTest.java | 2 +-
.../test/resources/code/nullness/happy/HappyCase.java | 2 +-
.../src/test/resources/code/nullness/sad/SadCase.java | 2 +-
java-compiler-testing/src/it/immutables/pom.xml | 2 +-
.../acceptancetests/immutables/ImmutablesTest.java | 2 +-
.../test/resources/code/flat/org/example/Animal.java | 2 +-
.../src/test/resources/code/jpms/module-info.java | 2 +-
.../test/resources/code/jpms/org/example/Animal.java | 2 +-
java-compiler-testing/src/it/lombok/pom.xml | 2 +-
java-compiler-testing/src/it/lombok/selector.bsh | 2 +-
.../jct/acceptancetests/lombok/LombokTest.java | 2 +-
.../test/resources/code/flat/org/example/Animal.java | 2 +-
.../src/test/resources/code/jpms/module-info.java | 2 +-
.../test/resources/code/jpms/org/example/Animal.java | 2 +-
java-compiler-testing/src/it/mapstruct/pom.xml | 2 +-
.../jct/acceptancetests/mapstruct/MapStructTest.java | 2 +-
.../src/test/resources/code/flat/org/example/Car.java | 2 +-
.../test/resources/code/flat/org/example/CarDto.java | 2 +-
.../resources/code/flat/org/example/CarMapper.java | 2 +-
.../test/resources/code/flat/org/example/CarType.java | 2 +-
.../src/test/resources/code/jpms/module-info.java | 2 +-
.../src/test/resources/code/jpms/org/example/Car.java | 2 +-
.../test/resources/code/jpms/org/example/CarDto.java | 2 +-
.../resources/code/jpms/org/example/CarMapper.java | 2 +-
.../test/resources/code/jpms/org/example/CarType.java | 2 +-
java-compiler-testing/src/it/micronaut/pom.xml | 2 +-
java-compiler-testing/src/it/micronaut/selector.bsh | 2 +-
.../micronaut/MicronautConfigurer.java | 2 +-
.../micronaut/MicronautIntegrationTest.java | 2 +-
.../src/test/resources/code/Application.java | 2 +-
.../src/test/resources/code/HelloController.java | 2 +-
.../src/it/serviceloader-jpms/pom.xml | 2 +-
.../serviceloaderjpms/AnnotatedService.java | 2 +-
.../acceptancetests/serviceloaderjpms/Service.java | 2 +-
.../serviceloaderjpms/ServiceProcessor.java | 2 +-
.../serviceloader-jpms/src/main/java/module-info.java | 2 +-
.../testing/ServiceProcessorJpmsTest.java | 2 +-
.../src/test/resources/code/module-info.java | 2 +-
.../resources/code/org/example/InsultProvider.java | 2 +-
.../code/org/example/MeanInsultProviderImpl.java | 2 +-
java-compiler-testing/src/it/serviceloader/pom.xml | 2 +-
.../serviceloader/AnnotatedService.java | 2 +-
.../jct/acceptancetests/serviceloader/Service.java | 2 +-
.../serviceloader/ServiceProcessor.java | 2 +-
.../serviceloader/testing/ServiceProcessorTest.java | 2 +-
.../src/test/resources/code/InsultProvider.java | 2 +-
.../test/resources/code/MeanInsultProviderImpl.java | 2 +-
java-compiler-testing/src/it/settings.xml | 2 +-
java-compiler-testing/src/it/spring/pom.xml | 2 +-
.../spring/SpringBootAutoconfigureProcessorTest.java | 2 +-
.../spring/SpringBootConfigurationProcessorTest.java | 2 +-
.../resources/code/autoconfigure/module-info.java | 2 +-
.../code/autoconfigure/org/example/Application.java | 2 +-
.../autoconfigure/org/example/config/RouteConfig.java | 2 +-
.../org/example/handlers/HelloWorldHandler.java | 2 +-
.../resources/code/configuration/module-info.java | 2 +-
.../code/configuration/org/example/Application.java | 2 +-
.../configuration/org/example/config/RouteConfig.java | 2 +-
.../org/example/handlers/HelloWorldHandler.java | 2 +-
.../org/example/properties/HelloWorldProperties.java | 2 +-
.../jct/assertions/AbstractContainerGroupAssert.java | 2 +-
.../ascopes/jct/assertions/AbstractEnumAssert.java | 2 +-
.../jct/assertions/AbstractJavaFileObjectAssert.java | 2 +-
.../ascopes/jct/assertions/ClassLoaderAssert.java | 2 +-
.../ascopes/jct/assertions/DiagnosticKindAssert.java | 2 +-
.../ascopes/jct/assertions/JavaFileObjectAssert.java | 2 +-
.../jct/assertions/JavaFileObjectKindAssert.java | 2 +-
.../github/ascopes/jct/assertions/JctAssertions.java | 2 +-
.../ascopes/jct/assertions/JctCompilationAssert.java | 2 +-
.../github/ascopes/jct/assertions/LocationAssert.java | 2 +-
.../jct/assertions/ModuleContainerGroupAssert.java | 2 +-
.../jct/assertions/OutputContainerGroupAssert.java | 2 +-
.../jct/assertions/PackageContainerGroupAssert.java | 2 +-
.../ascopes/jct/assertions/PathFileObjectAssert.java | 2 +-
.../ascopes/jct/assertions/StackTraceAssert.java | 2 +-
.../jct/assertions/StackTraceElementAssert.java | 2 +-
.../ascopes/jct/assertions/TraceDiagnosticAssert.java | 2 +-
.../jct/assertions/TraceDiagnosticListAssert.java | 2 +-
.../ascopes/jct/assertions/TypeAwareListAssert.java | 2 +-
.../github/ascopes/jct/assertions/package-info.java | 2 +-
.../ascopes/jct/compilers/AbstractJctCompiler.java | 2 +-
.../github/ascopes/jct/compilers/CompilationMode.java | 2 +-
.../github/ascopes/jct/compilers/DebuggingInfo.java | 2 +-
.../github/ascopes/jct/compilers/JctCompilation.java | 2 +-
.../ascopes/jct/compilers/JctCompilationFactory.java | 2 +-
.../io/github/ascopes/jct/compilers/JctCompiler.java | 2 +-
.../ascopes/jct/compilers/JctCompilerConfigurer.java | 2 +-
.../io/github/ascopes/jct/compilers/JctCompilers.java | 2 +-
.../github/ascopes/jct/compilers/JctFlagBuilder.java | 2 +-
.../ascopes/jct/compilers/JctFlagBuilderFactory.java | 2 +-
.../ascopes/jct/compilers/Jsr199CompilerFactory.java | 2 +-
.../jct/compilers/impl/JavacJctCompilerImpl.java | 2 +-
.../jct/compilers/impl/JavacJctFlagBuilderImpl.java | 2 +-
.../jct/compilers/impl/JctCompilationFactoryImpl.java | 2 +-
.../jct/compilers/impl/JctCompilationImpl.java | 2 +-
.../ascopes/jct/compilers/impl/package-info.java | 2 +-
.../io/github/ascopes/jct/compilers/package-info.java | 2 +-
.../io/github/ascopes/jct/containers/Container.java | 2 +-
.../github/ascopes/jct/containers/ContainerGroup.java | 2 +-
.../ascopes/jct/containers/ModuleContainerGroup.java | 2 +-
.../ascopes/jct/containers/OutputContainerGroup.java | 2 +-
.../ascopes/jct/containers/PackageContainerGroup.java | 2 +-
.../impl/AbstractPackageContainerGroup.java | 2 +-
.../containers/impl/ContainerGroupRepositoryImpl.java | 2 +-
.../ascopes/jct/containers/impl/JarContainerImpl.java | 2 +-
.../jct/containers/impl/ModuleContainerGroupImpl.java | 2 +-
.../jct/containers/impl/OutputContainerGroupImpl.java | 2 +-
.../containers/impl/PackageContainerGroupImpl.java | 2 +-
.../impl/PackageContainerGroupUrlClassLoader.java | 2 +-
.../containers/impl/PathWrappingContainerImpl.java | 2 +-
.../ascopes/jct/containers/impl/package-info.java | 2 +-
.../github/ascopes/jct/containers/package-info.java | 2 +-
.../io/github/ascopes/jct/diagnostics/TeeWriter.java | 2 +-
.../ascopes/jct/diagnostics/TraceDiagnostic.java | 2 +-
.../jct/diagnostics/TracingDiagnosticListener.java | 2 +-
.../github/ascopes/jct/diagnostics/package-info.java | 2 +-
.../github/ascopes/jct/ex/JctCompilerException.java | 2 +-
.../java/io/github/ascopes/jct/ex/JctException.java | 2 +-
.../ascopes/jct/ex/JctIllegalInputException.java | 2 +-
.../ascopes/jct/ex/JctJunitConfigurerException.java | 2 +-
.../github/ascopes/jct/ex/JctNotFoundException.java | 2 +-
.../ascopes/jct/ex/JctNotImplementedException.java | 2 +-
.../java/io/github/ascopes/jct/ex/package-info.java | 2 +-
.../filemanagers/AnnotationProcessorDiscovery.java | 2 +-
.../ascopes/jct/filemanagers/JctFileManager.java | 2 +-
.../jct/filemanagers/JctFileManagerFactory.java | 2 +-
.../ascopes/jct/filemanagers/JctFileManagers.java | 2 +-
.../github/ascopes/jct/filemanagers/LoggingMode.java | 2 +-
.../ascopes/jct/filemanagers/ModuleLocation.java | 2 +-
.../ascopes/jct/filemanagers/PathFileObject.java | 2 +-
...ManagerAnnotationProcessorClassPathConfigurer.java | 2 +-
.../filemanagers/config/JctFileManagerConfigurer.java | 2 +-
.../config/JctFileManagerConfigurerChain.java | 2 +-
.../config/JctFileManagerJvmClassPathConfigurer.java | 2 +-
.../JctFileManagerJvmClassPathModuleConfigurer.java | 2 +-
.../config/JctFileManagerJvmModulePathConfigurer.java | 2 +-
.../JctFileManagerJvmSystemModulesConfigurer.java | 2 +-
.../config/JctFileManagerLoggingProxyConfigurer.java | 2 +-
.../JctFileManagerRequiredLocationsConfigurer.java | 2 +-
.../config/JctFileManagerWorkspaceConfigurer.java | 2 +-
.../ascopes/jct/filemanagers/config/package-info.java | 2 +-
.../filemanagers/impl/JctFileManagerFactoryImpl.java | 2 +-
.../jct/filemanagers/impl/JctFileManagerImpl.java | 2 +-
.../filemanagers/impl/LoggingFileManagerProxy.java | 2 +-
.../jct/filemanagers/impl/PathFileObjectImpl.java | 2 +-
.../ascopes/jct/filemanagers/impl/package-info.java | 2 +-
.../github/ascopes/jct/filemanagers/package-info.java | 2 +-
.../ascopes/jct/junit/AbstractCompilersProvider.java | 2 +-
.../github/ascopes/jct/junit/JavacCompilerTest.java | 2 +-
.../ascopes/jct/junit/JavacCompilersProvider.java | 2 +-
.../io/github/ascopes/jct/junit/JctExtension.java | 2 +-
.../java/io/github/ascopes/jct/junit/Managed.java | 2 +-
.../io/github/ascopes/jct/junit/VersionStrategy.java | 2 +-
.../io/github/ascopes/jct/junit/package-info.java | 2 +-
.../ascopes/jct/repr/LocationRepresentation.java | 2 +-
.../ascopes/jct/repr/StackTraceRepresentation.java | 2 +-
.../jct/repr/TraceDiagnosticListRepresentation.java | 2 +-
.../jct/repr/TraceDiagnosticRepresentation.java | 2 +-
.../java/io/github/ascopes/jct/repr/package-info.java | 2 +-
.../java/io/github/ascopes/jct/utils/FileUtils.java | 2 +-
.../io/github/ascopes/jct/utils/IoExceptionUtils.java | 2 +-
.../io/github/ascopes/jct/utils/IterableUtils.java | 2 +-
.../main/java/io/github/ascopes/jct/utils/Lazy.java | 2 +-
.../io/github/ascopes/jct/utils/LoomPolyfill.java | 2 +-
.../io/github/ascopes/jct/utils/ModuleDiscoverer.java | 2 +-
.../ascopes/jct/utils/SpecialLocationUtils.java | 2 +-
.../io/github/ascopes/jct/utils/StringSlicer.java | 2 +-
.../java/io/github/ascopes/jct/utils/StringUtils.java | 2 +-
.../io/github/ascopes/jct/utils/ToStringBuilder.java | 2 +-
.../io/github/ascopes/jct/utils/package-info.java | 2 +-
.../ascopes/jct/workspaces/DirectoryBuilder.java | 2 +-
.../io/github/ascopes/jct/workspaces/FileBuilder.java | 2 +-
.../ascopes/jct/workspaces/ManagedDirectory.java | 2 +-
.../io/github/ascopes/jct/workspaces/PathRoot.java | 2 +-
.../github/ascopes/jct/workspaces/PathStrategy.java | 2 +-
.../io/github/ascopes/jct/workspaces/Workspace.java | 2 +-
.../io/github/ascopes/jct/workspaces/Workspaces.java | 2 +-
.../jct/workspaces/impl/AbstractManagedDirectory.java | 2 +-
.../jct/workspaces/impl/DirectoryBuilderImpl.java | 2 +-
.../ascopes/jct/workspaces/impl/FileBuilderImpl.java | 2 +-
.../ascopes/jct/workspaces/impl/JarFactoryImpl.java | 2 +-
.../jct/workspaces/impl/MemoryFileSystemProvider.java | 2 +-
.../ascopes/jct/workspaces/impl/RamDirectoryImpl.java | 2 +-
.../jct/workspaces/impl/TempDirectoryImpl.java | 2 +-
.../ascopes/jct/workspaces/impl/WorkspaceDumper.java | 2 +-
.../ascopes/jct/workspaces/impl/WorkspaceImpl.java | 2 +-
.../jct/workspaces/impl/WrappingDirectoryImpl.java | 2 +-
.../ascopes/jct/workspaces/impl/package-info.java | 2 +-
.../github/ascopes/jct/workspaces/package-info.java | 2 +-
java-compiler-testing/src/main/java/module-info.java | 2 +-
.../assertions/AbstractContainerGroupAssertTest.java | 2 +-
.../jct/assertions/AbstractEnumAssertTest.java | 2 +-
.../assertions/AbstractJavaFileObjectAssertTest.java | 2 +-
.../ascopes/jct/assertions/ClassLoaderAssertTest.java | 2 +-
.../jct/assertions/DiagnosticKindAssertTest.java | 2 +-
.../jct/assertions/JavaFileObjectAssertTest.java | 2 +-
.../jct/assertions/JavaFileObjectKindAssertTest.java | 2 +-
.../ascopes/jct/assertions/JctAssertionsTest.java | 2 +-
.../jct/assertions/JctCompilationAssertTest.java | 2 +-
.../ascopes/jct/assertions/LocationAssertTest.java | 2 +-
.../assertions/ModuleContainerGroupAssertTest.java | 2 +-
.../assertions/OutputContainerGroupAssertTest.java | 2 +-
.../assertions/PackageContainerGroupAssertTest.java | 2 +-
.../jct/assertions/PathFileObjectAssertTest.java | 2 +-
.../ascopes/jct/assertions/StackTraceAssertTest.java | 2 +-
.../jct/assertions/StackTraceElementAssertTest.java | 2 +-
.../jct/assertions/TraceDiagnosticAssertTest.java | 2 +-
.../jct/assertions/TraceDiagnosticListAssertTest.java | 2 +-
.../jct/compilers/AbstractJctCompilerTest.java | 2 +-
.../ascopes/jct/compilers/DebuggingInfoTest.java | 2 +-
.../ascopes/jct/compilers/JctCompilationTest.java | 2 +-
.../github/ascopes/jct/compilers/JctCompilerTest.java | 2 +-
.../ascopes/jct/compilers/JctCompilersTest.java | 2 +-
.../jct/compilers/impl/JavacJctCompilerImplTest.java | 2 +-
.../compilers/impl/JavacJctFlagBuilderImplTest.java | 2 +-
.../compilers/impl/JctCompilationFactoryImplTest.java | 2 +-
.../jct/compilers/impl/JctCompilationImplTest.java | 2 +-
.../impl/AbstractPackageContainerGroupTest.java | 2 +-
.../impl/ContainerGroupRepositoryImplTest.java | 2 +-
.../impl/PackageContainerGroupUrlClassLoaderTest.java | 2 +-
.../github/ascopes/jct/diagnostics/TeeWriterTest.java | 2 +-
.../ascopes/jct/diagnostics/TraceDiagnosticTest.java | 2 +-
.../diagnostics/TracingDiagnosticListenerTest.java | 2 +-
.../ascopes/jct/ex/JctCompilerExceptionTest.java | 2 +-
.../ascopes/jct/ex/JctIllegalInputExceptionTest.java | 2 +-
.../jct/ex/JctJunitConfigurerExceptionTest.java | 2 +-
.../ascopes/jct/ex/JctNotFoundExceptionTest.java | 2 +-
.../github/ascopes/jct/ex/JctNotImplementedTest.java | 2 +-
.../ascopes/jct/filemanagers/JctFileManagerTest.java | 2 +-
.../ascopes/jct/filemanagers/JctFileManagersTest.java | 2 +-
.../ascopes/jct/filemanagers/ModuleLocationTest.java | 2 +-
...gerAnnotationProcessorClassPathConfigurerTest.java | 2 +-
.../config/JctFileManagerConfigurerChainTest.java | 2 +-
.../config/JctFileManagerConfigurerTest.java | 2 +-
.../JctFileManagerJvmClassPathConfigurerTest.java | 2 +-
...ctFileManagerJvmClassPathModuleConfigurerTest.java | 2 +-
.../JctFileManagerJvmModulePathConfigurerTest.java | 2 +-
.../JctFileManagerJvmSystemModulesConfigurerTest.java | 2 +-
.../JctFileManagerLoggingProxyConfigurerTest.java | 2 +-
...JctFileManagerRequiredLocationsConfigurerTest.java | 2 +-
.../config/JctFileManagerWorkspaceConfigurerTest.java | 2 +-
.../impl/JctFileManagerFactoryImplTest.java | 2 +-
.../jct/filemanagers/impl/JctFileManagerImplTest.java | 2 +-
.../impl/LoggingFileManagerProxyTest.java | 2 +-
.../jct/filemanagers/impl/PathFileObjectImplTest.java | 2 +-
.../ascopes/jct/fixtures/ExtraArgumentMatchers.java | 2 +-
.../java/io/github/ascopes/jct/fixtures/Fixtures.java | 2 +-
.../github/ascopes/jct/fixtures/Slf4jLoggerFake.java | 2 +-
.../jct/fixtures/UtilityClassTestTemplate.java | 2 +-
.../jct/integration/AbstractIntegrationTest.java | 2 +-
.../BasicLegacyCompilationIntegrationTest.java | 2 +-
.../BasicModuleCompilationIntegrationTest.java | 2 +-
.../BasicMultiModuleCompilationIntegrationTest.java | 2 +-
.../CompilingSpecificClassesIntegrationTest.java | 2 +-
.../MultiTieredCompilationIntegrationTest.java | 2 +-
.../junit/JctExtensionIntegrationTest.java | 2 +-
.../jct/junit/AbstractCompilersProviderTest.java | 2 +-
.../ascopes/jct/junit/JavacCompilersProviderTest.java | 2 +-
.../io/github/ascopes/jct/junit/JctExtensionTest.java | 2 +-
.../github/ascopes/jct/junit/VersionStrategyTest.java | 2 +-
.../ascopes/jct/repr/LocationRepresentationTest.java | 2 +-
.../jct/repr/StackTraceRepresentationTest.java | 2 +-
.../repr/TraceDiagnosticListRepresentationTest.java | 2 +-
.../jct/repr/TraceDiagnosticRepresentationTest.java | 2 +-
.../io/github/ascopes/jct/utils/FileUtilsTest.java | 2 +-
.../ascopes/jct/utils/IoExceptionUtilsTest.java | 2 +-
.../github/ascopes/jct/utils/IterableUtilsTest.java | 2 +-
.../java/io/github/ascopes/jct/utils/LazyTest.java | 2 +-
.../io/github/ascopes/jct/utils/LoomPolyfillTest.java | 2 +-
.../ascopes/jct/utils/ModuleDiscovererTest.java | 2 +-
.../ascopes/jct/utils/SpecialLocationsUtilsTest.java | 2 +-
.../io/github/ascopes/jct/utils/StringSlicerTest.java | 2 +-
.../io/github/ascopes/jct/utils/StringUtilsTest.java | 2 +-
.../github/ascopes/jct/utils/ToStringBuilderTest.java | 2 +-
.../ascopes/jct/workspaces/ManagedDirectoryTest.java | 2 +-
.../ascopes/jct/workspaces/PathStrategyTest.java | 2 +-
.../github/ascopes/jct/workspaces/WorkspaceTest.java | 2 +-
.../github/ascopes/jct/workspaces/WorkspacesTest.java | 2 +-
.../jct/workspaces/impl/JarFactoryImplTest.java | 2 +-
.../impl/MemoryFileSystemProviderImplTest.java | 2 +-
.../workspaces/impl/WrappingDirectoryImplTest.java | 2 +-
.../HelloWorld.java | 2 +-
.../com/example/HelloWorld.java | 2 +-
.../module-info.java | 2 +-
.../greeter/com/example/greeter/Greeter.java | 2 +-
.../greeter/module-info.java | 2 +-
.../com/example/HelloWorld.java | 2 +-
.../hello.world.crossmodule/module-info.java | 2 +-
.../com/example/HelloWorld.java | 2 +-
.../hello.world.singlemodule/module-info.java | 2 +-
.../Fibonacci.java | 2 +-
.../HelloWorld.java | 2 +-
.../Sum.java | 2 +-
.../first/Adder.java | 2 +-
.../second/Main.java | 2 +-
pom.xml | 11 ++---------
339 files changed, 340 insertions(+), 347 deletions(-)
diff --git a/.mvn/license/license-header.txt b/.mvn/license/license-header.txt
index 91aa69e13..18ccb40d7 100644
--- a/.mvn/license/license-header.txt
+++ b/.mvn/license/license-header.txt
@@ -1,4 +1,4 @@
-Copyright (C) ${inceptionYear} - ${currentYear}, the original author or authors.
+Copyright (C) 2022 Ashley Scopes
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/codecov.yml b/codecov.yml
index ee1f3cd04..88572815f 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2022 - 2025, the original author or authors.
+# Copyright (C) 2022 Ashley Scopes
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/java-compiler-testing/pom.xml b/java-compiler-testing/pom.xml
index 29ecda0cb..601200cea 100644
--- a/java-compiler-testing/pom.xml
+++ b/java-compiler-testing/pom.xml
@@ -1,7 +1,7 @@
- 2025
23
11.9.0
@@ -379,9 +378,7 @@
-use
-Xdoclint:all
- © ${project.inceptionYear} - ${current-year}, Ashley Scopes --
- Apache License V2
-
+ Copyright © 2022 Ashley Scopes, licensed under Apache License V2
false
SLASHSTAR_STYLE
SCRIPT_STYLE
-
- ${current-year}
- ${project.inceptionYear}
-
true
From 9c115aa44a580190d60f648324a3660f573c49b2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 22:01:31 +0000
Subject: [PATCH 23/37] Bump org.mockito:mockito-bom from 5.20.0 to 5.21.0
Bumps [org.mockito:mockito-bom](https://github.com/mockito/mockito) from 5.20.0 to 5.21.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.20.0...v5.21.0)
---
updated-dependencies:
- dependency-name: org.mockito:mockito-bom
dependency-version: 5.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 9302f8183..cb30c228d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,7 @@
1.0.0
6.0.0
2.8.2
- 5.20.0
+ 5.21.0
2.0.17
From 9ffbd7c633baa4e7d444bb62f960dc4f23a8b042 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 22:01:36 +0000
Subject: [PATCH 24/37] Bump com.puppycrawl.tools:checkstyle from 12.2.0 to
12.3.1
Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 12.2.0 to 12.3.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-12.2.0...checkstyle-12.3.1)
---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
dependency-version: 12.3.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 9302f8183..c44e67c56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
3.5.4
- 12.2.0
+ 12.3.1
1.5.1
From 28ab92b6b0a7c0ec9065ba1d0b74f09aa14c382d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 22:01:36 +0000
Subject: [PATCH 25/37] Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1326290ba..315cfaad5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Stash reports
- uses: actions/upload-artifact@v5
+ uses: actions/upload-artifact@v6
if: always()
with:
name: reports-${{ matrix.java-version }}-${{ matrix.os-name }}
From 9ac49441e11e2074b5155546ab9d4389615ac24b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 22:01:40 +0000
Subject: [PATCH 26/37] Bump actions/cache from 4 to 5
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1326290ba..6dfb61f9c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -45,7 +45,7 @@ jobs:
java-version: ${{ matrix.java-version }}
- name: Maven cache
- uses: actions/cache@v4
+ uses: actions/cache@v5
env:
cache-name: maven-cache
with:
From 4b9775bde6df25ee09be564b06d03e6ec82b23ee Mon Sep 17 00:00:00 2001
From: Ashley Scopes <73482956+ascopes@users.noreply.github.com>
Date: Mon, 19 Jan 2026 07:59:29 +0000
Subject: [PATCH 27/37] Add CI/CD improvements
---
.github/workflows/build.yml | 64 +++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6fc350d97..957998911 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -13,10 +13,74 @@ on:
workflow_dispatch: {}
jobs:
+ validate:
+ name: Validate
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ ###
+ ### Lint scripts and configuration files.
+ ###
+
+ - name: Validate shell scripts
+ uses: ludeeus/action-shellcheck@master
+ if: ${{ ! cancelled() }}
+ with:
+ check_together: 'yes'
+ scandir: ./scripts
+
+ - name: Validate codecov.yml
+ shell: bash
+ if: ${{ ! cancelled() }}
+ run: curl -si --fail-with-body --data-binary @codecov.yml https://codecov.io/validate
+
+ ###
+ ### Lint GitHub Actions for issues.
+ ###
+
+ - name: Lint GitHub Actions
+ shell: bash
+ if: ${{ ! cancelled() }}
+ run: >-
+ docker run
+ --rm
+ --user "$(id -u "${USER}"):$(id -g "${USER}")"
+ --volume "$(pwd):/repo"
+ --workdir /repo
+ rhysd/actionlint:latest
+ -color
+ -verbose
+
+ ###
+ ### Lint Java, export information about current environment for
+ ### the next jobs to utilise.
+ ###
+
+ - name: Initialize Java
+ uses: actions/setup-java@v5
+ if: always()
+ with:
+ cache: maven
+ distribution: zulu
+ java-version: 25
+
+ - name: Validate license headers and code style
+ shell: bash
+ if: ${{ ! cancelled() }}
+ # Purposely compile here so errorprone can run when we turn it on
+ run: ./mvnw -B validate compile test-compile -DskipTests
+
build:
name: Build on JDK ${{ matrix.java-version }} (${{ matrix.os-name }})
runs-on: ${{ matrix.os-name }}
+ needs:
+ - validate
+
strategy:
fail-fast: false
matrix:
From af65c1debbcfe8c6ccb8e657fe7ecdee66af76fc Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Mon, 19 Jan 2026 08:21:01 +0000
Subject: [PATCH 28/37] Disable shell script validation in build workflow
Comment out shell script validation step in CI.
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.github/workflows/build.yml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 957998911..d0ff072e9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -26,12 +26,12 @@ jobs:
### Lint scripts and configuration files.
###
- - name: Validate shell scripts
- uses: ludeeus/action-shellcheck@master
- if: ${{ ! cancelled() }}
- with:
- check_together: 'yes'
- scandir: ./scripts
+ #- name: Validate shell scripts
+ # uses: ludeeus/action-shellcheck@master
+ # if: ${{ ! cancelled() }}
+ # with:
+ # check_together: 'yes'
+ # scandir: ./scripts
- name: Validate codecov.yml
shell: bash
From 948c1b791588c087268cf58f965e28d9480cb9ad Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Feb 2026 22:42:33 +0000
Subject: [PATCH 29/37] Bump
org.sonatype.central:central-publishing-maven-plugin
Bumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.9.0 to 0.10.0.
- [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits)
---
updated-dependencies:
- dependency-name: org.sonatype.central:central-publishing-maven-plugin
dependency-version: 0.10.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 72a902a7f..c969097b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
2.0.17
- 0.9.0
+ 0.10.0
0.8.14
5.0.0
3.6.0
From 33ff6408cebb9696d6d7393dbab416ac22a44281 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Feb 2026 22:42:39 +0000
Subject: [PATCH 30/37] Bump org.apache.maven.plugins:maven-compiler-plugin
Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.14.1 to 3.15.0.
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.14.1...maven-compiler-plugin-3.15.0)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
dependency-version: 3.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 72a902a7f..712cca6a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,7 +103,7 @@
0.8.14
5.0.0
3.6.0
- 3.14.1
+ 3.15.0
3.1.4
3.5.4
3.2.1
From 6e15de1b06658b6cd6e64a439911a5ebb4163946 Mon Sep 17 00:00:00 2001
From: Ashley Scopes <73482956+ascopes@users.noreply.github.com>
Date: Mon, 2 Feb 2026 06:55:53 +0000
Subject: [PATCH 31/37] Update codecov configuration to upload tests
---
.github/workflows/build.yml | 52 +++++++++++++++++--------------------
codecov.yml | 6 -----
2 files changed, 24 insertions(+), 34 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d0ff072e9..dc47fd939 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -121,39 +121,35 @@ jobs:
shell: bash
run: ./mvnw -B -U clean verify
- - name: Upload to codecov
+ - name: Publish code coverage to Codecov
uses: codecov/codecov-action@v5
+ continue-on-error: true
+ if: ${{ ! cancelled() }}
with:
- name: tests-java-${{ matrix.java-version }}-os-${{ matrix.os-name }}
+ flags: java-${{ matrix.java-version }}-${{ matrix.os-name }}
+ report_type: coverage
token: ${{ secrets.CODECOV_TOKEN }}
- - name: Stash reports
- uses: actions/upload-artifact@v6
- if: always()
+ - name: Publish test results to Codecov
+ uses: codecov/codecov-action@v5
+ if: ${{ ! cancelled() }}
with:
- name: reports-${{ matrix.java-version }}-${{ matrix.os-name }}
- if-no-files-found: error
- path: |
- **/surefire-reports/**
- **/failsafe-reports/**
- **/build*.log
- retention-days: 30
-
- notify-coverage:
- name: Notify of coverage
- runs-on: ubuntu-latest
- timeout-minutes: 30
- needs:
- - build
- steps:
- - name: Checkout code
- uses: actions/checkout@v6
+ flags: java-${{ matrix.java-version }}-${{ matrix.os-name }}
+ report_type: test_results
+ token: ${{ secrets.CODECOV_TOKEN }}
- - name: Publish code coverage
- uses: codecov/codecov-action@v5
- continue-on-error: true
+ - name: Upload build logs as artifacts
+ uses: actions/upload-artifact@v6
if: always()
with:
- token: ${{ secrets.CODECOV_TOKEN }}
- fail_ci_if_error: true
- run_command: send-notifications
+ name: jdk-${{ matrix.java-version }}-${{ matrix.os-name }}
+ path: |-
+ **/build.log
+ **/maven-status/**
+ **/*-reports/**.txt
+ **/*-reports/**.xml
+ **/*.dumpstream
+ compression-level: 9
+ retention-days: 7
+ include-hidden-files: true
+ if-no-files-found: warn
diff --git a/codecov.yml b/codecov.yml
index 88572815f..d8ad2a411 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -20,12 +20,6 @@ coverage:
precision: 2
codecov:
- notify:
- # Notify via a separate pipeline step in CI once all builds have completed. This way, we don't
- # report coverage after each parallel build completes, which results in spammy and incorrect
- # email notifications and prematurely marking the build as having failed.
- # https://github.com/codecov/codecov-action/issues/1436#issuecomment-2614065472
- manual_trigger: true
require_ci_to_pass: true
strict_yaml_branch: main
From 5ba9a58e1fab18b1d10015968cdf0f33203773d0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Mar 2026 22:42:18 +0000
Subject: [PATCH 32/37] Bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index dc47fd939..28202f61d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -139,7 +139,7 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload build logs as artifacts
- uses: actions/upload-artifact@v6
+ uses: actions/upload-artifact@v7
if: always()
with:
name: jdk-${{ matrix.java-version }}-${{ matrix.os-name }}
From 92ea3efbd56dbaaba9728c184de044e9aee1645d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Mar 2026 22:42:20 +0000
Subject: [PATCH 33/37] Bump org.mockito:mockito-bom from 5.21.0 to 5.22.0
Bumps [org.mockito:mockito-bom](https://github.com/mockito/mockito) from 5.21.0 to 5.22.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.21.0...v5.22.0)
---
updated-dependencies:
- dependency-name: org.mockito:mockito-bom
dependency-version: 5.22.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 19bae72c7..4b2c3ac56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,7 @@
1.0.0
6.0.0
2.8.2
- 5.21.0
+ 5.22.0
2.0.17
From 6aa6ea3b46bdd5252bcc769367031b6c673bcea6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Mar 2026 22:42:36 +0000
Subject: [PATCH 34/37] Bump org.apache.maven.plugins:maven-surefire-plugin
from 3.5.4 to 3.5.5
Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.4...surefire-3.5.5)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
dependency-version: 3.5.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 19bae72c7..10f6cdf8d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,7 +114,7 @@
3.0.0-M7
3.4.0
3.4.0
- 3.5.4
+ 3.5.5
12.3.1
From 270de32b80dcf42235bc241d48ec55dfeaccf67c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 1 Mar 2026 22:42:39 +0000
Subject: [PATCH 35/37] Bump org.apache.maven.plugins:maven-failsafe-plugin
from 3.5.4 to 3.5.5
Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.4...surefire-3.5.5)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
dependency-version: 3.5.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 19bae72c7..d3942c265 100644
--- a/pom.xml
+++ b/pom.xml
@@ -105,7 +105,7 @@
3.6.0
3.15.0
3.1.4
- 3.5.4
+ 3.5.5
3.2.1
3.1.4
3.5.0
From b9bcd54c3f4f99793fa4136fbd9b13796081f6ee Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Mon, 9 Mar 2026 06:40:03 +0000
Subject: [PATCH 36/37] Update Maven wrapper to version 3.9.13
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.mvn/wrapper/maven-wrapper.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 8dea6c227..71ea75a77 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,3 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.13/apache-maven-3.9.13-bin.zip
From 848afa1d482917f546255e0dbb49817e2b7cc8f3 Mon Sep 17 00:00:00 2001
From: Ash <73482956+ascopes@users.noreply.github.com>
Date: Tue, 17 Mar 2026 07:53:44 +0000
Subject: [PATCH 37/37] Update Maven wrapper to version 3.9.14
Signed-off-by: Ash <73482956+ascopes@users.noreply.github.com>
---
.mvn/wrapper/maven-wrapper.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 71ea75a77..c595b0093 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,3 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.13/apache-maven-3.9.13-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.14/apache-maven-3.9.14-bin.zip