<commit_before>[[release-notes-5.4.0-M1]]
== 5.4.0-M1

*Date of Release:* ❓

*Scope:* ❓

For a complete list of all _closed_ issues and pull requests for this release, consult
the link:{junit5-repo}+/milestone/29?closed=1+[5.4.0-M1] milestone page in the JUnit
repository on GitHub.


[[release-notes-5.4.0-M1-junit-platform]]
=== JUnit Platform

==== Bug Fixes

* ❓

==== Deprecations and Breaking Changes

* The JUnit Platform Surefire Provider (`junit-platform-surefire-provider`) has been
  discontinued and is no longer released as part of JUnit 5. Please use Maven Surefire’s
  native support for running tests on the JUnit Platform instead (requires Maven Surefire
  2.22.0 or higher).

==== New Features and Improvements

* New `ModifierSupport` class providing an API for extension and test engine authors to
  inspect modifiers of classes and members.
  - See the <<../user-guide/index.adoc#extensions-supported-utilities-modifier, User
    Guide>> for details.


[[release-notes-5.4.0-M1-junit-jupiter]]
=== JUnit Jupiter

==== Bug Fixes

* `Assertions.assertAll()` is now thread-safe -- for example, it can now be used with a
  _parallel_ `Stream`.
* The `OS.SOLARIS` enum constant used with `@EnabledOnOs` and `@DisabledOnOs` is now also
  detected as the current operating system if the `os.name` JVM system property contains
  `"SunOs"`.
* `Assertions.assertEquals()` variants that compare floating point numbers using a delta
  now support a _delta_ of zero.
* `Assertions.assertLinesMatch()` no longer throws a `NullPointerException` after
  evaluating a fast-forward match if there are more expected lines after the fast-forward
  match than remain in the actual results. This bug only manifested itself if the
  expected list size was equal to or greater than the actual list size.
* Threads created for running tests in parallel now use the same thread context
  class loader (_TCCL_) that was set when creating the underlying executor service.
  This resolves `ClassNotFoundException` issues that only occur in parallel execution
  mode and a custom thread context class loader is in place.

==== Deprecations and Breaking Changes

* ❓

==== New Features and Improvements

* New `Assertions.assertEquals()` variants that accept mixed boxed and unboxed primitive
  values, allowing statements such as `assertEquals(42, Integer.valueOf("42"))` to
  compile.
* New `Assertions.assertNotEquals()` variants that accept the following primitive data
  types: `char`, `byte`, `short`, `int`, `long`, `float`, and `double`. Mixed boxed and
  unboxed primitive values are also supported.
* JUnit 4's `AssumptionViolatedException` is now supported in JUnit Jupiter for aborting
  a test mid-flight due to a failed assumption -- for example, via JUnit 4's
  `org.junit.Assume` utility class.
* In addition to returning streams, `@TestFactory`-annotated methods may now return a
  single `DynamicNode` -- for example, a `DynamicTest` or a `DynamicContainer`.
* Implicit conversion from hexadecimal and octal string representations to integral types
  in `@ParameterizedTest` arguments -- for example, conversion from `"0xff"` to `255`.
* New `DisplayNameGenerator` interface and `@DisplayNameGeneration` annotation that allow
  declarative configuration of a pre-defined or custom display name generator.
* JUnit 4's `@Ignore` annotation is now supported for disabling test classes and test<commit_msg>Polish Release Notes<commit_after>[[release-notes-5.4.0-M1]]
== 5.4.0-M1

*Date of Release:* ❓

*Scope:* ❓

For a complete list of all _closed_ issues and pull requests for this release, consult
the link:{junit5-repo}+/milestone/29?closed=1+[5.4.0-M1] milestone page in the JUnit
repository on GitHub.


[[release-notes-5.4.0-M1-junit-platform]]
=== JUnit Platform

==== Bug Fixes

* ❓

==== Deprecations and Breaking Changes

* The JUnit Platform Surefire Provider (`junit-platform-surefire-provider`) has been
  discontinued and is no longer released as part of JUnit 5. Please use Maven Surefire’s
  native support for running tests on the JUnit Platform instead (requires Maven Surefire
  2.22.0 or higher).

==== New Features and Improvements

* New `ModifierSupport` class providing an API for extension and test engine authors to
  inspect modifiers of classes and members.
  - See the <<../user-guide/index.adoc#extensions-supported-utilities-modifier, User
    Guide>> for details.


[[release-notes-5.4.0-M1-junit-jupiter]]
=== JUnit Jupiter

==== Bug Fixes

* `Assertions.assertAll()` is now thread-safe -- for example, it can now be used with a
  _parallel_ `Stream`.
* The `OS.SOLARIS` enum constant used with `@EnabledOnOs` and `@DisabledOnOs` is now also
  detected as the current operating system if the `os.name` JVM system property contains
  `"SunOs"`.
* `Assertions.assertEquals()` variants that compare floating point numbers using a delta
  now support a _delta_ of zero.
* `Assertions.assertLinesMatch()` no longer throws a `NullPointerException` after
  evaluating a fast-forward match if there are more expected lines after the fast-forward
  match than remain in the actual results. This bug only manifested itself if the
  expected list size was equal to or greater than the actual list size.
* Threads created for running tests in parallel now use the same thread context class
  loader (_TCCL_) that was set when creating the underlying executor service. This
  resolves `ClassNotFoundException` issues that only occur in parallel execution mode
  when a custom _TCCL_ is in place.

==== Deprecations and Breaking Changes

* ❓

==== New Features and Improvements

* New `Assertions.assertEquals()` variants that accept mixed boxed and unboxed primitive
  values, allowing statements such as `assertEquals(42, Integer.valueOf("42"))` to
  compile.
* New `Assertions.assertNotEquals()` variants that accept the following primitive data
  types: `char`, `byte`, `short`, `int`, `long`, `float`, and `double`. Mixed boxed and
  unboxed primitive values are also supported.
* JUnit 4's `AssumptionViolatedException` is now supported in JUnit Jupiter for aborting
  a test mid-flight due to a failed assumption -- for example, via JUnit 4's
  `org.junit.Assume` utility class.
* In addition to returning streams, `@TestFactory`-annotated methods may now return a
  single `DynamicNode` -- for example, a `DynamicTest` or a `DynamicContainer`.
* Implicit conversion from hexadecimal and octal string representations to integral types
  in `@ParameterizedTest` arguments -- for example, conversion from `"0xff"` to `255`.
* New `DisplayNameGenerator` interface and `@DisplayNameGeneration` annotation that allow
  declarative configuration of a pre-defined or custom display name generator.
* JUnit 4's `@Ignore` annotation is now supported for disabling test classes and test
{'fraction_non_alphanumeric': 0.08667548112237403, 'fraction_numerical': 0.011752607609813427, 'mean_word_length': 4.607907742998353, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2017271', 'n_tokens_mistral': 1942, 'n_tokens_neox': 1850, 'n_words': 840}