From fba019a22f6b22cc658f41ea5ec8073f04d2e3d5 Mon Sep 17 00:00:00 2001 From: Ashley Scopes <73482956+ascopes@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:30:53 +0100 Subject: [PATCH 01/37] GH-846: Major version bump for Junit6 integration --- java-compiler-testing/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java-compiler-testing/pom.xml b/java-compiler-testing/pom.xml index b22d73f16..ac97ddd1a 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 - 5.0.5-SNAPSHOT + 6.0.0-SNAPSHOT ../pom.xml diff --git a/pom.xml b/pom.xml index 3030359cc..f0b6039c0 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ io.github.ascopes.jct java-compiler-testing-parent - 5.0.5-SNAPSHOT + 6.0.0-SNAPSHOT pom Java Compiler Testing parent project From 6f76b016190187a655b6944adde7dce6a07774a2 Mon Sep 17 00:00:00 2001 From: Ashley Scopes <73482956+ascopes@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:32:24 +0100 Subject: [PATCH 02/37] GH-846: Update security policy --- SECURITY.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 9c1ddf7ff..a45b6faa5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,9 +7,9 @@ significant impact. However, should an issue be identified, I will strive to fix these issues as soon as possible. Fixes will be released as a new version, built from the most -recent `main` branch for Java 17, and from the `v4` branch for -Java 11 backwards compatibility. Unless expressly requested, -no attempt to backport changes will be made. +recent `main` branch for Java 17. Support will not automatically +be provided for v5 or v4 versions of the library, but can be +requested if necessary via an issue. Given this library is designed for use in test packs, the main design assumption is that the software is being used by a From 79a0590e9b108e52b4d2e4e805fe066d3c3f139d Mon Sep 17 00:00:00 2001 From: Ashley Scopes <73482956+ascopes@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:38:06 +0100 Subject: [PATCH 03/37] GH-846: Use junit6 instead of junit5 --- .../jct/assertions/AbstractContainerGroupAssertTest.java | 2 +- .../io/github/ascopes/jct/utils/SpecialLocationsUtilsTest.java | 1 - pom.xml | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/assertions/AbstractContainerGroupAssertTest.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/assertions/AbstractContainerGroupAssertTest.java index 01a6c9fc8..9c37985ac 100644 --- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/assertions/AbstractContainerGroupAssertTest.java +++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/assertions/AbstractContainerGroupAssertTest.java @@ -25,7 +25,6 @@ import static org.mockito.Mockito.when; import io.github.ascopes.jct.containers.ContainerGroup; -import java.util.List; import java.util.ServiceLoader; import java.util.stream.Stream; import org.assertj.core.api.AbstractListAssert; @@ -164,6 +163,7 @@ public T get() { } @Override + @SuppressWarnings("unchecked") public Class type() { return (Class) service.getClass(); } 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 cf00c655a..e7521284d 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 @@ -76,7 +76,6 @@ public Class getTypeBeingTested() { } @DisplayName("javaRuntimeLocations() returns the JRT location") - @EnabledForJreRange(min = JRE.JAVA_9, disabledReason = "unavailable without JPMS") @Test void javaRuntimeLocationsReturnsTheJrtLocation() { // When diff --git a/pom.xml b/pom.xml index f0b6039c0..32e13faf1 100644 --- a/pom.xml +++ b/pom.xml @@ -93,7 +93,7 @@ 4.3.0 1.4.0 1.0.0 - 5.13.4 + 6.0.0 2.8.1 5.20.0 2.0.17 @@ -379,7 +379,6 @@ © ${project.inceptionYear} - ${current-year}, Ashley Scopes -- Apache License V2 - 0.0.1 false
Date: Sat, 4 Oct 2025 14:15:40 +0100 Subject: [PATCH 04/37] Use strict compiler linting settings --- .../serviceloaderjpms/ServiceProcessor.java | 4 ++ .../src/main/java/module-info.java | 2 +- .../jct/assertions/AbstractEnumAssert.java | 1 + .../ascopes/jct/assertions/JctAssertions.java | 3 +- .../ascopes/jct/compilers/JctCompilers.java | 3 +- .../TracingDiagnosticListener.java | 15 +------- .../jct/filemanagers/JctFileManager.java | 6 +-- .../jct/filemanagers/JctFileManagers.java | 3 +- .../impl/JctFileManagerFactoryImpl.java | 18 ++------- .../impl/LoggingFileManagerProxy.java | 2 +- .../jct/junit/AbstractCompilersProvider.java | 2 +- .../jct/junit/JavacCompilersProvider.java | 10 +---- .../github/ascopes/jct/utils/FileUtils.java | 2 +- .../ascopes/jct/utils/IoExceptionUtils.java | 2 +- .../ascopes/jct/utils/IterableUtils.java | 8 ++-- .../ascopes/jct/utils/LoomPolyfill.java | 2 +- .../ascopes/jct/utils/ModuleDiscoverer.java | 2 +- .../jct/utils/SpecialLocationUtils.java | 2 +- .../github/ascopes/jct/utils/StringUtils.java | 2 +- .../ascopes/jct/utils/UtilityClass.java | 31 ---------------- .../jct/utils/VisibleForTestingOnly.java | 37 ------------------- .../ascopes/jct/workspaces/Workspace.java | 1 - .../ascopes/jct/workspaces/Workspaces.java | 3 +- .../jct/workspaces/impl/WorkspaceDumper.java | 1 - .../src/main/java/module-info.java | 18 ++++----- .../compilers/AbstractJctCompilerTest.java | 19 +++++----- .../impl/JctCompilationFactoryImplTest.java | 5 ++- .../impl/JctCompilationImplTest.java | 2 + .../jct/diagnostics/TeeWriterTest.java | 6 +-- .../impl/JctFileManagerFactoryImplTest.java | 4 +- .../jct/fixtures/ExtraArgumentMatchers.java | 1 + .../github/ascopes/jct/fixtures/Fixtures.java | 12 ++++++ .../ascopes/jct/fixtures/Slf4jLoggerFake.java | 26 +------------ .../fixtures/UtilityClassTestTemplate.java | 18 --------- .../junit/AbstractCompilersProviderTest.java | 1 + .../jct/junit/JavacCompilersProviderTest.java | 1 + .../ascopes/jct/utils/FileUtilsTest.java | 1 + .../jct/utils/SpecialLocationsUtilsTest.java | 7 ++-- pom.xml | 3 ++ 39 files changed, 83 insertions(+), 203 deletions(-) delete mode 100644 java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/UtilityClass.java delete mode 100644 java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/VisibleForTestingOnly.java diff --git a/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/io/github/ascopes/jct/acceptancetests/serviceloaderjpms/ServiceProcessor.java b/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/io/github/ascopes/jct/acceptancetests/serviceloaderjpms/ServiceProcessor.java index 0f4984151..33b6f36ab 100644 --- a/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/io/github/ascopes/jct/acceptancetests/serviceloaderjpms/ServiceProcessor.java +++ b/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/io/github/ascopes/jct/acceptancetests/serviceloaderjpms/ServiceProcessor.java @@ -41,6 +41,10 @@ */ public class ServiceProcessor extends AbstractProcessor { + public ServiceProcessor() { + // Hope you are happy, javac. I made a constructor for you. + } + @Override public Set getSupportedAnnotationTypes() { return Set.of(Service.class.getName()); diff --git a/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/module-info.java b/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/module-info.java index 0ad21c93a..6d63ecfef 100644 --- a/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/module-info.java +++ b/java-compiler-testing/src/it/serviceloader-jpms/src/main/java/module-info.java @@ -17,7 +17,7 @@ import javax.annotation.processing.Processor; module io.github.ascopes.jct.acceptancetests.serviceloaderjpms { - requires java.compiler; + requires transitive java.compiler; exports io.github.ascopes.jct.acceptancetests.serviceloaderjpms; provides Processor with ServiceProcessor; } diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/AbstractEnumAssert.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/AbstractEnumAssert.java index afab5b256..24b507d00 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/AbstractEnumAssert.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/assertions/AbstractEnumAssert.java @@ -103,6 +103,7 @@ public final A isAnyOfElements(Collection 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 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 @@ - © ${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