assertj / assertj/assertj

OOM during StringBuilder in AssertionErrorMessagesAggregrator#aggregrateErrorMessages

Open
#1,908 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.8k
Forks
788
Avg merge
14h 57m
Merged PRs (30d)
36

Description

#### Summary
Building the string for an assertAll can lead to an OOM, it would be better to return a truncated message if the error count is larger than some configurable number - or at least add a defensive check and/or catch OOM to produce a more useful outcome than

```
Java heap space
java.lang.OutOfMemoryError:
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at org.assertj.core.error.AssertionErrorMessagesAggregrator.aggregrateErrorMessages(AssertionErrorMessagesAggregrator.java:25)
at org.assertj.core.api.SoftAssertionError.(SoftAssertionError.java:36)
at org.assertj.core.error.AssertionErrorCreator.multipleSoftAssertionsError(AssertionErrorCreator.java:75)
at org.assertj.core.api.SoftAssertions.assertAll(SoftAssertions.java:166)
at com.redacted.testThing(Redacted.java:129)
```

This should be easy to repro.

Thanks for considering - I can submit a PR if that would help here.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.