Fix Persistent Connections (Issue 7230)
Bug Report: https://freenet.mantishub.io/view.php?id=7230
This branch fixes the problem outlined in the bug report mentioned above, but it also does so much more. 😁 There are four types of commits:
🧑💻 – lays groundwork for upcoming tests. This comprises a parser for HTTP responses and Hamcrest matchers for said parsed responses, allowing more expressive tests.
⬆️ – updates dependencies. This updates to the last version of Mockito that we can use (due to its inability to mock anything involving WeakReference starting in version 3), allowing mocks of final classes and classes with final methods; required for mocking Toadlet.findSupportedMethods()!
🐛 – fixes problems I found in the ToadletContextImpl. One of them is the one from the bug report, the other ones are small issues that I found during tests.
✅ – adds additional tests.
The final barrage of tests achieves almost full coverage of the outer-most try block in ToadletContextImpl.handle().
@bertm did you get to have a look at the test tooling by now?
The tests look good to me.
… but the tests fail for me …
$ ./gradlew clean test
> Task :clean
> Task :compileJava
Warnung: [options] Quellwert 8 ist veraltet und wird in einem zukünftigen Release entfernt
Warnung: [options] Zielwert 8 ist veraltet und wird in einem zukünftigen Release entfernt
Warnung: [options] Verwenden Sie -Xlint:-options, um Warnungen zu veralteten Optionen zu unterdrücken.
src/freenet/support/io/TempBucketFactory.java:487: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
protected void finalize() throws Throwable {
^
src/freenet/support/io/TempBucketFactory.java:497: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
super.finalize();
^
src/freenet/support/io/TempBucketFactory.java:904: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
protected void finalize() throws Throwable {
^
src/freenet/support/io/TempBucketFactory.java:915: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
super.finalize();
^
src/freenet/pluginmanager/PluginTalker.java:91: Warnung: [removal] ThreadDeath in java.lang ist veraltet und wurde zum Entfernen markiert
} catch (ThreadDeath td) {
^
src/freenet/io/comm/UdpSocketHandler.java:185: Warnung: [removal] runFinalization() in System ist veraltet und wurde zum Entfernen markiert
System.runFinalization();
^
src/freenet/io/comm/UdpSocketHandler.java:187: Warnung: [removal] runFinalization() in System ist veraltet und wurde zum Entfernen markiert
System.runFinalization();
^
src/freenet/support/BloomFilter.java:233: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
protected void finalize() throws Throwable {
^
src/freenet/support/BloomFilter.java:235: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
super.finalize();
^
src/freenet/support/io/MultiReaderBucket.java:186: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
protected void finalize() throws Throwable {
^
src/freenet/support/io/MultiReaderBucket.java:188: Warnung: [removal] finalize() in Object ist veraltet und wurde zum Entfernen markiert
super.finalize();
^
Hinweis: Einige Eingabedateien verwenden oder überschreiben eine veraltete API.
Hinweis: Wiederholen Sie die Kompilierung mit -Xlint:deprecation, um Details zu erhalten.
14 Warnungen
> Task :copyResourcesToClasses2
> Task :processResources NO-SOURCE
> Task :classes
> Task :copyTestResourcesToClasses2
> Task :compileTestJava
Warnung: [options] Quellwert 8 ist veraltet und wird in einem zukünftigen Release entfernt
Warnung: [options] Zielwert 8 ist veraltet und wird in einem zukünftigen Release entfernt
Warnung: [options] Verwenden Sie -Xlint:-options, um Warnungen zu veralteten Optionen zu unterdrücken.
Hinweis: Einige Eingabedateien verwenden oder überschreiben eine veraltete API.
Hinweis: Wiederholen Sie die Kompilierung mit -Xlint:deprecation, um Details zu erhalten.
3 Warnungen
> Task :processTestResources NO-SOURCE
> Task :testClasses
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
> Task :test
FCPMessageTest > wrappedMessageDelegatesName FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > wrappedMessageDelegatesSend FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > wrappedMessageDelegatesRun FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > wrappingNullReturnsNull FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > messageIsNotWrappedIfListRequestIdentifierIsNull FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > wrappingMessageAddsIdentifier FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
FCPMessageTest > wrappedMessageDelegatesEndString FAILED
org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: org.mockito.exceptions.base.MockitoException at FCPMessageTest.java:31
Caused by: java.lang.IllegalStateException at FCPMessageTest.java:31
Caused by: java.lang.IllegalArgumentException at FCPMessageTest.java:31
ToadletContextImplTest > pipeliningAPutAndAGetRequestResultsInTwoSuccessfulRequests FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingInvalidHttpRequestLineResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > permanentRedirectExceptionWhenLocatingToadletWillResultInRedirect FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > putRequestToToadletThatDoesNotSupportPutResultsInHttpStatus405 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > requestWithFullAccessForwardsRequestToPageMakerForParsingAdvancedModeSwitches FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > emptyLinesBeforeTheFirstLineAreIgnored FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > requestingNoOutputPageWillReturnStatus204 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > putRequestWithoutExtendedMethodHandlingResultsInHttpStatus403 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingRequestAfterPostRequestWithInvalidContentLengthHeaderResultsInASingleResponseBeingSent FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingPostRequestWithInvalidContentLengthHeaderClosesConnection FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > emptyRequestWillCloseTheSocket FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingPostRequestWithoutContentLengthHeaderResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingInvalidHttpVersionResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > putRequestWithContentResultsInHttpStatus403 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingInvalidHeaderResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestWithoutFormPasswordResultInToadletBeingCalledWhenPostWithoutPasswordIsAllowed FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > redirectExceptionFromToadletResultsInRedirect FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingGetRequestWithContentLengthHeaderResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > requestWithoutFullAccessDoesNotForwardRequestToPageMakerForParsingAdvancedModeSwitches FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > getRequestWithExtremelyLongUrlResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestWithFormPasswordResultInToadletBeingCalled FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingInvalidUrlResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > sendingPostRequestWithInvalidContentLengthHeaderResultsInHttpStatus400 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestWhenPostRequestsAreNotAllowedResultsInHttpStatus405 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > getRequestWithoutToadletResultsInHttpStatus404 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestWithoutFormPasswordResultsInRedirectToSameToadlet FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestSucceedsWhenContainerIsPublicGatewayButStillAllowsFullAccess FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > endingTheRequestDuringTheHeadersWillCloseTheSocket FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > pipeliningTwoGetRequestsWithPersistentConnectionsEnabledResultsInTwoHttpStatus200 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > postRequestWhenContainerIsPublicGatewayResultsInHttpStatus405 FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
ToadletContextImplTest > requestingHomepageWillReturnHomepage FAILED
org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: org.mockito.exceptions.base.MockitoException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalStateException at ToadletContextImplTest.java:331
Caused by: java.lang.IllegalArgumentException at ToadletContextImplTest.java:331
UserAlertManagerTest > generatedAtomContainsUserAlertWithCharactersThatAreNotValidInXml FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsTitle FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsNodeId FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomEntriesUseAnchorForId FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsLinkToItself FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsLastUpdateTime FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsUserAlerts FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsLinkToContext FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsLogoUrl FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomDoesNotContainInvalidUserAlerts FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
UserAlertManagerTest > generatedAtomContainsMultipleUserAlerts FAILED
org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: org.mockito.exceptions.base.MockitoException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalStateException at UserAlertManagerTest.java:196
Caused by: java.lang.IllegalArgumentException at UserAlertManagerTest.java:196
Shutting down...
> Task :test
1238 tests completed, 49 failed
Regarding Mockito.inline:
org.mockito » mockito-inlineMIT
Mockito preconfigured inline mock maker (intermediate and to be superseeded by automatic usage in a future version)
https://mvnrepository.com/artifact/org.mockito
… but the tests fail for me …
Hmm. Are you sure your source directory is clean, i.e. no local modifications? ./gradlew clean test works fine on macOS, on Java 8/11/17/21/25.
Regarding Mockito.inline:
org.mockito » mockito-inlineMIT Mockito preconfigured inline mock maker (intermediate and to be superseeded by automatic usage in a future version)
I’m aware. We can’t use a newer version, anyway (for reasons detailed in 7865349977d8684512a73b21087500f9009dabf6), and this saves us creating a file in a Mockito-specific location, just so it can use the correct mock maker. 🙂
@bertm did you get to have a look at the test tooling by now?
This look very well-structured and usable (code-wose) and sufficiently correct (HTTP-wise). I'd wish for all of fred's code to have such nice test fixtures.
Thanks @Bombe !