Skip to content

Releases: sbabcoc/JUnit-Foundation

Upgrade to latest Java-Utils; eliminate Guava usage

01 Jun 06:43
Compare
Choose a tag to compare

In this release, I upgraded to the latest release of Java-Utils, which allowed me to eliminate usage of Guava APIs. These really weren't doing very much for me, and including this library could cause mixed-version issues for client projects.

NOTE: This is a breaking change because I switched from using the Guava Optional class to the standard Java Optional class, and from using the Guava Function class to the standard Java Function class.

Add AgentBuilder listener to report transformation errors

29 Mar 05:35
Compare
Choose a tag to compare

In this release, I added an AgentBuilder listener to report errors that occur during transformations. This change was prompted by issues I'm having with Gradle in the Selenium Fountation project. After I added this listener, I discovered that I had existing transformation issues that had previously gone undetected. These have been resolved.

  • I upgraded Byte Buddy to version 1.14.12.
  • I also fixed a few minor issues in README.

Upgrade Java-Utils and Settings to latest releases

09 Aug 18:06
Compare
Choose a tag to compare

This release upgrade Java-Utils and Settings to the latest release - 3.1.1 and 3.0.2 respectively.

Update settings library

10 Jul 20:00
Compare
Choose a tag to compare

In this release, I updated to the latest settings library (3.0.1), which resolves an identified vulnerability.

Build for Java 8; upgrade dependencies and plugins

12 Jun 01:30
Compare
Choose a tag to compare

In this release, I finally dropped support for Java 7. By building this library for Java 8, I'm able to upgrade dependencies to newer versions that resolve identified vulnerabilities.

Upgrade dependencies

16 May 05:03
Compare
Choose a tag to compare

Upgrade to the latest releases of Java-Utils (2.2.0), Settings (2.3.11), and Logback (1.2.9).

For map keys, use Method.toString() instead of Method.hashCode()

05 May 20:34
Compare
Choose a tag to compare

It turns out that the hashCode() implementation of the java.lang.reflect.Method class is really weak. It only incorporates the declaring class and the method name, omitting other features of Method objects that make them unique. The implementation uses a non-standard process and isn't a match for the equals() method of this class. Because the hashcode is so weak, it shouldn't be used as a Map key, but there were several places in JUnit Foundation where it was used for just this purpose.

In this release, I replaced uses of java.lang.reflect.Method#hashCode() (both explicit and implicit) with the toString() method.

Replace more reflection with byte code transformations

27 Mar 22:50
Compare
Choose a tag to compare

In this release, I've replaced more instances of reflection-based field access with equivalent methods added via byte code transformations. I'm approaching a point where the remaining instances are either targeting transient unnamed objects or couldn't be replaced because of type load order.
This work included relocating and optimizing the implementation of the ParameterizedDescription fix for the JUnitParams runner. With a lot less code and simpler implementation, this new strategy produces the same result much more efficiently.

Replace reflective operations with Byte Buddy transformations

26 Mar 23:09
Compare
Choose a tag to compare

In this release, I eliminated reflective access to private fields that were throwing access violation warnings. These were definite compatibility problems for newer JVM releases.
In addition to making JUnit Foundation compatible with Java 17+, this release also fixes some fundamental errors with the annotation proxies produced for timeout management and automatic retry related to final fields and annotation type reporting.
Finally, I extracted the class transformation code from LifecycleHooks into a new JUnitAgent class, eliminating the type restrictions the presence of this code imposed on this core interface. In a future release, I may use this new factoring to improve the type safety of this core utility class.

Add exception to retry notifications; fix assertions

17 Mar 06:46
Compare
Choose a tag to compare

In this release, I updated the retry notification message to add the stack trace of the exception that caused the test to fail. The addition of this exception information is requested via the RETRY_MORE_INFO setting or by setting the logging level to DEBUG.