Releases: ascopes/java-compiler-testing
v0.6.4
v0.6.3
What's Changed
- Updating maven for version 3.9.1 by @FilipeRamos92 in #427
- Bump junit-bom from 5.9.2 to 5.9.3 by @dependabot in #443
- Task/package container group assert tests by @ascopes in #444
- Build on released JDK 20 by @ascopes in #445
- Enable JDK 21 builds by @ascopes in #310
- Improvements to assertion error messages
New Contributors
- @FilipeRamos92 made their first contribution in #427
Full Changelog: v0.6.2...v0.6.3
v0.6.2
v0.6.1
Some minor QA fixes.
- Fixes to error messages in assertions
- Fixes and improvements to logging output
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
New features
API changes and improvements
- OutputContainerGroups can now only hold a single package, since JSR-199 does not provide a clear API to handle more than one package in an output group. This does not affect modules. (@ascopes, see 27eaf51)
- Improved internal error messages that get thrown to the user if various invalid file-system states occur (@ascopes, see 851d9a4)
- Fuzzy string handling in assertions for files and modules has been reworked, fixing several issues where FileSystemException and similar exception types could be raised when JARs and archives were on a location with non-archive directory paths. The error output has also been totally rewritten to be clearer and simpler. (@ascopes, see 859a660)
- Fixes to documentation, adding missing detail and fixing mistakes in multiple places.
Deprecated features
For a full list of deprecated features, view the deprecation page in the JavaDocs here.
- All features relating to the platform/bootstrap classpath have been deprecated and will be removed in v1.0.0. This has been done since the platform class path has been mostly replaced by the JPMS mechanisms from Java 9 onwards, and using this parameter is buggy and can lead to confusing behaviour. If you need to use this feature still, check the documentation for alternatives. No actual functionality is being restricted by this change, only API shortcuts. (@ascopes, see 68fadf2)
- Features relating to lesser-used locations have been deprecated and will be removed in v1.0.0, instead, you should access the locations as documented (e.g.
addModule(StandardLocation.PATCH_MODULE_PATH)
rather thanaddPatchModulePathModule
). This has been done to reduce the noise in the API and keep things simple for the majority of use cases. No actual functionality is being restricted by this change, only API shortcuts. This affects:SYSTEM_MODULES
,PATCH_MODULE_PATH
,UPGRADE_MODULE_PATH
,NATIVE_HEADER_OUTPUTS
. (@ascopes, see 4e37df1 and a5369d0). - RamFileSystemProvider has been deprecated and will be removed in v1.0.0. No mechanism exists to replace this functionality. This has been removed as it is not needed for the vast majority of usecases, and only exists to further confuse usage. If you do somehow need to use this mechanism, please open an issue so I can discuss it and understand the reasoning behind it more clearly. (@ascopes, see 5b5a3df)
Internal changes
- New internal API for listing internal path roots for archives such as JARs - (@ascopes, see 2e47542)
- Testing against newer releases of Spring, Avaje, Micronaut, groovy.
- Internal test pack fixes for https://youtrack.jetbrains.com/issue/IDEA-317391.
- Internal test pack fixes for some issues regarding concurrency in JUnit-related tests.
Full Changelog: v0.5.0...v0.6.0
Future changes
v1.0.0
A branch and draft PR has been opened to hold changes that will be made for v1.0.0. You can review this at #395
Eclipse Compiler for Java
I have began to work on re-integrating ECJ support into JCT. Right now I am firefighting with several major bugs that I was previously aware of that reside within the ECJ codebase. A preview of potential changes can be reviewed at #422.
Java 21 support
I am still waiting on Mockito to provide Java 21 support via the version of ByteBuddy that is bundled. JaCoCo has pushed a new version recently (v0.8.9) that supports Java 20 and Java 21 bytecode, which is also a prerequisite. As a result of this, the code in this release also now runs JaCoCo across Java 20 builds correctly.
Class file and stacktrace assertions
I am still waiting on some PRs for stacktrace assertions and reflective assertions across classes and classloaders to be merged in AssertJ-Core. Once these become available, then I will upgrade JCT and bundle them in a new release.
JIMFS guava-related security warnings.
The CVEs reported in Google Guava that are pulled in via JIMFS do not actively impact JCT in any way (JCT does not use Guava directly, and tempfile handling in JIMFS will remain limited to the permissions of the active user anyway). I am still waiting on Google's team to push a new release for JIMFS, which should include an update to Google Guava, as well as improvements to support JPMS properly.
v0.5.0
v0.4.0
What's Changed
- Junit
@Managed
annotation and JctExtension class for automating initialisation and
destruction of Workspace objects. - Add additional methods for creating JAR files from PathRoot objects that are directories.
FileBuilder#asJarFrom
now takes aPathRoot
rather than the more specialisedManagedDirectory
- Fix missing nullable annotations dotted around.
Merged PRs
- Bump micronaut-bom from 3.8.6 to 3.8.7 by @dependabot in #376
- Bump actions/deploy-pages from 1.2.4 to 1.2.5 by @dependabot in #375
- Bump mockito-bom from 5.1.1 to 5.2.0 by @dependabot in #378
- Bump checkstyle from 10.8.0 to 10.8.1 by @dependabot in #379
- Update report file detection in build.yml by @ascopes in #381
- Update avaje-json to 1.4-RC by @ascopes in #382
- Bump groovy from 4.0.9 to 4.0.10 by @dependabot in #383
- Bump actions/checkout from 3.3.0 to 3.4.0 by @dependabot in #384
- Bump avaje-jsonb.version from 1.4-RC1 to 1.4-RC6 by @dependabot in #385
- Bump actions/deploy-pages from 1.2.5 to 2.0.0 by @dependabot in #386
- Bump EnricoMi/publish-unit-test-result-action from 2.4.2 to 2.5.0 by @dependabot in #387
- Bump checkstyle from 10.8.1 to 10.9.1 by @dependabot in #388
- Bump maven-surefire-plugin from 3.0.0-M9 to 3.0.0 by @dependabot in #389
- Bump maven-failsafe-plugin from 3.0.0-M9 to 3.0.0 by @dependabot in #390
- Bump slf4j.version from 2.0.6 to 2.0.7 by @dependabot in #391
- Implement JctExtension JUnit extension. by @ascopes in #392
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Use Maven 3.9.0 by @ascopes in #357
- Bump EnricoMi/publish-unit-test-result-action from 2.4.1 to 2.4.2 by @dependabot in #359
- Bump checkerframework.version from 3.31.0 to 3.32.0 by @dependabot in #363
- Bump checkstyle from 10.7.0 to 10.8.0 by @dependabot in #365
- Bump avaje-inject.version from 8.12 to 8.13 by @dependabot in #364
- Bump spring-boot-dependencies from 3.0.2 to 3.0.4 by @dependabot in #362
- Bump maven-compiler-plugin from 3.10.1 to 3.11.0 by @dependabot in #366
- Bump micronaut-bom from 3.8.5 to 3.8.6 by @dependabot in #367
- GH-370: Implement ability to create JARs from existing workspaces by @ascopes in #371
- GH-369: Enforce exact Maven version is used for builds by @ascopes in #372
- GH-371: Fix license plugin warnings by @ascopes in #374
Full Changelog: v0.2.1...v0.3.0
v0.2.1
Bugfixes/API changes
This patch includes some new API changes that are non-breaking that were needed to
patch various bits and pieces internally.
- GH-354, GH-294, GH-356 related API changes:
- Add new method: PathFileObject#getBinaryName
- JctCompilationFactoryImpl will now error if no initial compilation units
were found with a clearer error message. - JctCompilationFactoryImpl will now error if any of the explicitly provided
class names are not found as compilation units. - JctCompilationFactoryImpl will now error if the list of provided class
names is non-null but empty. - Allow call chaining on PackageContainerGroupAssert#allFilesExist.
- Add a new method TeeWriter#getContent that gets the lines of content
within a TeeWriter, as this is easier to stub than #toString due to
how Mockito works internally. - Add a new method TeeWriter#wrapOutputStream that wraps a given
OutputStream and Charset in an OutputStreamWriter and inserts that
into a new TeeWriter that is returned. - Fix regression in JctCompilationFactoryImpl where the locale was not
being set during compilations. - Fix bug in JctCompilationFactory where the TeeWriter was not being flushed,
so buffered content may not have been written to System.out properly
in some edge cases. - Improve performance of JctCompilationFactoryImpl for explicit class name
lookup by avoiding creating a distinct collection that is iteratively
resized with O(n) space complexity. - Fixes GH-354: Fix incorrect logic for filtering explicit class names that previously
resulted in an exception being raised if annotation processing was not configured in
a very specific way.
Other changes
- Bump maven-surefire-plugin from 3.0.0-M8 to 3.0.0-M9 by @dependabot in #353
- Bump micronaut-bom from 3.8.4 to 3.8.5 by @dependabot in #352
- Bump checkerframework.version from 3.30.0 to 3.31.0 by @dependabot in #347
- Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 by @dependabot in #348
- Bump avaje-jsonb.version from 1.1 to 1.2 by @dependabot in #350
- Bump maven-failsafe-plugin from 3.0.0-M8 to 3.0.0-M9 by @dependabot in #349
- Bump avaje-inject.version from 8.11 to 8.12 by @dependabot in #351
- Bump error_prone_core from 2.17.0 to 2.18.0 by @dependabot in #242
Full Changelog: v0.2.0...v0.2.1
v0.2.0
What's Changed
- Remove GenericMock class by @ascopes in #341
- Add a GitHub ribbon to JavaDocs by @ascopes in #342
- Remove unused plugins by @ascopes in #344
- Rename JctCompilers.createPlatformCompiler to newPlatformCompiler by @ascopes in #345
- Enable automatically staging and promoting Nexus artifacts in CI without intervention by @ascopes in #346
Full Changelog: v0.1.0...v0.2.0