From cdc1c6ccad9a38538bf6c6ad4ce8b6ca357c5a99 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sat, 7 Sep 2024 06:08:07 +0200 Subject: [PATCH 01/24] Update year in licence headers --- src/main/java/com/picimako/mockitools/CallChainAnalyzer.java | 2 +- src/main/java/com/picimako/mockitools/CallChainEndsWith.java | 2 +- src/main/java/com/picimako/mockitools/Convention.java | 2 +- .../java/com/picimako/mockitools/EnforceConventionUtil.java | 2 +- .../java/com/picimako/mockitools/MemberInplaceRenameHelper.java | 2 +- src/main/java/com/picimako/mockitools/MockableTypesUtil.java | 2 +- src/main/java/com/picimako/mockitools/MockitoMockMatchers.java | 2 +- .../java/com/picimako/mockitools/MockitoQualifiedNames.java | 2 +- src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java | 2 +- src/main/java/com/picimako/mockitools/StubType.java | 2 +- src/main/java/com/picimako/mockitools/StubbingApproach.java | 2 +- src/main/java/com/picimako/mockitools/VerificationApproach.java | 2 +- .../mockitools/completion/MockCompletionContributor.java | 2 +- src/main/java/com/picimako/mockitools/dsl/MockAnnotation.java | 2 +- src/main/java/com/picimako/mockitools/dsl/MockObject.java | 2 +- src/main/java/com/picimako/mockitools/dsl/MockSettings.java | 2 +- .../mockitools/inspection/CallOnMockitoResetInspection.java | 2 +- .../picimako/mockitools/inspection/HasSonarLintAlternative.java | 2 +- .../mockitools/inspection/MockitoolsBaseInspection.java | 2 +- .../mockitools/inspection/captor/CaptorFieldBaseQuickFix.java | 2 +- .../inspection/captor/CaptorFieldInitializationInspection.java | 2 +- .../captor/CaptorFieldOfTypeArgumentCaptorInspection.java | 2 +- ...CallAnalysisDescriptor.java => ConsecutiveCallAnalyzer.java} | 2 +- .../inspection/consecutive/ConsecutiveCallQuickFixContext.java | 2 +- .../inspection/consecutive/ConsecutiveCallRegistrarContext.java | 2 +- .../consecutive/MergeConsecutiveStubbingCallsQuickFix.java | 2 +- .../consecutive/SimplifyConsecutiveCallsInspectionBase.java | 2 +- .../consecutive/SimplifyConsecutiveReturnCallsInspection.java | 2 +- .../consecutive/SimplifyConsecutiveThrowCallsInspection.java | 2 +- .../mockitools/inspection/consecutive/TypeConversionMethod.java | 2 +- .../inspection/framework/NotExtensibleClassInspection.java | 2 +- .../v4/ArgumentMatchersCalledViaMatchersInspection.java | 2 +- .../inspection/migrationaids/v4/MigrationAidBase.java | 2 +- .../inspection/migrationaids/v4/MigrationAidV4BaseQuickFix.java | 2 +- .../v4/NameCollisionAwareReferenceReplacerQuickFix.java | 2 +- .../v4/NameCollisionlessReferenceReplacerQuickFix.java | 2 +- .../v4/ParameterizedIsNotNullMatcherInspection.java | 2 +- .../migrationaids/v4/UsageOfAnyMatchersInspection.java | 2 +- .../v4/UsageOfDeprecatedPluginClassesInspection.java | 2 +- .../migrationaids/v4/UsageOfDeprecatedVerifyInspection.java | 2 +- .../migrationaids/v4/UsageOfOldJUnitRunnerInspection.java | 2 +- .../mocking/MockSpiedInstanceTypeMismatchInspection.java | 2 +- .../mockitools/inspection/mocking/MockTypeInspection.java | 2 +- .../mocking/ParameterlessMockAndSpyCreationInspection.java | 2 +- .../inspection/mocking/SimplifyMockCreationInspection.java | 2 +- .../mockitools/inspection/mocking/SpyOnMockInspection.java | 2 +- .../inspection/stubbing/EnforceConventionInspection.java | 2 +- .../mockitools/inspection/stubbing/ExceptionStubber.java | 2 +- .../inspection/stubbing/ExtraInterfacesInspection.java | 2 +- .../stubbing/InconsistentArgumentMatcherUsageInspection.java | 2 +- .../stubbing/NoMethodCallArgumentSpecifiedInspection.java | 2 +- .../stubbing/StubbingAndMethodReturnTypeMismatchInspection.java | 2 +- .../stubbing/ThrowsCheckedExceptionStubbingInspection.java | 2 +- .../inspection/verification/CannotVerifyToStringInspection.java | 2 +- .../verification/SingleInOrderVerificationInspection.java | 2 +- .../verification/StubOnlyMockInVerificationInspection.java | 2 +- .../verification/TimesVerificationModeInspection.java | 2 +- ...UnusedOrUnconfiguredMockInInOrderVerificationInspection.java | 2 +- .../VerificationModeValuesBetweenLimitsInspection.java | 2 +- .../mockitools/intention/ConvertCallToFieldIntentionBase.java | 2 +- .../mockitools/intention/ConvertMockCallToFieldIntention.java | 2 +- .../intention/ConvertMockSpyFieldToCallIntention.java | 2 +- .../mockitools/intention/ConvertSpyCallToFieldIntention.java | 2 +- .../intention/ConvertThrowStubbingArgumentsIntention.java | 2 +- .../com/picimako/mockitools/intention/MethodRearranger.java | 2 +- .../mockitools/intention/convert/ConversionIntentionBase.java | 2 +- .../intention/convert/FromSelectionDataRetriever.java | 2 +- .../convert/stub/ConvertFromBDDMockitoGivenIntention.java | 2 +- .../convert/stub/ConvertFromBDDMockitoWillIntention.java | 2 +- .../intention/convert/stub/ConvertFromMockitoDoIntention.java | 2 +- .../intention/convert/stub/ConvertFromMockitoWhenIntention.java | 2 +- .../intention/convert/stub/ConvertStubbingAction.java | 2 +- .../intention/convert/stub/ConvertStubbingIntentionBase.java | 2 +- .../intention/convert/stub/DoesntContainUnsupportedMethod.java | 2 +- .../mockitools/intention/convert/stub/StubbingConverter.java | 2 +- .../convert/verification/ConvertVerificationActionBase.java | 2 +- .../convert/verification/ConvertVerificationIntentionBase.java | 2 +- .../intention/convert/verification/InOrderVariableCreator.java | 2 +- .../intention/convert/verification/NoActionAvailableAction.java | 2 +- .../bddmockitothen/AddInOrderToBDDMockitoAction.java | 2 +- .../ConvertBDDMockitoThenToInOrderVerifyAction.java | 2 +- .../ConvertBDDMockitoThenToMockitoVerifyAction.java | 2 +- .../bddmockitothen/ConvertFromBDDMockitoThenIntention.java | 2 +- .../inorderverify/ConvertFromInOrderVerifyIntention.java | 2 +- .../ConvertInOrderVerifyToBDDMockitoThenWithInOrderAction.java | 2 +- ...onvertInOrderVerifyToBDDMockitoThenWithoutInOrderAction.java | 2 +- .../ConvertInOrderVerifyToMockedStaticVerifyAction.java | 2 +- .../ConvertInOrderVerifyToMockitoVerifyAction.java | 2 +- .../ConvertFromMockedStaticVerifyIntention.java | 2 +- .../ConvertMockedStaticVerifyToInOrderVerifyAction.java | 2 +- .../mockitoverify/ConvertFromMockitoVerifyIntention.java | 2 +- .../ConvertMockitoVerifyToBDDMockitoThenWithInOrderAction.java | 2 +- ...onvertMockitoVerifyToBDDMockitoThenWithoutInOrderAction.java | 2 +- .../ConvertMockitoVerifyToInOrderVerifyAction.java | 2 +- .../intention/mocking/ExpandMockCreationIntention.java | 2 +- .../com/picimako/mockitools/resources/MockitoolsBundle.java | 2 +- .../com/picimako/mockitools/util/ClassObjectAccessUtil.java | 2 +- .../java/com/picimako/mockitools/util/EvaluationHelper.java | 2 +- src/main/java/com/picimako/mockitools/util/ExceptionUtil.java | 2 +- src/main/java/com/picimako/mockitools/util/ListPopupHelper.java | 2 +- .../com/picimako/mockitools/util/ModuleDependencyHelper.java | 2 +- src/main/java/com/picimako/mockitools/util/PointersUtil.java | 2 +- src/main/java/com/picimako/mockitools/util/PsiClassUtil.java | 2 +- src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java | 2 +- src/main/java/com/picimako/mockitools/util/Ranges.java | 2 +- src/main/java/com/picimako/mockitools/util/TokenTypes.java | 2 +- src/main/java/com/picimako/mockitools/util/UnitTestPsiUtil.java | 2 +- .../java/com/picimako/mockitools/MockableTypesUtilTest.java | 2 +- .../java/com/picimako/mockitools/MockitoolsActionTestBase.java | 2 +- .../com/picimako/mockitools/MockitoolsPsiUtilDoNotMockTest.java | 2 +- .../java/com/picimako/mockitools/MockitoolsPsiUtilTest.java | 2 +- .../java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java | 2 +- src/test/java/com/picimako/mockitools/MockitoolsTestBase.java | 2 +- .../mockitools/completion/MockCompletionContributorTest.java | 2 +- .../mockitools/completion/MockitoolsCodeCompletionTestBase.java | 2 +- .../mockitools/inspection/CallOnMockitoResetInspectionTest.java | 2 +- .../mockitools/inspection/MockitoolsInspectionTestBase.java | 2 +- .../captor/CaptorFieldInitializationInspectionTest.java | 2 +- .../captor/CaptorFieldOfTypeArgumentCaptorInspectionTest.java | 2 +- .../SimplifyConsecutiveReturnCallsInspectionTest.java | 2 +- .../SimplifyConsecutiveThrowCallsInspectionTest.java | 2 +- .../inspection/framework/NotExtensibleClassInspectionTest.java | 2 +- .../v4/ParameterizedIsNotNullMatcherInspectionTest.java | 2 +- .../migrationaids/v4/UsageOfAnyMatchersInspectionAnyTest.java | 2 +- .../migrationaids/v4/UsageOfAnyMatchersInspectionAnyXTest.java | 2 +- ...OfDeprecatedPluginClassesInspectionAnnotationEngineTest.java | 2 +- ...precatedPluginClassesInspectionInstantiatorProviderTest.java | 2 +- .../v4/UsageOfDeprecatedVerifyInspectionMockedStaticTest.java | 2 +- .../v4/UsageOfDeprecatedVerifyInspectionMockitoTest.java | 2 +- .../migrationaids/v4/UsageOfOldJUnitRunnerInspectionTest.java | 2 +- .../v4/UseArgumentMatchersInsteadOfMatchersInspectionTest.java | 2 +- .../mocking/MockSpiedInstanceTypeMismatchInspectionTest.java | 2 +- .../mockitools/inspection/mocking/MockTypeInspectionTest.java | 2 +- .../mocking/ParameterlessMockAndSpyCreationInspectionTest.java | 2 +- .../inspection/mocking/SimplifyMockCreationInspectionTest.java | 2 +- .../mockitools/inspection/mocking/SpyOnMockInspectionTest.java | 2 +- .../stubbing/EnforceConventionInspectionBDDMockitoV3Test.java | 2 +- .../stubbing/EnforceConventionInspectionMockitoTest.java | 2 +- .../inspection/stubbing/ExtraInterfacesInspectionTest.java | 2 +- .../InconsistentArgumentMatcherUsageInspectionTest.java | 2 +- .../stubbing/NoMethodCallArgumentSpecifiedInspectionTest.java | 2 +- .../StubbingAndMethodReturnTypeMismatchInspectionTest.java | 2 +- .../stubbing/ThrowsCheckedExceptionStubbingInspectionTest.java | 2 +- .../verification/CannotVerifyToStringInspectionTest.java | 2 +- .../verification/SingleInOrderVerificationInspectionTest.java | 2 +- .../verification/StubOnlyMockInVerificationInspectionTest.java | 2 +- .../verification/TimesVerificationModeInspectionTest.java | 2 +- ...edOrUnconfiguredMockInInOrderVerificationInspectionTest.java | 2 +- .../VerificationModeValuesBetweenLimitsInspectionTest.java | 2 +- .../intention/ConvertMockCallToFieldIntentionTest.java | 2 +- .../intention/ConvertMockSpyFieldToCallIntentionTest.java | 2 +- .../ConvertMockSpyFieldToCallWithSettingsIntentionTest.java | 2 +- .../intention/ConvertSpyCallToFieldIntentionTest.java | 2 +- .../intention/ConvertThrowStubbingArgumentsIntentionTest.java | 2 +- .../convert/EnforceConventionAwareIntentionTestBase.java | 2 +- .../convert/stub/ConvertFromBDDMockitoGivenIntentionTest.java | 2 +- .../convert/stub/ConvertFromBDDMockitoWillIntentionTest.java | 2 +- .../convert/stub/ConvertFromMockitoWhenIntentionTest.java | 2 +- .../intention/convert/stub/ConvertStubbingActionTest.java | 2 +- .../bddmockitothen/AddInOrderToBDDMockitoActionTest.java | 2 +- .../ConvertBDDMockitoThenToInOrderVerifyActionTest.java | 2 +- .../ConvertBDDMockitoThenToMockitoVerifyActionTest.java | 2 +- .../ConvertFromBDDMockitoThenIntentionInBulkTest.java | 2 +- .../bddmockitothen/ConvertFromBDDMockitoThenIntentionTest.java | 2 +- .../ConvertFromInOrderVerifyIntentionInBulkTest.java | 2 +- .../inorderverify/ConvertFromInOrderVerifyIntentionTest.java | 2 +- ...nvertInOrderVerifyToBDDMockitoThenWithInOrderActionTest.java | 2 +- ...rtInOrderVerifyToBDDMockitoThenWithoutInOrderActionTest.java | 2 +- .../ConvertInOrderVerifyToMockedStaticVerifyActionTest.java | 2 +- .../ConvertInOrderVerifyToMockitoVerifyActionTest.java | 2 +- .../ConvertFromMockedStaticVerifyIntentionInBulkTest.java | 2 +- .../ConvertFromMockedStaticVerifyIntentionTest.java | 2 +- .../ConvertMockedStaticVerifyToInOrderVerifyActionTest.java | 2 +- .../ConvertFromMockitoVerifyIntentionInBulkTest.java | 2 +- .../mockitoverify/ConvertFromMockitoVerifyIntentionTest.java | 2 +- ...nvertMockitoVerifyToBDDMockitoThenWithInOrderActionTest.java | 2 +- ...rtMockitoVerifyToBDDMockitoThenWithoutInOrderActionTest.java | 2 +- .../ConvertMockitoVerifyToInOrderVerifyActionTest.java | 2 +- .../intention/mocking/ExpandMockCreationIntentionTest.java | 2 +- .../java/com/picimako/mockitools/util/PsiMethodUtilTest.java | 2 +- 180 files changed, 180 insertions(+), 180 deletions(-) rename src/main/java/com/picimako/mockitools/inspection/consecutive/{ConsecutiveCallAnalysisDescriptor.java => ConsecutiveCallAnalyzer.java} (98%) diff --git a/src/main/java/com/picimako/mockitools/CallChainAnalyzer.java b/src/main/java/com/picimako/mockitools/CallChainAnalyzer.java index f3bd023..f7e11a7 100644 --- a/src/main/java/com/picimako/mockitools/CallChainAnalyzer.java +++ b/src/main/java/com/picimako/mockitools/CallChainAnalyzer.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/CallChainEndsWith.java b/src/main/java/com/picimako/mockitools/CallChainEndsWith.java index ee9dd40..eb6395a 100644 --- a/src/main/java/com/picimako/mockitools/CallChainEndsWith.java +++ b/src/main/java/com/picimako/mockitools/CallChainEndsWith.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/Convention.java b/src/main/java/com/picimako/mockitools/Convention.java index e0bd304..68e8d88 100644 --- a/src/main/java/com/picimako/mockitools/Convention.java +++ b/src/main/java/com/picimako/mockitools/Convention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java b/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java index f00914e..54548d2 100644 --- a/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java +++ b/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/MemberInplaceRenameHelper.java b/src/main/java/com/picimako/mockitools/MemberInplaceRenameHelper.java index 46c618e..4f5ec62 100644 --- a/src/main/java/com/picimako/mockitools/MemberInplaceRenameHelper.java +++ b/src/main/java/com/picimako/mockitools/MemberInplaceRenameHelper.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/MockableTypesUtil.java b/src/main/java/com/picimako/mockitools/MockableTypesUtil.java index 41aaee6..81d374c 100644 --- a/src/main/java/com/picimako/mockitools/MockableTypesUtil.java +++ b/src/main/java/com/picimako/mockitools/MockableTypesUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java b/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java index cf1991f..7b9e9a8 100644 --- a/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java +++ b/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/MockitoQualifiedNames.java b/src/main/java/com/picimako/mockitools/MockitoQualifiedNames.java index 18ce588..fb346bd 100644 --- a/src/main/java/com/picimako/mockitools/MockitoQualifiedNames.java +++ b/src/main/java/com/picimako/mockitools/MockitoQualifiedNames.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java b/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java index 2574b8b..d55a09e 100644 --- a/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java +++ b/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/StubType.java b/src/main/java/com/picimako/mockitools/StubType.java index 11b954c..78adffd 100644 --- a/src/main/java/com/picimako/mockitools/StubType.java +++ b/src/main/java/com/picimako/mockitools/StubType.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/StubbingApproach.java b/src/main/java/com/picimako/mockitools/StubbingApproach.java index 31649cb..662a6b7 100644 --- a/src/main/java/com/picimako/mockitools/StubbingApproach.java +++ b/src/main/java/com/picimako/mockitools/StubbingApproach.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/VerificationApproach.java b/src/main/java/com/picimako/mockitools/VerificationApproach.java index d332a91..6625bf7 100644 --- a/src/main/java/com/picimako/mockitools/VerificationApproach.java +++ b/src/main/java/com/picimako/mockitools/VerificationApproach.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/main/java/com/picimako/mockitools/completion/MockCompletionContributor.java b/src/main/java/com/picimako/mockitools/completion/MockCompletionContributor.java index bce7025..3f11f81 100644 --- a/src/main/java/com/picimako/mockitools/completion/MockCompletionContributor.java +++ b/src/main/java/com/picimako/mockitools/completion/MockCompletionContributor.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.completion; import static com.intellij.patterns.PlatformPatterns.psiElement; diff --git a/src/main/java/com/picimako/mockitools/dsl/MockAnnotation.java b/src/main/java/com/picimako/mockitools/dsl/MockAnnotation.java index 4682af7..ad9855a 100644 --- a/src/main/java/com/picimako/mockitools/dsl/MockAnnotation.java +++ b/src/main/java/com/picimako/mockitools/dsl/MockAnnotation.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.dsl; diff --git a/src/main/java/com/picimako/mockitools/dsl/MockObject.java b/src/main/java/com/picimako/mockitools/dsl/MockObject.java index 76b854c..0d77a7b 100644 --- a/src/main/java/com/picimako/mockitools/dsl/MockObject.java +++ b/src/main/java/com/picimako/mockitools/dsl/MockObject.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.dsl; diff --git a/src/main/java/com/picimako/mockitools/dsl/MockSettings.java b/src/main/java/com/picimako/mockitools/dsl/MockSettings.java index c7df026..712159b 100644 --- a/src/main/java/com/picimako/mockitools/dsl/MockSettings.java +++ b/src/main/java/com/picimako/mockitools/dsl/MockSettings.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.dsl; diff --git a/src/main/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspection.java b/src/main/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspection.java index b761cc5..09194d2 100644 --- a/src/main/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection; diff --git a/src/main/java/com/picimako/mockitools/inspection/HasSonarLintAlternative.java b/src/main/java/com/picimako/mockitools/inspection/HasSonarLintAlternative.java index 0ceef91..25bec48 100644 --- a/src/main/java/com/picimako/mockitools/inspection/HasSonarLintAlternative.java +++ b/src/main/java/com/picimako/mockitools/inspection/HasSonarLintAlternative.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection; diff --git a/src/main/java/com/picimako/mockitools/inspection/MockitoolsBaseInspection.java b/src/main/java/com/picimako/mockitools/inspection/MockitoolsBaseInspection.java index 1f47f14..baefc4b 100644 --- a/src/main/java/com/picimako/mockitools/inspection/MockitoolsBaseInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/MockitoolsBaseInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection; diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java index a900add..658c340 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.captor; diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java index fa7bae6..14a4195 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.captor; diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java index 6ce13e9..d6894fe 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.captor; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalysisDescriptor.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java similarity index 98% rename from src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalysisDescriptor.java rename to src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java index 14f00bc..8b2da55 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalysisDescriptor.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java index e817c37..ec721c9 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java index c25a128..1dcac1e 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java index b9550f5..f426360 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java index 38781c4..26df5d5 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java index 1225598..19691e0 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java index 0bf42f4..6be538d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/TypeConversionMethod.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/TypeConversionMethod.java index 6e7b666..f4df0dd 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/TypeConversionMethod.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/TypeConversionMethod.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/main/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspection.java b/src/main/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspection.java index 7adbe96..4f733f6 100644 --- a/src/main/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.framework; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ArgumentMatchersCalledViaMatchersInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ArgumentMatchersCalledViaMatchersInspection.java index 276c2ab..38945a2 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ArgumentMatchersCalledViaMatchersInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ArgumentMatchersCalledViaMatchersInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidBase.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidBase.java index f99f4f0..2e517f8 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidBase.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidV4BaseQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidV4BaseQuickFix.java index c48f685..bf4143d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidV4BaseQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/MigrationAidV4BaseQuickFix.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_ARGUMENT_MATCHERS; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionAwareReferenceReplacerQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionAwareReferenceReplacerQuickFix.java index d58318d..8d8b693 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionAwareReferenceReplacerQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionAwareReferenceReplacerQuickFix.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionlessReferenceReplacerQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionlessReferenceReplacerQuickFix.java index 791fb5b..32427be 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionlessReferenceReplacerQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/NameCollisionlessReferenceReplacerQuickFix.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspection.java index c2bf41b..ec31409 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java index 77d2b81..c3b7d3d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java index 96f1b15..f3a8c19 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspection.java index e6ba5f0..24346da 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspection.java index afee492..51ac20d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java index 3f26907..8764e03 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/MockTypeInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/MockTypeInspection.java index 4c5499a..af9bf02 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/MockTypeInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/MockTypeInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java index 9ed1840..7517a3d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspection.java index 08d01fb..8b81cca 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java index 4411bcf..5ab9e7f 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java index 37f94c9..a42e9cc 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java index 89a5d64..1bd5ce7 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspection.java index 900b040..b47cb8d 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspection.java index 6e91d02..0442d4b 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspection.java index 6dded70..cd52170 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java index 18b11bf..ab2846e 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspection.java index 6c1e05d..a481e1c 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspection.java index c31bc24..fde528a 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java index 8450e9e..056de06 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspection.java index 61e61ff..f7dc0ed 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java index 2c6eee6..829d9a3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java index cf534c9..653dd32 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java index ac832f5..7c43230 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java index 42c05a4..62c15f4 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java index 9023e51..9e1f918 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java index f5b3fae..1aad008 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java index 021cf6c..8a33ebd 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntention.java index e50e5b7..e23a73b 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java b/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java index 7cca755..0f8ea64 100644 --- a/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java +++ b/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java index 4bdd670..864d74c 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/FromSelectionDataRetriever.java b/src/main/java/com/picimako/mockitools/intention/convert/FromSelectionDataRetriever.java index 095d3ce..295c1ca 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/FromSelectionDataRetriever.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/FromSelectionDataRetriever.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java index a5702d6..81bab0d 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java index 807908e..b9804d5 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java index b06c781..4dda507 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java index 9b7f88e..78a1172 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java index 846eae5..6e8536b 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java index 63ba848..c319812 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/DoesntContainUnsupportedMethod.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/DoesntContainUnsupportedMethod.java index 65ac273..1fbae3d 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/DoesntContainUnsupportedMethod.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/DoesntContainUnsupportedMethod.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/StubbingConverter.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/StubbingConverter.java index 858d762..818c814 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/StubbingConverter.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/StubbingConverter.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationActionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationActionBase.java index 9248f31..5d9f011 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationActionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationActionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java index 8116055..949b03a 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/InOrderVariableCreator.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/InOrderVariableCreator.java index 376fc19..cadf4e1 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/InOrderVariableCreator.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/InOrderVariableCreator.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/NoActionAvailableAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/NoActionAvailableAction.java index cbbc962..2ff329d 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/NoActionAvailableAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/NoActionAvailableAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoAction.java index a06e316..7496438 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyAction.java index 12db965..eeb502d 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyAction.java index 63d8a7f..6977b27 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntention.java index 9558c1b..ca4ed6b 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntention.java index 8edae6d..512ed54 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderAction.java index 3a38b58..c65ef29 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderAction.java index abb5a17..63a03c3 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyAction.java index ea72c0d..7e77ed2 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyAction.java index 48c3a7d..2163341 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntention.java index 2a666d7..e6aa47f 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockedstaticverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyAction.java index 59c60ce..00ad00a 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockedstaticverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntention.java index 202ea5b..66d3ba4 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderAction.java index bf88c68..6622f03 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderAction.java index d29e880..caa7051 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyAction.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyAction.java index a1c5bf0..508b4fc 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyAction.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/main/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntention.java b/src/main/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntention.java index 6ee5be9..af22332 100644 --- a/src/main/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntention.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.mocking; diff --git a/src/main/java/com/picimako/mockitools/resources/MockitoolsBundle.java b/src/main/java/com/picimako/mockitools/resources/MockitoolsBundle.java index e3744c0..d101871 100644 --- a/src/main/java/com/picimako/mockitools/resources/MockitoolsBundle.java +++ b/src/main/java/com/picimako/mockitools/resources/MockitoolsBundle.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.resources; diff --git a/src/main/java/com/picimako/mockitools/util/ClassObjectAccessUtil.java b/src/main/java/com/picimako/mockitools/util/ClassObjectAccessUtil.java index 347f971..6dc72bf 100644 --- a/src/main/java/com/picimako/mockitools/util/ClassObjectAccessUtil.java +++ b/src/main/java/com/picimako/mockitools/util/ClassObjectAccessUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/EvaluationHelper.java b/src/main/java/com/picimako/mockitools/util/EvaluationHelper.java index 804dfe9..8356512 100644 --- a/src/main/java/com/picimako/mockitools/util/EvaluationHelper.java +++ b/src/main/java/com/picimako/mockitools/util/EvaluationHelper.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/ExceptionUtil.java b/src/main/java/com/picimako/mockitools/util/ExceptionUtil.java index 9c99c28..cc4c3c5 100644 --- a/src/main/java/com/picimako/mockitools/util/ExceptionUtil.java +++ b/src/main/java/com/picimako/mockitools/util/ExceptionUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/ListPopupHelper.java b/src/main/java/com/picimako/mockitools/util/ListPopupHelper.java index 54c4505..b455d4c 100644 --- a/src/main/java/com/picimako/mockitools/util/ListPopupHelper.java +++ b/src/main/java/com/picimako/mockitools/util/ListPopupHelper.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/ModuleDependencyHelper.java b/src/main/java/com/picimako/mockitools/util/ModuleDependencyHelper.java index 3f48233..fee5ed8 100644 --- a/src/main/java/com/picimako/mockitools/util/ModuleDependencyHelper.java +++ b/src/main/java/com/picimako/mockitools/util/ModuleDependencyHelper.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; import java.util.Arrays; diff --git a/src/main/java/com/picimako/mockitools/util/PointersUtil.java b/src/main/java/com/picimako/mockitools/util/PointersUtil.java index d66d78a..6700a7a 100644 --- a/src/main/java/com/picimako/mockitools/util/PointersUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PointersUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java b/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java index 1cd7b0b..98fb4e5 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java index e4b09e7..8dbdcb1 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/Ranges.java b/src/main/java/com/picimako/mockitools/util/Ranges.java index 6c53a97..603615a 100644 --- a/src/main/java/com/picimako/mockitools/util/Ranges.java +++ b/src/main/java/com/picimako/mockitools/util/Ranges.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/TokenTypes.java b/src/main/java/com/picimako/mockitools/util/TokenTypes.java index 23ba996..52ac667 100644 --- a/src/main/java/com/picimako/mockitools/util/TokenTypes.java +++ b/src/main/java/com/picimako/mockitools/util/TokenTypes.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/main/java/com/picimako/mockitools/util/UnitTestPsiUtil.java b/src/main/java/com/picimako/mockitools/util/UnitTestPsiUtil.java index c3eabde..0e32ccc 100644 --- a/src/main/java/com/picimako/mockitools/util/UnitTestPsiUtil.java +++ b/src/main/java/com/picimako/mockitools/util/UnitTestPsiUtil.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; diff --git a/src/test/java/com/picimako/mockitools/MockableTypesUtilTest.java b/src/test/java/com/picimako/mockitools/MockableTypesUtilTest.java index 81dca97..92c1dec 100644 --- a/src/test/java/com/picimako/mockitools/MockableTypesUtilTest.java +++ b/src/test/java/com/picimako/mockitools/MockableTypesUtilTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/MockitoolsActionTestBase.java b/src/test/java/com/picimako/mockitools/MockitoolsActionTestBase.java index 60f4aa0..a2e3c26 100644 --- a/src/test/java/com/picimako/mockitools/MockitoolsActionTestBase.java +++ b/src/test/java/com/picimako/mockitools/MockitoolsActionTestBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilDoNotMockTest.java b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilDoNotMockTest.java index 5ca12e5..f465cd1 100644 --- a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilDoNotMockTest.java +++ b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilDoNotMockTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilTest.java b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilTest.java index e22fd31..2858901 100644 --- a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilTest.java +++ b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java index 5574a98..7d3df78 100644 --- a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java +++ b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/MockitoolsTestBase.java b/src/test/java/com/picimako/mockitools/MockitoolsTestBase.java index bf151ed..3b942a7 100644 --- a/src/test/java/com/picimako/mockitools/MockitoolsTestBase.java +++ b/src/test/java/com/picimako/mockitools/MockitoolsTestBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools; diff --git a/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java b/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java index cd7f312..3222db1 100644 --- a/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java +++ b/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.completion; diff --git a/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java b/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java index c40868c..3a40d85 100644 --- a/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java +++ b/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.completion; import static org.assertj.core.api.Assertions.assertThat; diff --git a/src/test/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspectionTest.java index 3ad5ce3..4110d45 100644 --- a/src/test/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/CallOnMockitoResetInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection; diff --git a/src/test/java/com/picimako/mockitools/inspection/MockitoolsInspectionTestBase.java b/src/test/java/com/picimako/mockitools/inspection/MockitoolsInspectionTestBase.java index aed24b9..fe4e440 100644 --- a/src/test/java/com/picimako/mockitools/inspection/MockitoolsInspectionTestBase.java +++ b/src/test/java/com/picimako/mockitools/inspection/MockitoolsInspectionTestBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection; diff --git a/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspectionTest.java index 46f3950..e054f97 100644 --- a/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.captor; diff --git a/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspectionTest.java index 11093a2..e5ed744 100644 --- a/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.captor; diff --git a/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspectionTest.java index 72c91af..b3ba4a2 100644 --- a/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspectionTest.java index 526641a..c759867 100644 --- a/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.consecutive; diff --git a/src/test/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspectionTest.java index 6f6ad41..4a52bc3 100644 --- a/src/test/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/framework/NotExtensibleClassInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.framework; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspectionTest.java index e678a20..bacb33a 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/ParameterizedIsNotNullMatcherInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyTest.java index fafc4ae..2c1a84b 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; import com.intellij.codeInspection.InspectionProfileEntry; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyXTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyXTest.java index 00a612f..ff8cfde 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyXTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspectionAnyXTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; import com.intellij.codeInspection.InspectionProfileEntry; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionAnnotationEngineTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionAnnotationEngineTest.java index b482901..0865c5f 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionAnnotationEngineTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionAnnotationEngineTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionInstantiatorProviderTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionInstantiatorProviderTest.java index 2072c54..6c977ae 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionInstantiatorProviderTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspectionInstantiatorProviderTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockedStaticTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockedStaticTest.java index 1587fec..878ab48 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockedStaticTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockedStaticTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockitoTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockitoTest.java index 747b6ef..daf607b 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockitoTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedVerifyInspectionMockitoTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspectionTest.java index 76d0b86..f8e644f 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfOldJUnitRunnerInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; diff --git a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UseArgumentMatchersInsteadOfMatchersInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UseArgumentMatchersInsteadOfMatchersInspectionTest.java index 31eb032..f7a75a5 100644 --- a/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UseArgumentMatchersInsteadOfMatchersInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/migrationaids/v4/UseArgumentMatchersInsteadOfMatchersInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.migrationaids.v4; import com.intellij.codeInspection.InspectionProfileEntry; diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspectionTest.java index c1f1150..7857ed8 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/MockTypeInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/MockTypeInspectionTest.java index c220155..a34551e 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/MockTypeInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/MockTypeInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java index 2e879eb..ad92c70 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspectionTest.java index 8701369..cbfdb05 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/SimplifyMockCreationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspectionTest.java index 8700ca8..34f4812 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.mocking; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionBDDMockitoV3Test.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionBDDMockitoV3Test.java index 9d89c25..5baa173 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionBDDMockitoV3Test.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionBDDMockitoV3Test.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionMockitoTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionMockitoTest.java index fb0e88d..1234a6a 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionMockitoTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspectionMockitoTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspectionTest.java index c57bb22..f6c2138 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/ExtraInterfacesInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspectionTest.java index 91e98bf..3f4071a 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/InconsistentArgumentMatcherUsageInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspectionTest.java index 8e50794..714441e 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/NoMethodCallArgumentSpecifiedInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspectionTest.java index 198ccee..69717d4 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspectionTest.java index 1204162..451f82f 100644 --- a/src/test/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/ThrowsCheckedExceptionStubbingInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.stubbing; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspectionTest.java index a818083..1dd98b6 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/CannotVerifyToStringInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspectionTest.java index 76d4c9f..8dcf231 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspectionTest.java index 813bb53..6e6e19c 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/StubOnlyMockInVerificationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspectionTest.java index ffa8af0..d193d9e 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspectionTest.java index d806f9e..0ddb344 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspectionTest.java index 64195f5..9531f58 100644 --- a/src/test/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspectionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.inspection.verification; diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java index 0f96b01..00c7a50 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java index aaa36f9..8db7eb9 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallWithSettingsIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallWithSettingsIntentionTest.java index c5a7d01..11319d8 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallWithSettingsIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallWithSettingsIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java index 3127821..b371c43 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntentionTest.java index 545a0b6..81ca2f6 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertThrowStubbingArgumentsIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java b/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java index 94a330a..3485bb7 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntentionTest.java index ec2a562..5b4c971 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntentionTest.java index 4bca84a..ab0b5fb 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntentionTest.java index 86f1548..76d2dc2 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingActionTest.java index e5ade01..808b5f9 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoActionTest.java index 5db5de8..a2e100d 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/AddInOrderToBDDMockitoActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyActionTest.java index 6d25b38..976d874 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToInOrderVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyActionTest.java index 9455304..3b79ef2 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertBDDMockitoThenToMockitoVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionInBulkTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionInBulkTest.java index d058470..76713fd 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionInBulkTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionInBulkTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionTest.java index ad4c21b..04e8dd1 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/bddmockitothen/ConvertFromBDDMockitoThenIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.bddmockitothen; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionInBulkTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionInBulkTest.java index 5035d53..c0051a6 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionInBulkTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionInBulkTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionTest.java index 3b3f527..a589d59 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertFromInOrderVerifyIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderActionTest.java index 3692471..0b33da7 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithInOrderActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderActionTest.java index bd3d100..6e424c2 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToBDDMockitoThenWithoutInOrderActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyActionTest.java index 0147b6a..8681601 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockedStaticVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyActionTest.java index 93974de..c21dea6 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/inorderverify/ConvertInOrderVerifyToMockitoVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.inorderverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionInBulkTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionInBulkTest.java index f5ae5b7..3c1d12d 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionInBulkTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionInBulkTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockedstaticverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionTest.java index 0ae6520..e8246fb 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertFromMockedStaticVerifyIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockedstaticverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyActionTest.java index 06c5e6a..625dc74 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockedstaticverify/ConvertMockedStaticVerifyToInOrderVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockedstaticverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionInBulkTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionInBulkTest.java index 5dc796f..c3acc88 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionInBulkTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionInBulkTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionTest.java index 6d873bf..33be01e 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertFromMockitoVerifyIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderActionTest.java index 16c6a77..a17f5e2 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithInOrderActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderActionTest.java index e9450cc..9ee2e22 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToBDDMockitoThenWithoutInOrderActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyActionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyActionTest.java index 62a8832..1b0ca89 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyActionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/verification/mockitoverify/ConvertMockitoVerifyToInOrderVerifyActionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.verification.mockitoverify; diff --git a/src/test/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntentionTest.java index c6e6497..1ce714b 100644 --- a/src/test/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/mocking/ExpandMockCreationIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.mocking; diff --git a/src/test/java/com/picimako/mockitools/util/PsiMethodUtilTest.java b/src/test/java/com/picimako/mockitools/util/PsiMethodUtilTest.java index 8127f20..becb615 100644 --- a/src/test/java/com/picimako/mockitools/util/PsiMethodUtilTest.java +++ b/src/test/java/com/picimako/mockitools/util/PsiMethodUtilTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.util; From bc7dd76683e85da582e02f889f755b33089f5e22 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sat, 7 Sep 2024 06:13:03 +0200 Subject: [PATCH 02/24] Update dependencies and plugin versions --- .github/workflows/build.yml | 74 +++++------------------ build.gradle.kts | 8 +-- gradle.properties | 4 +- gradle/libs.versions.toml | 7 +-- gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew.bat | 20 +++--- src/main/resources/META-INF/plugin.xml | 2 +- 8 files changed, 36 insertions(+), 81 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00042eb..68a6df6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,10 @@ on: # Trigger the workflow on any pull request pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: # Prepare environment and build the plugin @@ -32,13 +36,13 @@ jobs: pluginVerifierHomeDir: ${{ steps.properties.outputs.pluginVerifierHomeDir }} steps: - # Check out current repository + # Check out the current repository - name: Fetch Sources uses: actions/checkout@v4 # Validate wrapper - name: Gradle Wrapper Validation - uses: gradle/wrapper-validation-action@v1.1.0 + uses: gradle/actions/wrapper-validation@v3 # Set up Java environment for the next steps - name: Setup Java @@ -49,7 +53,7 @@ jobs: # Setup Gradle - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/actions/setup-gradle@v3 with: gradle-home-cache-cleanup: true @@ -69,8 +73,6 @@ jobs: echo "$CHANGELOG" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - ./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier - # Build plugin - name: Build plugin run: ./gradlew buildPlugin @@ -88,7 +90,7 @@ jobs: # Store already-built plugin as an artifact for downloading - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ steps.artifact.outputs.filename }} path: ./build/distributions/content/*/* @@ -100,7 +102,7 @@ jobs: runs-on: ubuntu-latest steps: - # Check out current repository + # Check out the current repository - name: Fetch Sources uses: actions/checkout@v4 @@ -113,7 +115,7 @@ jobs: # Setup Gradle - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/actions/setup-gradle@v3 with: gradle-home-cache-cleanup: true @@ -124,7 +126,7 @@ jobs: # Collect Tests Result of failed tests - name: Collect Tests Result if: ${{ failure() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: tests-result path: ${{ github.workspace }}/build/reports/tests @@ -143,7 +145,7 @@ jobs: tool-cache: false large-packages: false - # Check out current repository + # Check out the current repository - name: Fetch Sources uses: actions/checkout@v4 @@ -156,69 +158,25 @@ jobs: # Setup Gradle - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/actions/setup-gradle@v3 with: gradle-home-cache-cleanup: true # Cache Plugin Verifier IDEs - name: Setup Plugin Verifier IDEs Cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ needs.build.outputs.pluginVerifierHomeDir }}/ides key: plugin-verifier-${{ hashFiles('build/listProductsReleases.txt') }} # Run Verify Plugin task and IntelliJ Plugin Verifier tool - name: Run Plugin Verification tasks - run: ./gradlew runPluginVerifier -Dplugin.verifier.home.dir=${{ needs.build.outputs.pluginVerifierHomeDir }} + run: ./gradlew verifyPlugin -Dplugin.verifier.home.dir=${{ needs.build.outputs.pluginVerifierHomeDir }} # Collect Plugin Verifier Result - name: Collect Plugin Verifier Result if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pluginVerifier-result path: ${{ github.workspace }}/build/reports/pluginVerifier - -# # Prepare a draft release for GitHub Releases page for the manual verification -# # If accepted and published, release workflow would be triggered -# releaseDraft: -# name: Release draft -# if: github.event_name != 'pull_request' -# needs: [ build, test, inspectCode, verify ] -# runs-on: ubuntu-latest -# permissions: -# contents: write -# steps: -# -# # Check out current repository -# - name: Fetch Sources -# uses: actions/checkout@v4 -# -# # Set up Java environment for the next steps -# - name: Setup Java -# uses: actions/setup-java@v4 -# with: -# distribution: zulu -# java-version: 17 -# -# # Remove old release drafts by using the curl request for the available releases with a draft flag -# - name: Remove Old Release Drafts -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# run: | -# gh api repos/{owner}/{repo}/releases \ -# --jq '.[] | select(.draft == true) | .id' \ -# | xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{} -# -# # Create a new release draft which is not publicly visible and requires manual acceptance -# - name: Create Release Draft -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# run: | -# gh release create v${{ needs.build.outputs.version }} \ -# --draft \ -# --title "v${{ needs.build.outputs.version }}" \ -# --notes "$(cat << 'EOM' -# ${{ needs.build.outputs.changelog }} -# EOM -# )" diff --git a/build.gradle.kts b/build.gradle.kts index d1e6fbe..0a7396f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -42,10 +42,10 @@ changelog { } dependencies { - testImplementation("org.assertj:assertj-core:3.26.0") - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") - testImplementation("org.junit.jupiter:junit-jupiter-params:5.10.0") + testImplementation("org.assertj:assertj-core:3.26.3") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.0") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.0") + testImplementation("org.junit.jupiter:junit-jupiter-params:5.11.0") } tasks { diff --git a/gradle.properties b/gradle.properties index 2607f71..9795939 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ pluginGroup = com.picimako.mockitools pluginName = Mockitools -pluginVersion = 1.2.0 +pluginVersion = 1.3.0 # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html pluginSinceBuild = 233.11799.241 @@ -17,7 +17,7 @@ platformVersion = 2023.3 platformPlugins = java # Gradle Releases -> https://github.com/gradle/gradle/releases -gradleVersion = 8.7 +gradleVersion = 8.8 # Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib kotlin.stdlib.default.dependency = false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1893caa..e34109a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,12 @@ [versions] -# libraries -annotations = "24.1.0" # plugins kotlin = "1.9.0" -changelog = "2.2.0" +changelog = "2.2.1" gradleIntelliJPlugin = "1.17.3" -lombok = "8.6" +lombok = "8.10" [libraries] -annotations = { group = "org.jetbrains", name = "annotations", version.ref = "annotations" } [plugins] changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch delta 34118 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 delta 34176 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 SGW6ptSs!X7{rG*o_g?|vpSEZK diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..a441313 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..25da30d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 714e7d5..ca6ce31 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -3,7 +3,7 @@ mockitools Mockitools Tamás Balog - 1.2.0 + 1.3.0 messages.MockitoolsBundle Provides integration for the Mockito framework for Java. From b1cd526c77a39afb4db11a4b063c1fbb05bc6907 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sat, 7 Sep 2024 06:21:41 +0200 Subject: [PATCH 03/24] Simplify consecutive call analysis logic --- .../consecutive/ConsecutiveCallAnalyzer.java | 77 +++++++++++-------- .../ConsecutiveCallQuickFixContext.java | 4 +- .../ConsecutiveCallRegistrarContext.java | 6 +- ...implifyConsecutiveCallsInspectionBase.java | 14 ++-- ...plifyConsecutiveReturnCallsInspection.java | 27 ++++--- ...mplifyConsecutiveThrowCallsInspection.java | 41 +++++----- .../inspection/stubbing/ExceptionStubber.java | 2 +- .../ConvertFromMockitoDoIntentionTest.java | 2 +- 8 files changed, 92 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java index 8b2da55..f54cd73 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallAnalyzer.java @@ -7,6 +7,7 @@ import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCKITO; import com.intellij.psi.PsiMethodCallExpression; +import com.picimako.mockitools.StubbingApproach; import com.picimako.mockitools.inspection.stubbing.ExceptionStubber; import com.siyeh.ig.callMatcher.CallMatcher; import lombok.RequiredArgsConstructor; @@ -18,7 +19,7 @@ /** * Data class to be used during the analysis phase. */ -class ConsecutiveCallAnalysisDescriptor { +class ConsecutiveCallAnalyzer { /** * The method name whose consecutiveness the inspection looks for. *

    @@ -27,53 +28,52 @@ class ConsecutiveCallAnalysisDescriptor { @NotNull final String consecutiveMethodName; /** - * The index to start inspecting the call chain from, because in case of e.g. {@code Mockito.when()} it is certain that + * Whether to skip the analysis of the first call in a call chain, because in case of e.g. {@code Mockito.when()} it is certain that * {@code when()} will never match e.g. {@code thenReturn()}, so we can skip that comparison and start at the next call. */ - final int indexToStartInspectionAt; + final boolean skipAnalysisOfFirstCall; /** * Used to identify {@code *Throw()} calls in case of {@link SimplifyConsecutiveThrowCallsInspection}. */ @Nullable final ExceptionStubber exceptionStubber; /** - * The call matcher built for {@link Builder#inCallChainsBeginningWith}. + * The call matcher built for {@link Analyzer#inCallChainsBeginningWithStatic}. */ @NotNull private final CallMatcher chainStarterMethodMatcher; - private ConsecutiveCallAnalysisDescriptor(Builder builder) { + private ConsecutiveCallAnalyzer(Analyzer builder) { chainStarterMethodMatcher = builder.chainStarterMethodMatcher; consecutiveMethodName = builder.consecutiveMethodName; - indexToStartInspectionAt = builder.indexToStartInspectionAt; + skipAnalysisOfFirstCall = builder.skipAnalysisOfFirstCall; exceptionStubber = builder.exceptionStubbingVia; } - boolean matches(PsiMethodCallExpression expression) { + boolean canAnalyze(PsiMethodCallExpression expression) { return chainStarterMethodMatcher.matches(expression); } + /** + * Builder for {@code ConsecutiveCallAnalyzer}. + */ @RequiredArgsConstructor - static final class Builder { + static final class Analyzer { /** * Used in the quick fix as the beginning of the expression that is built for replacement. *

    - * Usually either {@code org.mockito.Mockito} or {@code org.mockito.BDDMockito}. + * Either {@code org.mockito.Mockito}, {@code org.mockito.BDDMockito} or {@code org.mockito.MockedStatic}. */ private final String mockitoClass; private CallMatcher chainStarterMethodMatcher; @Accessors(fluent = true) @Setter private String consecutiveMethodName; - @Accessors(fluent = true) - @Setter - private int indexToStartInspectionAt = 0; + private boolean skipAnalysisOfFirstCall = false; /** * Applicable only in case of {@link SimplifyConsecutiveThrowCallsInspection}. */ @Nullable - @Accessors(fluent = true) - @Setter private ExceptionStubber exceptionStubbingVia; /** @@ -82,41 +82,54 @@ static final class Builder { * @param chainStarterMethodNames The first call in a stubbing call chain from where the calls are collected. * E.g. {@code Mockito.when()}, {@code BDDMockito.willReturn()}, etc. */ - Builder inCallChainsBeginningWith(String... chainStarterMethodNames) { - return inCallChainsBeginningWith(MethodType.STATIC, chainStarterMethodNames); + Analyzer inCallChainsBeginningWithStatic(String... chainStarterMethodNames) { + this.chainStarterMethodMatcher = CallMatcher.staticCall(mockitoClass, chainStarterMethodNames); + return this; } /** - * Configures the method names as instance or static methods (based on the method type) in {@link #mockitoClass}. + * Configures the method names as instance methods in {@link #mockitoClass}. * * @param chainStarterMethodNames The first call in a stubbing call chain from where the calls are collected. * E.g. {@code Mockito.when()}, {@code BDDMockito.willReturn()}, etc. */ - Builder inCallChainsBeginningWith(MethodType methodtype, String... chainStarterMethodNames) { - this.chainStarterMethodMatcher = methodtype == MethodType.STATIC - ? CallMatcher.staticCall(mockitoClass, chainStarterMethodNames) - : CallMatcher.instanceCall(mockitoClass, chainStarterMethodNames); + Analyzer inCallChainsBeginningWithInstance(String... chainStarterMethodNames) { + this.chainStarterMethodMatcher = CallMatcher.instanceCall(mockitoClass, chainStarterMethodNames); + return this; + } + + /** + * Configures this builder to do skip the analysis of the first call in a chain. + */ + Analyzer skippingAnalysisOfFirstCall() { + skipAnalysisOfFirstCall = true; return this; } - ConsecutiveCallAnalysisDescriptor build() { - return new ConsecutiveCallAnalysisDescriptor(this); + /** + * Configure the exception stubber from the provide stubbing approach + */ + Analyzer exceptionStubbingVia(StubbingApproach stubbingApproach) { + exceptionStubbingVia = stubbingApproach.getExceptionStubber(); + return this; } - static Builder forMockito(String consecutiveMethodName) { - return new Builder(ORG_MOCKITO_MOCKITO).consecutiveMethodName(consecutiveMethodName); + ConsecutiveCallAnalyzer build() { + return new ConsecutiveCallAnalyzer(this); } - static Builder forBDDMockito(String consecutiveMethodName) { - return new Builder(ORG_MOCKITO_BDDMOCKITO).consecutiveMethodName(consecutiveMethodName); + //Static factory methods + + static Analyzer forMockito(String consecutiveMethodName) { + return new Analyzer(ORG_MOCKITO_MOCKITO).consecutiveMethodName(consecutiveMethodName); } - static Builder forMockedStatic(String consecutiveMethodName) { - return new Builder(ORG_MOCKITO_MOCKED_STATIC).consecutiveMethodName(consecutiveMethodName); + static Analyzer forBDDMockito(String consecutiveMethodName) { + return new Analyzer(ORG_MOCKITO_BDDMOCKITO).consecutiveMethodName(consecutiveMethodName); } - } - enum MethodType { - STATIC, INSTANCE + static Analyzer forMockedStatic(String consecutiveMethodName) { + return new Analyzer(ORG_MOCKITO_MOCKED_STATIC).consecutiveMethodName(consecutiveMethodName); + } } } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java index ec721c9..c29d202 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java @@ -15,7 +15,7 @@ */ class ConsecutiveCallQuickFixContext { /** - * @see ConsecutiveCallAnalysisDescriptor#consecutiveMethodName + * @see ConsecutiveCallAnalyzer#consecutiveMethodName */ final String consecutiveMethodName; /** @@ -29,7 +29,7 @@ class ConsecutiveCallQuickFixContext { public ConsecutiveCallQuickFixContext(ConsecutiveCallRegistrarContext registrar) { this.consecutiveMethodName = registrar.consecutiveMethodName; - wholeChainPointers = toPointers(registrar.callsInWholeChain); + this.wholeChainPointers = toPointers(registrar.callsInWholeChain); this.consecutiveCallIndeces = registrar.consecutiveCallIndeces; } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java index 1dcac1e..a111522 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java @@ -15,7 +15,7 @@ */ class ConsecutiveCallRegistrarContext { /** - * @see ConsecutiveCallAnalysisDescriptor#consecutiveMethodName + * @see ConsecutiveCallAnalyzer#consecutiveMethodName */ final String consecutiveMethodName; /** @@ -27,11 +27,11 @@ class ConsecutiveCallRegistrarContext { */ final List consecutiveCallIndeces; /** - * @see ConsecutiveCallAnalysisDescriptor#exceptionStubber + * @see ConsecutiveCallAnalyzer#exceptionStubber */ private final ExceptionStubber exceptionStubber; - ConsecutiveCallRegistrarContext(@NotNull ConsecutiveCallAnalysisDescriptor analyzer, + ConsecutiveCallRegistrarContext(@NotNull ConsecutiveCallAnalyzer analyzer, @NotNull List callsInWholeChain, @NotNull List consecutiveCallIndeces) { consecutiveMethodName = analyzer.consecutiveMethodName; diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java index 26df5d5..5cbebb3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java @@ -27,14 +27,14 @@ * {@link #register} -> * {@link #doRegister} */ -public abstract class SimplifyConsecutiveCallsInspectionBase extends MockitoolsBaseInspection { +abstract class SimplifyConsecutiveCallsInspectionBase extends MockitoolsBaseInspection { //Analysis workflow @Override protected void checkMethodCallExpression(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { - analysisDescriptors().stream() - .filter(descriptor -> descriptor.matches(expression)) + analyzers().stream() + .filter(analyzer -> analyzer.canAnalyze(expression)) .findFirst() .ifPresent(analyzer -> checkCallChainAndRegister(analyzer, expression, holder)); } @@ -48,11 +48,11 @@ protected void checkMethodCallExpression(PsiMethodCallExpression expression, @No * This separate registration is to provide better notification for users, and in the future, to be able to merge different consecutive calls separately. * */ - protected void checkCallChainAndRegister(ConsecutiveCallAnalysisDescriptor analyzer, PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { + protected void checkCallChainAndRegister(ConsecutiveCallAnalyzer analyzer, PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { var callsInWholeChain = collectCallsInChainFromFirst(expression, true); var consecutiveCallIndeces = new SmartList(); - for (int i = analyzer.indexToStartInspectionAt; i < callsInWholeChain.size(); i++) { + for (int i = analyzer.skipAnalysisOfFirstCall ? 1 : 0; i < callsInWholeChain.size(); i++) { var call = callsInWholeChain.get(i); if (analyzer.consecutiveMethodName.equals(getMethodName(call)) && extraCondition().test(call)) { @@ -74,11 +74,11 @@ protected Predicate extraCondition() { return call -> true; } - protected abstract List analysisDescriptors(); + protected abstract List analyzers(); //Registration workflow - private void registerMultiple(ConsecutiveCallAnalysisDescriptor analyzer, List callsInWholeChain, + private void registerMultiple(ConsecutiveCallAnalyzer analyzer, List callsInWholeChain, List consecutiveCallIndeces, @NotNull ProblemsHolder holder) { if (consecutiveCallIndeces.size() > 1) { register(new ConsecutiveCallRegistrarContext(analyzer, callsInWholeChain, consecutiveCallIndeces), holder); diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java index 19691e0..dac0c42 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java @@ -9,10 +9,9 @@ import static com.picimako.mockitools.MockitoQualifiedNames.WHEN; import static com.picimako.mockitools.MockitoQualifiedNames.WILL_RETURN; import static com.picimako.mockitools.MockitoQualifiedNames.WILL_THROW; -import static com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalysisDescriptor.MethodType.INSTANCE; import com.intellij.codeInspection.ProblemsHolder; -import com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalysisDescriptor.Builder; +import com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalyzer.Analyzer; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -29,21 +28,21 @@ * @since 0.3.0 */ final class SimplifyConsecutiveReturnCallsInspection extends SimplifyConsecutiveCallsInspectionBase { - private static final List RETURN_DESCRIPTORS = List.of( - Builder.forMockito(DO_RETURN) - .inCallChainsBeginningWith(DO_RETURN, DO_THROW, "doNothing", "doAnswer", "doCallRealMethod").build(), - Builder.forBDDMockito(WILL_RETURN) - .inCallChainsBeginningWith(GIVEN, WILL_RETURN, WILL_THROW, "will", "willDoNothing", "willAnswer", "willCallRealMethod").build(), - Builder.forMockito(THEN_RETURN) - .indexToStartInspectionAt(1) - .inCallChainsBeginningWith(WHEN).build(), - Builder.forMockedStatic(THEN_RETURN) - .indexToStartInspectionAt(1) - .inCallChainsBeginningWith(INSTANCE, WHEN).build() + private static final List RETURN_DESCRIPTORS = List.of( + Analyzer.forMockito(DO_RETURN) + .inCallChainsBeginningWithStatic(DO_RETURN, DO_THROW, "doNothing", "doAnswer", "doCallRealMethod").build(), + Analyzer.forBDDMockito(WILL_RETURN) + .inCallChainsBeginningWithStatic(GIVEN, WILL_RETURN, WILL_THROW, "will", "willDoNothing", "willAnswer", "willCallRealMethod").build(), + Analyzer.forMockito(THEN_RETURN) + .skippingAnalysisOfFirstCall() + .inCallChainsBeginningWithStatic(WHEN).build(), + Analyzer.forMockedStatic(THEN_RETURN) + .skippingAnalysisOfFirstCall() + .inCallChainsBeginningWithInstance(WHEN).build() ); @Override - protected List analysisDescriptors() { + protected List analyzers() { return RETURN_DESCRIPTORS; } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java index 6be538d..d3954e9 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java @@ -13,13 +13,12 @@ import static com.picimako.mockitools.StubbingApproach.BDDMOCKITO_WILL_X; import static com.picimako.mockitools.StubbingApproach.MOCKITO_DO_X; import static com.picimako.mockitools.StubbingApproach.MOCKITO_WHEN; -import static com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalysisDescriptor.MethodType.INSTANCE; import static com.picimako.mockitools.util.PsiMethodUtil.containsCallToNonDefaultConstructor; import static com.picimako.mockitools.util.PsiMethodUtil.getArguments; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiMethodCallExpression; -import com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalysisDescriptor.Builder; +import com.picimako.mockitools.inspection.consecutive.ConsecutiveCallAnalyzer.Analyzer; import com.picimako.mockitools.util.PsiMethodUtil; import org.jetbrains.annotations.NotNull; @@ -46,28 +45,28 @@ * @since 0.4.0 */ final class SimplifyConsecutiveThrowCallsInspection extends SimplifyConsecutiveCallsInspectionBase { - private static final List THROW_CALL_DESCRIPTORS = List.of( - Builder.forMockito(DO_THROW) - .exceptionStubbingVia(MOCKITO_DO_X.getExceptionStubber()) - .inCallChainsBeginningWith(DO_RETURN, DO_THROW, "doNothing", "doAnswer", "doCallRealMethod").build(), - Builder.forBDDMockito(WILL_THROW) - .exceptionStubbingVia(BDDMOCKITO_WILL_X.getExceptionStubber()) - .inCallChainsBeginningWith(WILL_THROW).build(), - Builder.forBDDMockito(WILL_THROW) - .exceptionStubbingVia(BDDMOCKITO_GIVEN.getExceptionStubber()) - .inCallChainsBeginningWith(GIVEN, WILL_RETURN, "will", "willDoNothing", "willAnswer", "willCallRealMethod").build(), - Builder.forMockito(THEN_THROW) - .exceptionStubbingVia(MOCKITO_WHEN.getExceptionStubber()) - .indexToStartInspectionAt(1) - .inCallChainsBeginningWith(WHEN).build(), - Builder.forMockedStatic(THEN_THROW) - .exceptionStubbingVia(MOCKITO_WHEN.getExceptionStubber()) - .indexToStartInspectionAt(1) - .inCallChainsBeginningWith(INSTANCE, WHEN).build() + private static final List THROW_CALL_DESCRIPTORS = List.of( + Analyzer.forMockito(DO_THROW) + .exceptionStubbingVia(MOCKITO_DO_X) + .inCallChainsBeginningWithStatic(DO_RETURN, DO_THROW, "doNothing", "doAnswer", "doCallRealMethod").build(), + Analyzer.forBDDMockito(WILL_THROW) + .exceptionStubbingVia(BDDMOCKITO_WILL_X) + .inCallChainsBeginningWithStatic(WILL_THROW).build(), + Analyzer.forBDDMockito(WILL_THROW) + .exceptionStubbingVia(BDDMOCKITO_GIVEN) + .inCallChainsBeginningWithStatic(GIVEN, WILL_RETURN, "will", "willDoNothing", "willAnswer", "willCallRealMethod").build(), + Analyzer.forMockito(THEN_THROW) + .exceptionStubbingVia(MOCKITO_WHEN) + .skippingAnalysisOfFirstCall() + .inCallChainsBeginningWithStatic(WHEN).build(), + Analyzer.forMockedStatic(THEN_THROW) + .exceptionStubbingVia(MOCKITO_WHEN) + .skippingAnalysisOfFirstCall() + .inCallChainsBeginningWithInstance(WHEN).build() ); @Override - protected List analysisDescriptors() { + protected List analyzers() { return THROW_CALL_DESCRIPTORS; } diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java index 1bd5ce7..9506835 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/ExceptionStubber.java @@ -14,7 +14,7 @@ import java.util.ArrayList; /** - * Descriptor for holding *Throw() call related information. + * Descriptor for holding {@code *Throw()} call related information. */ public final class ExceptionStubber { private static final CallMatcher[] CALL_MATCHER_EMPTY = new CallMatcher[0]; diff --git a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntentionTest.java index 7df2308..cb9cd63 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntentionTest.java @@ -1,4 +1,4 @@ -//Copyright 2023 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.picimako.mockitools.intention.convert.stub; From 829375e68371ac7416d3014831911dd6c5b32485 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sat, 7 Sep 2024 06:55:05 +0200 Subject: [PATCH 04/24] Further simplify consecutive call analysis logic --- .../ConsecutiveCallQuickFixContext.java | 47 ------------------- ...ext.java => ConsecutiveCallRegistrar.java} | 42 ++++++++++++++--- ...MergeConsecutiveStubbingCallsQuickFix.java | 22 ++++----- ...implifyConsecutiveCallsInspectionBase.java | 12 +++-- ...plifyConsecutiveReturnCallsInspection.java | 4 +- ...mplifyConsecutiveThrowCallsInspection.java | 12 ++--- 6 files changed, 61 insertions(+), 78 deletions(-) delete mode 100644 src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java rename src/main/java/com/picimako/mockitools/inspection/consecutive/{ConsecutiveCallRegistrarContext.java => ConsecutiveCallRegistrar.java} (55%) diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java deleted file mode 100644 index c29d202..0000000 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallQuickFixContext.java +++ /dev/null @@ -1,47 +0,0 @@ -//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - -package com.picimako.mockitools.inspection.consecutive; - -import static com.picimako.mockitools.util.PointersUtil.toPointers; - -import java.util.List; - -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiMethodCallExpression; -import com.intellij.psi.SmartPsiElementPointer; - -/** - * Data class to be used during quick fix application. - */ -class ConsecutiveCallQuickFixContext { - /** - * @see ConsecutiveCallAnalyzer#consecutiveMethodName - */ - final String consecutiveMethodName; - /** - * The indeces of the target section of consecutive calls within {@code callsInWholeChain}. - */ - final List consecutiveCallIndeces; - /** - * The list of {@code callsInWholeChain} as {@link SmartPsiElementPointer}s used within the quick fix. - */ - private final List> wholeChainPointers; - - public ConsecutiveCallQuickFixContext(ConsecutiveCallRegistrarContext registrar) { - this.consecutiveMethodName = registrar.consecutiveMethodName; - this.wholeChainPointers = toPointers(registrar.callsInWholeChain); - this.consecutiveCallIndeces = registrar.consecutiveCallIndeces; - } - - PsiMethodCallExpression getElement(int index) { - return wholeChainPointers.get(index).getElement(); - } - - PsiMethodCallExpression getFirstConsecutiveCall() { - return wholeChainPointers.get(consecutiveCallIndeces.get(0)).getElement(); - } - - VirtualFile getContainingFile() { - return wholeChainPointers.get(0).getVirtualFile(); - } -} diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrar.java similarity index 55% rename from src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java rename to src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrar.java index a111522..ab997e9 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrarContext.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/ConsecutiveCallRegistrar.java @@ -3,17 +3,20 @@ package com.picimako.mockitools.inspection.consecutive; import static com.google.common.collect.Iterables.getLast; +import static com.picimako.mockitools.util.PointersUtil.toPointers; -import java.util.List; - +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiMethodCallExpression; +import com.intellij.psi.SmartPsiElementPointer; import com.picimako.mockitools.inspection.stubbing.ExceptionStubber; import org.jetbrains.annotations.NotNull; +import java.util.List; + /** * Data class to be used during quick fix registration. */ -class ConsecutiveCallRegistrarContext { +class ConsecutiveCallRegistrar { /** * @see ConsecutiveCallAnalyzer#consecutiveMethodName */ @@ -30,10 +33,16 @@ class ConsecutiveCallRegistrarContext { * @see ConsecutiveCallAnalyzer#exceptionStubber */ private final ExceptionStubber exceptionStubber; + /** + * The list of {@code callsInWholeChain} as {@link SmartPsiElementPointer}s used within the respective quick fix. + *

    + * This is lazy-initialized, and instantiated only when {@code MergeConsecutiveStubbingCallsQuickFix} is actually called. + */ + private List> wholeChainPointers = null; - ConsecutiveCallRegistrarContext(@NotNull ConsecutiveCallAnalyzer analyzer, - @NotNull List callsInWholeChain, - @NotNull List consecutiveCallIndeces) { + ConsecutiveCallRegistrar(@NotNull ConsecutiveCallAnalyzer analyzer, + @NotNull List callsInWholeChain, + @NotNull List consecutiveCallIndeces) { consecutiveMethodName = analyzer.consecutiveMethodName; exceptionStubber = analyzer.exceptionStubber; this.callsInWholeChain = callsInWholeChain; @@ -54,4 +63,25 @@ boolean isCallToClasses(PsiMethodCallExpression call) { boolean isCallToThrowables(PsiMethodCallExpression call) { return exceptionStubber != null && exceptionStubber.throwablesMatcher.matches(call); } + + //For quick fixes + + PsiMethodCallExpression getElement(int index) { + initializePointersIfNotAlready(); + return wholeChainPointers.get(index).getElement(); + } + + PsiMethodCallExpression getFirstConsecutiveCall() { + initializePointersIfNotAlready(); + return wholeChainPointers.get(consecutiveCallIndeces.get(0)).getElement(); + } + + VirtualFile getContainingFile() { + initializePointersIfNotAlready(); + return wholeChainPointers.get(0).getVirtualFile(); + } + + private void initializePointersIfNotAlready() { + if (wholeChainPointers == null) wholeChainPointers = toPointers(callsInWholeChain); + } } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java index f426360..ee3a4ff 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java @@ -22,14 +22,14 @@ */ @RequiredArgsConstructor public class MergeConsecutiveStubbingCallsQuickFix extends InspectionGadgetsFix { - private final ConsecutiveCallQuickFixContext context; + private final ConsecutiveCallRegistrar registrar; private final TypeConversionMethod argumentTypeConverter; @Override public @IntentionName @NotNull String getName() { return switch (argumentTypeConverter) { case NO_CONVERSION, TO_THROWABLES_SIMPLE -> - MockitoolsBundle.message("quick.fix.merge.with.previous.consecutive.calls", context.consecutiveMethodName); + MockitoolsBundle.message("quick.fix.merge.with.previous.consecutive.calls", registrar.consecutiveMethodName); default -> MockitoolsBundle.message("quick.fix.merge.with.previous.consecutive.calls.and.convert.params", argumentTypeConverter.message); }; @@ -42,10 +42,10 @@ public class MergeConsecutiveStubbingCallsQuickFix extends InspectionGadgetsFix @Override protected void doFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) { - var firstConsecutiveCall = context.getFirstConsecutiveCall(); - var viewProvider = firstConsecutiveCall.getManager().findViewProvider(context.getContainingFile()); + var firstConsecutiveCall = registrar.getFirstConsecutiveCall(); + var viewProvider = firstConsecutiveCall.getManager().findViewProvider(registrar.getContainingFile()); if (viewProvider == null) return; - Document document = viewProvider.getDocument(); + var document = viewProvider.getDocument(); if (document == null) return; var documentManager = PsiDocumentManager.getInstance(project); @@ -54,9 +54,9 @@ protected void doFix(@NotNull Project project, @NotNull ProblemDescriptor descri expression.replace(argumentTypeConverter.convert(expression)); } //Merge arguments by adding them to the first consecutive call - context.consecutiveCallIndeces.stream() + registrar.consecutiveCallIndeces.stream() .skip(1) - .map(context::getElement) + .map(registrar::getElement) .flatMap(methodCall -> Arrays.stream(methodCall.getArgumentList().getExpressions())) .map(argumentTypeConverter::convert) .forEach(argument -> { @@ -67,11 +67,11 @@ protected void doFix(@NotNull Project project, @NotNull ProblemDescriptor descri documentManager.doPostponedOperationsAndUnblockDocument(document); //Remove the consecutive calls except the first one - for (int i = 1; i < context.consecutiveCallIndeces.size(); i++) { - Integer index = context.consecutiveCallIndeces.get(i); + for (int i = 1; i < registrar.consecutiveCallIndeces.size(); i++) { + Integer index = registrar.consecutiveCallIndeces.get(i); document.deleteString( - context.getElement(index - 1).getTextRange().getEndOffset(), - context.getElement(index).getTextRange().getEndOffset()); + registrar.getElement(index - 1).getTextRange().getEndOffset(), + registrar.getElement(index).getTextRange().getEndOffset()); documentManager.commitDocument(document); } } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java index 5cbebb3..0cb13b3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveCallsInspectionBase.java @@ -6,14 +6,15 @@ import static com.picimako.mockitools.util.PsiMethodUtil.getReferenceNameElement; import static com.siyeh.ig.psiutils.MethodCallUtils.getMethodName; +import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiMethodCallExpression; import com.intellij.util.SmartList; import com.picimako.mockitools.inspection.MockitoolsBaseInspection; import com.picimako.mockitools.resources.MockitoolsBundle; -import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; import java.util.List; import java.util.function.Predicate; @@ -81,14 +82,15 @@ protected Predicate extraCondition() { private void registerMultiple(ConsecutiveCallAnalyzer analyzer, List callsInWholeChain, List consecutiveCallIndeces, @NotNull ProblemsHolder holder) { if (consecutiveCallIndeces.size() > 1) { - register(new ConsecutiveCallRegistrarContext(analyzer, callsInWholeChain, consecutiveCallIndeces), holder); + register(new ConsecutiveCallRegistrar(analyzer, callsInWholeChain, consecutiveCallIndeces), holder); } } - protected abstract void register(ConsecutiveCallRegistrarContext context, @NotNull ProblemsHolder holder); + protected abstract void register(ConsecutiveCallRegistrar context, @NotNull ProblemsHolder holder); - protected void doRegister(ConsecutiveCallRegistrarContext registrar, @NotNull ProblemsHolder holder, InspectionGadgetsFix... quickFixes) { + protected void doRegister(ConsecutiveCallRegistrar registrar, @NotNull ProblemsHolder holder, TypeConversionMethod... typeConversionMethods) { holder.registerProblem(getReferenceNameElement(registrar.getLastConsecutiveCall()), - MockitoolsBundle.message("inspection.can.merge.with.previous.consecutive.calls", registrar.consecutiveMethodName), quickFixes); + MockitoolsBundle.message("inspection.can.merge.with.previous.consecutive.calls", registrar.consecutiveMethodName), + Arrays.stream(typeConversionMethods).map(method -> new MergeConsecutiveStubbingCallsQuickFix(registrar, method)).toArray(LocalQuickFix[]::new)); } } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java index dac0c42..8bba7ec 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveReturnCallsInspection.java @@ -47,7 +47,7 @@ protected List analyzers() { } @Override - protected void register(ConsecutiveCallRegistrarContext registrar, @NotNull ProblemsHolder holder) { - doRegister(registrar, holder, new MergeConsecutiveStubbingCallsQuickFix(new ConsecutiveCallQuickFixContext(registrar), TypeConversionMethod.NO_CONVERSION)); + protected void register(ConsecutiveCallRegistrar registrar, @NotNull ProblemsHolder holder) { + doRegister(registrar, holder, TypeConversionMethod.NO_CONVERSION); } } diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java index d3954e9..124d5a6 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/SimplifyConsecutiveThrowCallsInspection.java @@ -82,22 +82,20 @@ protected Predicate extraCondition() { * so they can choose the target type. */ @Override - protected void register(ConsecutiveCallRegistrarContext registrar, @NotNull ProblemsHolder holder) { + protected void register(ConsecutiveCallRegistrar registrar, @NotNull ProblemsHolder holder) { switch (determineParamCombination(registrar)) { case CLASSES, THROWABLES -> - doRegister(registrar, holder, new MergeConsecutiveStubbingCallsQuickFix(new ConsecutiveCallQuickFixContext(registrar), TypeConversionMethod.NO_CONVERSION)); + doRegister(registrar, holder, TypeConversionMethod.NO_CONVERSION); case MIXED_WITH_THROWABLES_PREFERRED -> - doRegister(registrar, holder, new MergeConsecutiveStubbingCallsQuickFix(new ConsecutiveCallQuickFixContext(registrar), TypeConversionMethod.TO_THROWABLES_SIMPLE)); - case MIXED -> doRegister(registrar, holder, - new MergeConsecutiveStubbingCallsQuickFix(new ConsecutiveCallQuickFixContext(registrar), TypeConversionMethod.TO_CLASSES), - new MergeConsecutiveStubbingCallsQuickFix(new ConsecutiveCallQuickFixContext(registrar), TypeConversionMethod.TO_THROWABLES)); + doRegister(registrar, holder, TypeConversionMethod.TO_THROWABLES_SIMPLE); + case MIXED -> doRegister(registrar, holder, TypeConversionMethod.TO_CLASSES, TypeConversionMethod.TO_THROWABLES); } } /** * Determines the combination of parameter types specified in the *Throw() calls. */ - private ThrowStubParameterCombination determineParamCombination(ConsecutiveCallRegistrarContext registrar) { + private ThrowStubParameterCombination determineParamCombination(ConsecutiveCallRegistrar registrar) { boolean hasClasses = false; boolean hasThrowables = false; boolean isThereNonDefaultNewExpressionArg = false; From 427e0663e2407655e821a20df4edb6a4b775fc9d Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sat, 7 Sep 2024 07:36:55 +0200 Subject: [PATCH 05/24] Simplify a couple of inspections and intentions --- .../mockitools/EnforceConventionUtil.java | 3 - .../captor/CaptorFieldBaseQuickFix.java | 20 ------ .../CaptorFieldInitializationInspection.java | 9 ++- ...orFieldOfTypeArgumentCaptorInspection.java | 12 +++- ...ckSpiedInstanceTypeMismatchInspection.java | 5 +- .../stubbing/EnforceConventionInspection.java | 1 - ...AndMethodReturnTypeMismatchInspection.java | 3 +- .../SingleInOrderVerificationInspection.java | 39 ++++++----- ...edMockInInOrderVerificationInspection.java | 66 +++++++++---------- ...tionModeValuesBetweenLimitsInspection.java | 10 +-- .../ConvertFromBDDMockitoGivenIntention.java | 14 ++-- .../ConvertFromBDDMockitoWillIntention.java | 13 ++-- .../stub/ConvertFromMockitoDoIntention.java | 13 ++-- .../stub/ConvertFromMockitoWhenIntention.java | 10 ++- .../convert/stub/ConvertStubbingAction.java | 5 +- ...forceConventionAwareIntentionTestBase.java | 3 +- 16 files changed, 115 insertions(+), 111 deletions(-) delete mode 100644 src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java diff --git a/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java b/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java index 54548d2..fc65810 100644 --- a/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java +++ b/src/main/java/com/picimako/mockitools/EnforceConventionUtil.java @@ -12,9 +12,6 @@ */ public final class EnforceConventionUtil { - /** - * @see EnforceConventionInspection#SHORT_NAME - */ public static final String ENFORCE_CONVENTION_INSPECTION_SHORT_NAME = "EnforceConvention"; /** diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java deleted file mode 100644 index 658c340..0000000 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldBaseQuickFix.java +++ /dev/null @@ -1,20 +0,0 @@ -//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - -package com.picimako.mockitools.inspection.captor; - -import com.intellij.codeInspection.util.IntentionFamilyName; -import com.siyeh.ig.InspectionGadgetsFix; -import org.jetbrains.annotations.NotNull; - -import com.picimako.mockitools.resources.MockitoolsBundle; - -/** - * Base class for {@code @Captor} field related quick fixes. - */ -public abstract class CaptorFieldBaseQuickFix extends InspectionGadgetsFix { - - @Override - public @IntentionFamilyName @NotNull String getFamilyName() { - return MockitoolsBundle.message("quick.fix.captor.field.family.name"); - } -} diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java index 14a4195..8bb0ea3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java @@ -9,11 +9,13 @@ import com.intellij.codeInspection.LocalInspectionToolSession; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionName; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiField; import com.picimako.mockitools.inspection.MockitoolsBaseInspection; +import com.siyeh.ig.InspectionGadgetsFix; import org.jetbrains.annotations.NotNull; import com.picimako.mockitools.resources.MockitoolsBundle; @@ -47,13 +49,18 @@ protected void checkField(PsiField field, @NotNull ProblemsHolder holder) { } } - private static final class RemoveArgumentCaptorInitQuickFix extends CaptorFieldBaseQuickFix { + private static final class RemoveArgumentCaptorInitQuickFix extends InspectionGadgetsFix { @Override public @IntentionName @NotNull String getName() { return MockitoolsBundle.message("quick.fix.captor.field.remove.init"); } + @Override + public @IntentionFamilyName @NotNull String getFamilyName() { + return MockitoolsBundle.message("quick.fix.captor.field.family.name"); + } + @Override protected void doFix(@NotNull Project project, ProblemDescriptor descriptor) { descriptor.getPsiElement().delete(); diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java index d6894fe..f98bc62 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldOfTypeArgumentCaptorInspection.java @@ -10,6 +10,7 @@ import com.intellij.codeInspection.LocalInspectionToolSession; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionName; import com.intellij.openapi.project.Project; import com.intellij.psi.JavaPsiFacade; @@ -20,9 +21,9 @@ import com.intellij.psi.PsiType; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.picimako.mockitools.inspection.MockitoolsBaseInspection; -import org.jetbrains.annotations.NotNull; - import com.picimako.mockitools.resources.MockitoolsBundle; +import com.siyeh.ig.InspectionGadgetsFix; +import org.jetbrains.annotations.NotNull; /** * Fields that are annotated as {@code @Captor} must have {@code ArgumentCaptor} as their type, otherwise Mockito will fail @@ -54,13 +55,18 @@ protected void checkField(PsiField field, @NotNull ProblemsHolder holder) { *

    * With that said, it imports {@code org.mockito.ArgumentCaptor} upon applying the quick fix. */ - private static final class ConvertFieldTypeToArgumentCaptorQuickFix extends CaptorFieldBaseQuickFix { + private static final class ConvertFieldTypeToArgumentCaptorQuickFix extends InspectionGadgetsFix { @Override public @IntentionName @NotNull String getName() { return MockitoolsBundle.message("quick.fix.captor.field.convert.to.argumentcaptor"); } + @Override + public @IntentionFamilyName @NotNull String getFamilyName() { + return MockitoolsBundle.message("quick.fix.captor.field.family.name"); + } + @Override protected void doFix(@NotNull Project project, ProblemDescriptor descriptor) { var context = descriptor.getPsiElement().getContext(); diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java index 8764e03..84cc2e9 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/MockSpiedInstanceTypeMismatchInspection.java @@ -44,9 +44,8 @@ protected void checkMethodCallExpression(PsiMethodCallExpression expression, @No if (SPIED_INSTANCE.equals(getMethodName(settingsCall)) && hasArgument(settingsCall) //e.g. spiedInstance(someObject) && getFirstArgument(settingsCall) instanceof PsiNewExpression spiedInstance) { //e.g. someObject - var mockTypeArg = getFirstArgument(expression); - if (mockTypeArg instanceof PsiClassObjectAccessExpression mockTypeAsClassAccess - && !Objects.equals(getRawType(mockTypeAsClassAccess.getOperand().getType()), getRawType(spiedInstance.getType()))) { + if (getFirstArgument(expression) instanceof PsiClassObjectAccessExpression mockTypeArg + && !Objects.equals(getRawType(mockTypeArg.getOperand().getType()), getRawType(spiedInstance.getType()))) { holder.registerProblem(mockTypeArg, MockitoolsBundle.message("inspection.mock.type.spied.instance.type.mismatch")); } break; //Found the 'spiedInstance()' method, further inspection of the call chain is not needed. diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java index a42e9cc..50233b2 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/EnforceConventionInspection.java @@ -43,7 +43,6 @@ * @since 0.4.0 */ public final class EnforceConventionInspection extends MockitoolsBaseInspection { - public static final String SHORT_NAME = "EnforceConvention"; //MockedStatic specific verify() methods are excluded, since BDDMockito has no way to verify MockedStatic public static final CallMatcher IN_ORDER_VERIFY_NON_MOCKED_STATIC = CallMatcher.anyOf( INORDER_VERIFY.parameterTypes("T"), diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java index ab2846e..bf9e280 100644 --- a/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/StubbingAndMethodReturnTypeMismatchInspection.java @@ -41,7 +41,8 @@ final class StubbingAndMethodReturnTypeMismatchInspection extends MockitoolsBase @Override protected void checkMethodCallExpression(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { - if (MOCKITO_DO_X.isAnyOfStubs(expression)) checkAndRegister("doNothing", "doReturn", MOCKITO_DO_X, expression, holder); + if (MOCKITO_DO_X.isAnyOfStubs(expression)) + checkAndRegister("doNothing", "doReturn", MOCKITO_DO_X, expression, holder); else if (BDDMOCKITO_WILL_X.isAnyOfStubs(expression)) checkAndRegister("willDoNothing", "willReturn", BDDMOCKITO_WILL_X, expression, holder); } diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java index 056de06..26a8298 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/SingleInOrderVerificationInspection.java @@ -29,28 +29,27 @@ final class SingleInOrderVerificationInspection extends LocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session) { - if (isInTestSourceContent(session.getFile())) { - return new JavaElementVisitor() { - @Override - public void visitLocalVariable(@NotNull PsiLocalVariable variable) { - if (!typeEquals(ORG_MOCKITO_INORDER, variable.getType())) return; + if (!isInTestSourceContent(session.getFile())) return PsiElementVisitor.EMPTY_VISITOR; - var inOrderRefs = ReferencesSearch.search(variable).findAll(); - //If there is only one reference to/usage of the InOrder variable - if (inOrderRefs.size() == 1) { - var ref = inOrderRefs.iterator().next(); - if (ref instanceof PsiReferenceExpression inOrderRef) { - var verifyOrShould = getParentOfType(inOrderRef, PsiMethodCallExpression.class); - //If the only usage is a method call to InOrder.verify() or BDDMockito.should(InOrder) - if (VerificationApproach.INORDER_VERIFY.isVerifiedBy(verifyOrShould) || VerificationApproach.BDDMOCKITO_THEN_SHOULD.isInOrderSpecific(verifyOrShould)) - holder.registerProblem(variable.getNameIdentifier(), MockitoolsBundle.message("inspection.in.order.is.used.only.once")); - } - } + return new JavaElementVisitor() { + @Override + public void visitLocalVariable(@NotNull PsiLocalVariable variable) { + if (!typeEquals(ORG_MOCKITO_INORDER, variable.getType())) return; - super.visitLocalVariable(variable); + var inOrderRefs = ReferencesSearch.search(variable).findAll(); + //If there is only one reference to/usage of the InOrder variable + if (inOrderRefs.size() == 1) { + var ref = inOrderRefs.iterator().next(); + if (ref instanceof PsiReferenceExpression inOrderRef) { + var verifyOrShould = getParentOfType(inOrderRef, PsiMethodCallExpression.class); + //If the only usage is a method call to InOrder.verify() or BDDMockito.should(InOrder) + if (VerificationApproach.INORDER_VERIFY.isVerifiedBy(verifyOrShould) || VerificationApproach.BDDMOCKITO_THEN_SHOULD.isInOrderSpecific(verifyOrShould)) + holder.registerProblem(variable.getNameIdentifier(), MockitoolsBundle.message("inspection.in.order.is.used.only.once")); + } } - }; - } - return PsiElementVisitor.EMPTY_VISITOR; + + super.visitLocalVariable(variable); + } + }; } } diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java index 653dd32..9872414 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/UnusedOrUnconfiguredMockInInOrderVerificationInspection.java @@ -45,45 +45,45 @@ final class UnusedOrUnconfiguredMockInInOrderVerificationInspection extends LocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session) { - if (isInTestSourceContent(session.getFile())) { - return new JavaElementVisitor() { - @Override - public void visitLocalVariable(@NotNull PsiLocalVariable variable) { - if (!typeEquals(ORG_MOCKITO_INORDER, variable.getType()) || !(variable.getInitializer() instanceof PsiMethodCallExpression)) return; + if (!isInTestSourceContent(session.getFile())) return PsiElementVisitor.EMPTY_VISITOR; - var inOrderRefs = ReferencesSearch.search(variable).toArray(PsiReference.EMPTY_ARRAY); - if (inOrderRefs.length > 0 && areAllVerifications(inOrderRefs)) { - var mocksInVerifications = collectMocksInVerifications(inOrderRefs); - var mockitoInOrder = (PsiMethodCallExpression) variable.getInitializer(); - //The mock arguments in 'Mockito.inOrder()' - var mocksInMockitoInOrder = getArguments(mockitoInOrder); + return new JavaElementVisitor() { + @Override + public void visitLocalVariable(@NotNull PsiLocalVariable variable) { + if (!typeEquals(ORG_MOCKITO_INORDER, variable.getType()) || !(variable.getInitializer() instanceof PsiMethodCallExpression)) + return; - //The mock arguments from each 'InOrder.verify()' and 'BDDMockito.then().should(InOrder)' call - var mocksInVerificationsAsString = mocksInVerifications.stream().map(PsiElement::getText).toList(); - //Report all mocks in 'Mockito.inOrder()' that are not used in a verification - for (var mockInInOrder : mocksInMockitoInOrder) { - //Exclude Type.class-type arguments that are (most probably) used in MockedStatic verifications - if (mockInInOrder instanceof PsiClassObjectAccessExpression) continue; - if (!mocksInVerificationsAsString.contains(mockInInOrder.getText())) - holder.registerProblem(mockInInOrder, MockitoolsBundle.message("inspection.no.in.order.verification.for.mock")); - } + var inOrderRefs = ReferencesSearch.search(variable).toArray(PsiReference.EMPTY_ARRAY); + if (inOrderRefs.length > 0 && areAllVerifications(inOrderRefs)) { + var mockitoInOrder = (PsiMethodCallExpression) variable.getInitializer(); + //The mock arguments in 'Mockito.inOrder()' + var mocksInMockitoInOrder = getArguments(mockitoInOrder); - //The mock arguments as Strings from 'Mockito.inOrder()' - var mocksInMockitoInOrderAsString = Arrays.stream(mocksInMockitoInOrder).map(PsiElement::getText).toList(); - //Report all mocks in verifications that are not configured in 'Mockito.inOrder()' - //This corresponds to the 'inOrderRequiresFamiliarMock()' method in - // https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java - for (var mockInVerification : mocksInVerifications) { - if (!mocksInMockitoInOrderAsString.contains(mockInVerification.getText())) - holder.registerProblem(mockInVerification, MockitoolsBundle.message("inspection.mock.is.not.configured.in.in.order")); - } + var mocksInVerifications = collectMocksInVerifications(inOrderRefs); + //The mock arguments from each 'InOrder.verify()' and 'BDDMockito.then().should(InOrder)' call + var mocksInVerificationsAsString = mocksInVerifications.stream().map(PsiElement::getText).toList(); + //Report all mocks in 'Mockito.inOrder()' that are not used in a verification + for (var mockInInOrder : mocksInMockitoInOrder) { + //Exclude Type.class-type arguments that are (most probably) used in MockedStatic verifications + if (mockInInOrder instanceof PsiClassObjectAccessExpression) continue; + if (!mocksInVerificationsAsString.contains(mockInInOrder.getText())) + holder.registerProblem(mockInInOrder, MockitoolsBundle.message("inspection.no.in.order.verification.for.mock")); } - super.visitLocalVariable(variable); + //The mock arguments as Strings from 'Mockito.inOrder()' + var mocksInMockitoInOrderAsString = Arrays.stream(mocksInMockitoInOrder).map(PsiElement::getText).toList(); + //Report all mocks in verifications that are not configured in 'Mockito.inOrder()' + //This corresponds to the 'inOrderRequiresFamiliarMock()' method in + // https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java + for (var mockInVerification : mocksInVerifications) { + if (!mocksInMockitoInOrderAsString.contains(mockInVerification.getText())) + holder.registerProblem(mockInVerification, MockitoolsBundle.message("inspection.mock.is.not.configured.in.in.order")); + } } - }; - } - return PsiElementVisitor.EMPTY_VISITOR; + + super.visitLocalVariable(variable); + } + }; } /** diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java index 7c43230..4852a17 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/VerificationModeValuesBetweenLimitsInspection.java @@ -65,9 +65,9 @@ protected void checkMethodCallExpression(PsiMethodCallExpression expression, @No else if (isCalls(expression)) checkIntegerArgumentValue(1, expression, holder); else if (isAfter(expression)) - checkLongArgumentValue(0L, expression, false, holder); + checkLongArgumentValue(expression, false, holder); else if (isTimeout(expression)) - checkLongArgumentValue(0L, expression, true, holder); + checkLongArgumentValue(expression, true, holder); } private void checkIntegerArgumentValue(int upperLimit, PsiMethodCallExpression methodCall, @NotNull ProblemsHolder holder) { @@ -80,14 +80,14 @@ private void checkIntegerArgumentValue(int upperLimit, PsiMethodCallExpression m } } - private void checkLongArgumentValue(long upperLimit, PsiMethodCallExpression methodCall, boolean isTimeout, @NotNull ProblemsHolder holder) { + private void checkLongArgumentValue(PsiMethodCallExpression methodCall, boolean isTimeout, @NotNull ProblemsHolder holder) { var verificationModeArgument = getFirstArgument(methodCall); Long argValue = PsiLiteralUtil.parseLong(verificationModeArgument.getText()); if (argValue != null) { - if (argValue < upperLimit) { + if (argValue < 0L /*upper limit*/) { holder.registerProblem(verificationModeArgument, - MockitoolsBundle.message("inspection.verification.mode.value.less.than.allowed", getMethodName(methodCall), upperLimit)); + MockitoolsBundle.message("inspection.verification.mode.value.less.than.allowed", getMethodName(methodCall), 0L)); } if (isTimeout && argValue > timeoutMaxThreshold) { holder.registerProblem(verificationModeArgument, MockitoolsBundle.message("inspection.timeout.value.more.than.allowed", timeoutMaxThreshold)); diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java index 81bab0d..3fc7b32 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoGivenIntention.java @@ -6,6 +6,7 @@ import static com.picimako.mockitools.EnforceConventionUtil.isBDDMockitoEnforced; import static com.picimako.mockitools.EnforceConventionUtil.isMockitoEnforced; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_BDDMOCKITO; +import static com.picimako.mockitools.StubbingApproach.BDDMOCKITO_GIVEN; import static com.picimako.mockitools.intention.convert.stub.DoesntContainUnsupportedMethod.DOESNT_CONTAIN_WILL; import com.intellij.openapi.actionSystem.AnAction; @@ -33,8 +34,7 @@ public ConvertFromBDDMockitoGivenIntention() { @Override public boolean isAvailableFor(PsiMethodCallExpression methodCall) { - return StubbingApproach.BDDMOCKITO_GIVEN.isStubbedBy(methodCall) - && StubbingApproach.BDDMOCKITO_GIVEN.isValid(methodCall); + return BDDMOCKITO_GIVEN.isStubbedBy(methodCall) && BDDMOCKITO_GIVEN.isValid(methodCall); } @Override @@ -43,13 +43,17 @@ public List actionSelectionOptions(Editor editor, PsiFile file) { var actions = new ArrayList(3); if (!isBDDMockitoEnforced(file)) { if (doAllCallChainsMatch(DOESNT_CONTAIN_WILL, isBulkMode, editor, file)) { - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_GIVEN, StubbingApproach.MOCKITO_DO_X, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_DO_X, isBulkMode); } - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_GIVEN, StubbingApproach.MOCKITO_WHEN, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_WHEN, isBulkMode); } if (!isMockitoEnforced(file)) { - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_GIVEN, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode)); + addConversion(actions, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode); } return actions; } + + private void addConversion(List actions, StubbingApproach targetApproach, boolean isBulkMode) { + actions.add(new ConvertStubbingAction(BDDMOCKITO_GIVEN, targetApproach, isBulkMode)); + } } diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java index b9804d5..fe7db8a 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromBDDMockitoWillIntention.java @@ -6,6 +6,7 @@ import static com.picimako.mockitools.EnforceConventionUtil.isBDDMockitoEnforced; import static com.picimako.mockitools.EnforceConventionUtil.isMockitoEnforced; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_BDDMOCKITO; +import static com.picimako.mockitools.StubbingApproach.BDDMOCKITO_WILL_X; import static com.picimako.mockitools.intention.convert.stub.DoesntContainUnsupportedMethod.DOESNT_CONTAIN_WILL; import static com.picimako.mockitools.intention.convert.stub.DoesntContainUnsupportedMethod.DOESNT_CONTAIN_WILL_DO_NOTHING; import static com.picimako.mockitools.util.PsiMethodUtil.collectCallsInChainFromFirst; @@ -35,7 +36,7 @@ public ConvertFromBDDMockitoWillIntention() { @Override public boolean isAvailableFor(PsiMethodCallExpression methodCall) { - return StubbingApproach.BDDMOCKITO_WILL_X.isAnyOfStubs(methodCall) && StubbingApproach.BDDMOCKITO_WILL_X.isValid(collectCallsInChainFromFirst(methodCall)); + return BDDMOCKITO_WILL_X.isAnyOfStubs(methodCall) && BDDMOCKITO_WILL_X.isValid(collectCallsInChainFromFirst(methodCall)); } @Override @@ -44,13 +45,17 @@ public List actionSelectionOptions(Editor editor, PsiFile file) { var actions = new ArrayList(3); if (!isBDDMockitoEnforced(file)) { if (doAllCallChainsMatch(DOESNT_CONTAIN_WILL, isBulkMode, editor, file)) - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_WILL_X, StubbingApproach.MOCKITO_DO_X, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_DO_X, isBulkMode); if (doAllCallChainsMatch(DOESNT_CONTAIN_WILL_DO_NOTHING, isBulkMode, editor, file)) - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_WILL_X, StubbingApproach.MOCKITO_WHEN, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_WHEN, isBulkMode); } if (!isMockitoEnforced(file) && doAllCallChainsMatch(DOESNT_CONTAIN_WILL_DO_NOTHING, isBulkMode, editor, file)) { - actions.add(new ConvertStubbingAction(StubbingApproach.BDDMOCKITO_WILL_X, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode)); + addConversion(actions, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode); } return !actions.isEmpty() ? actions : NO_ACTION_AVAILABLE; } + + private void addConversion(List actions, StubbingApproach targetApproach, boolean isBulkMode) { + actions.add(new ConvertStubbingAction(BDDMOCKITO_WILL_X, targetApproach, isBulkMode)); + } } diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java index 4dda507..14257d1 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoDoIntention.java @@ -5,6 +5,7 @@ import static com.picimako.mockitools.EnforceConventionUtil.isBDDMockitoEnforced; import static com.picimako.mockitools.EnforceConventionUtil.isMockitoEnforced; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCKITO; +import static com.picimako.mockitools.StubbingApproach.MOCKITO_DO_X; import static com.picimako.mockitools.intention.convert.stub.DoesntContainUnsupportedMethod.DOESNT_CONTAIN_DO_NOTHING; import static com.picimako.mockitools.util.PsiMethodUtil.collectCallsInChainFromFirst; @@ -34,7 +35,7 @@ public ConvertFromMockitoDoIntention() { @Override public boolean isAvailableFor(PsiMethodCallExpression methodCall) { - return StubbingApproach.MOCKITO_DO_X.isAnyOfStubs(methodCall) && StubbingApproach.MOCKITO_DO_X.isValid(collectCallsInChainFromFirst(methodCall)); + return MOCKITO_DO_X.isAnyOfStubs(methodCall) && MOCKITO_DO_X.isValid(collectCallsInChainFromFirst(methodCall)); } @Override @@ -42,13 +43,17 @@ public List actionSelectionOptions(Editor editor, PsiFile file) { boolean isBulkMode = ReadAction.compute(() -> editor.getSelectionModel().hasSelection()); var actions = new ArrayList(3); if (!isBDDMockitoEnforced(file) && doAllCallChainsMatch(DOESNT_CONTAIN_DO_NOTHING, isBulkMode, editor, file)) { - actions.add(new ConvertStubbingAction(StubbingApproach.MOCKITO_DO_X, StubbingApproach.MOCKITO_WHEN, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_WHEN, isBulkMode); } if (!isMockitoEnforced(file)) { - actions.add(new ConvertStubbingAction(StubbingApproach.MOCKITO_DO_X, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode)); + addConversion(actions, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode); if (doAllCallChainsMatch(DOESNT_CONTAIN_DO_NOTHING, isBulkMode, editor, file)) - actions.add(new ConvertStubbingAction(StubbingApproach.MOCKITO_DO_X, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode)); + addConversion(actions, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode); } return actions; } + + private void addConversion(List actions, StubbingApproach targetApproach, boolean isBulkMode) { + actions.add(new ConvertStubbingAction(MOCKITO_DO_X, targetApproach, isBulkMode)); + } } diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java index 78a1172..c642563 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertFromMockitoWhenIntention.java @@ -42,12 +42,16 @@ public List actionSelectionOptions(Editor editor, PsiFile file) { boolean isBulkMode = ReadAction.compute(() -> editor.getSelectionModel().hasSelection()); var actions = new ArrayList(3); if (!isBDDMockitoEnforced(file) && doAllCallChainsMatch(DOESNT_CONTAIN_THEN, isBulkMode, editor, file)) { - actions.add(new ConvertStubbingAction(MOCKITO_WHEN, StubbingApproach.MOCKITO_DO_X, isBulkMode)); + addConversion(actions, StubbingApproach.MOCKITO_DO_X, isBulkMode); } if (!isMockitoEnforced(file)) { - actions.add(new ConvertStubbingAction(MOCKITO_WHEN, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode)); - actions.add(new ConvertStubbingAction(MOCKITO_WHEN, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode)); + addConversion(actions, StubbingApproach.BDDMOCKITO_GIVEN, isBulkMode); + addConversion(actions, StubbingApproach.BDDMOCKITO_WILL_X, isBulkMode); } return actions; } + + private void addConversion(List actions, StubbingApproach targetApproach, boolean isBulkMode) { + actions.add(new ConvertStubbingAction(MOCKITO_WHEN, targetApproach, isBulkMode)); + } } diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java index 6e8536b..7bf274c 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java @@ -95,9 +95,6 @@ private void performActionInBulk(List statementsInSelect @Nullable public static PsiMethodCallExpression getFirstCallInChain(PsiExpressionStatement statement) { - return Optional.of(statement) - .map(stmt -> findChildOfType(stmt, PsiIdentifier.class)) - .map(identifier -> getParentOfType(identifier, PsiMethodCallExpression.class)) - .orElse(null); + return getParentOfType(/*identifier*/ findChildOfType(statement, PsiIdentifier.class), PsiMethodCallExpression.class); } } diff --git a/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java b/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java index 3485bb7..310db54 100644 --- a/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java +++ b/src/test/java/com/picimako/mockitools/intention/convert/EnforceConventionAwareIntentionTestBase.java @@ -7,6 +7,7 @@ import com.intellij.testFramework.InspectionsKt; import com.picimako.mockitools.Convention; +import com.picimako.mockitools.EnforceConventionUtil; import com.picimako.mockitools.inspection.stubbing.EnforceConventionInspection; import com.picimako.mockitools.intention.MockitoolsIntentionTestBase; @@ -21,6 +22,6 @@ protected void addEnforceConventionInspection(Convention convention) { inspection.conventionToEnforce = convention; InspectionsKt.disableAllTools(profile); profile.addTool(getFixture().getProject(), new LocalInspectionToolWrapper(inspection), null); - profile.enableTool(EnforceConventionInspection.SHORT_NAME, getFixture().getProject()); + profile.enableTool(EnforceConventionUtil.ENFORCE_CONVENTION_INSPECTION_SHORT_NAME, getFixture().getProject()); } } From 458cb0c8789646e141c7f962e7488110abb887e0 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sun, 8 Sep 2024 07:21:32 +0200 Subject: [PATCH 06/24] Move to lazy initialization some of the CallMatchers that target potentially less frequently used Mockito methods --- .../picimako/mockitools/MockitoolsPsiUtil.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java b/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java index d55a09e..c7db77f 100644 --- a/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java +++ b/src/main/java/com/picimako/mockitools/MockitoolsPsiUtil.java @@ -3,6 +3,7 @@ package com.picimako.mockitools; import static com.intellij.openapi.application.ReadAction.compute; +import static com.intellij.openapi.util.NotNullLazyValue.lazy; import static com.picimako.mockitools.MockitoQualifiedNames.AFTER; import static com.picimako.mockitools.MockitoQualifiedNames.CALLS; import static com.picimako.mockitools.MockitoQualifiedNames.EXTRA_INTERFACES; @@ -26,6 +27,7 @@ import static com.siyeh.ig.callMatcher.CallMatcher.staticCall; import static com.siyeh.ig.psiutils.MethodCallUtils.getMethodName; +import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiMethodCallExpression; @@ -48,10 +50,10 @@ public final class MockitoolsPsiUtil { private static final CallMatcher MOCKITO_TIMES = staticCall(ORG_MOCKITO_MOCKITO, TIMES).parameterCount(1); private static final CallMatcher MOCKITO_CALLS = staticCall(ORG_MOCKITO_MOCKITO, CALLS).parameterCount(1); private static final CallMatcher MOCKITO_AFTER = staticCall(ORG_MOCKITO_MOCKITO, AFTER).parameterCount(1); - private static final CallMatcher MOCKITO_TIMEOUT = staticCall(ORG_MOCKITO_MOCKITO, TIMEOUT).parameterCount(1); - private static final CallMatcher MOCKITO_RESET = staticCall(ORG_MOCKITO_MOCKITO, RESET); - private static final CallMatcher MOCKED_STATIC_RESET = instanceCall(ORG_MOCKITO_MOCKED_STATIC, RESET); - private static final CallMatcher MOCKITO_IGNORE_STUBS = staticCall(ORG_MOCKITO_MOCKITO, IGNORE_STUBS); + private static final NotNullLazyValue MOCKITO_TIMEOUT = lazy(() -> staticCall(ORG_MOCKITO_MOCKITO, TIMEOUT).parameterCount(1)); + private static final NotNullLazyValue MOCKITO_RESET = lazy(() -> staticCall(ORG_MOCKITO_MOCKITO, RESET)); + private static final NotNullLazyValue MOCKED_STATIC_RESET = lazy(() -> instanceCall(ORG_MOCKITO_MOCKED_STATIC, RESET)); + private static final NotNullLazyValue MOCKITO_IGNORE_STUBS = lazy(() -> staticCall(ORG_MOCKITO_MOCKITO, IGNORE_STUBS)); public static final CallMatcher.Simple MOCKITO_VERIFY = staticCall(ORG_MOCKITO_MOCKITO, VERIFY); public static final CallMatcher.Simple INORDER_VERIFY = instanceCall(ORG_MOCKITO_INORDER, VERIFY); public static final CallMatcher.Simple MOCKED_STATIC_VERIFY = instanceCall(ORG_MOCKITO_MOCKED_STATIC, VERIFY); @@ -158,7 +160,7 @@ public static boolean isAfter(PsiMethodCallExpression methodCall) { * @return true if the method is a Mockito.timeout, false otherwise */ public static boolean isTimeout(PsiMethodCallExpression methodCall) { - return compute(() -> MOCKITO_TIMEOUT.matches(methodCall)); + return compute(() -> MOCKITO_TIMEOUT.get().matches(methodCall)); } /** @@ -178,7 +180,7 @@ public static boolean isExtraInterfaces(PsiMethodCallExpression methodCall) { * @return true if the method is a Mockito.reset, false otherwise */ public static boolean isReset(PsiMethodCallExpression methodCall) { - return compute(() -> MOCKITO_RESET.matches(methodCall)); + return compute(() -> MOCKITO_RESET.get().matches(methodCall)); } /** @@ -188,7 +190,7 @@ public static boolean isReset(PsiMethodCallExpression methodCall) { * @return true if the method is a MockedStatic.reset, false otherwise */ public static boolean isMockedStaticReset(PsiMethodCallExpression methodCall) { - return compute(() -> MOCKED_STATIC_RESET.matches(methodCall)); + return compute(() -> MOCKED_STATIC_RESET.get().matches(methodCall)); } /** @@ -198,7 +200,7 @@ public static boolean isMockedStaticReset(PsiMethodCallExpression methodCall) { * @return true if the method is a Mockito.ignoreStubs, false otherwise */ public static boolean isIgnoreStubs(PsiMethodCallExpression methodCall) { - return compute(() -> MOCKITO_IGNORE_STUBS.matches(methodCall)); + return compute(() -> MOCKITO_IGNORE_STUBS.get().matches(methodCall)); } /** From eed7b6b5933c7f40bc4169002631a252b664e0a3 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sun, 8 Sep 2024 19:31:20 +0200 Subject: [PATCH 07/24] Recognize 'Mockito.mock()/spy()'-created objects when passed into 'Mockito.spy()' --- CHANGELOG.md | 5 +++ docs/mock_creation.md | 2 -- .../mocking/SpyOnMockInspection.java | 31 ++++++++++++------- .../testData/inspection/SpyingOnMock.java | 2 +- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac3ade..34428af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ ## [Unreleased] +## [1.3.0] +### Added +- The inspection reporting spy creation on a mock object now also recognizes passed in mock objects when they are created +either with `Mockito.mock()` or `Mockito.spy()`. + ## [1.2.0] ### Changed - New support range of IDEs: 2023.3-2024.2-EAP. diff --git a/docs/mock_creation.md b/docs/mock_creation.md index 72463be..001e310 100644 --- a/docs/mock_creation.md +++ b/docs/mock_creation.md @@ -150,8 +150,6 @@ class SpyOnMockTest { The corresponding feature was introduced in [Mockito 5.4.0](https://github.com/mockito/mockito/releases/tag/v5.4.0), but this inspection does not do a library version check, and validates test code regardless of the Mockito version. -**NOTE:** variables with `Mockito.mock()` initializers passed into `Mockito.spy()` are not recognized as mocks yet. - ---- ## Mock/Spy creation without specifying class diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java index 5ab9e7f..6f16841 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java @@ -2,27 +2,29 @@ package com.picimako.mockitools.inspection.mocking; +import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCK; +import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCKITO; +import static com.picimako.mockitools.MockitoQualifiedNames.SPY; +import static com.picimako.mockitools.MockitoolsPsiUtil.isMockitoMock; +import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; +import static com.siyeh.ig.callMatcher.CallMatcher.staticCall; + import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiField; +import com.intellij.psi.PsiLocalVariable; import com.intellij.psi.PsiMethodCallExpression; import com.intellij.psi.PsiReferenceExpression; +import com.picimako.mockitools.dsl.MockObject; import com.picimako.mockitools.inspection.MockitoolsBaseInspection; import com.picimako.mockitools.resources.MockitoolsBundle; import com.siyeh.ig.callMatcher.CallMatcher; import org.jetbrains.annotations.NotNull; -import static com.picimako.mockitools.MockitoQualifiedNames.*; -import static com.picimako.mockitools.MockitoolsPsiUtil.isMockitoMock; -import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; -import static com.siyeh.ig.callMatcher.CallMatcher.staticCall; - /** * This inspection reports spy creation on mock objects. *

    * Although, the corresponding feature was introduced in Mockito 5.4.0, this inspection does not do a library version check, * and validates test code regardless of the Mockito version. - *

    - * NOTE: variables with Mockito.mock() initializers are not recognized as mocks yet. * * @since 0.11.0 */ @@ -40,10 +42,17 @@ protected void checkMethodCallExpression(PsiMethodCallExpression expression, @No holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); } //Mockito.spy(Mockito.mock()) - else if (firstArgument instanceof PsiReferenceExpression variableRef - && variableRef.resolve() instanceof PsiField field - && field.hasAnnotation(ORG_MOCKITO_MOCK)) { - holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); + else if (firstArgument instanceof PsiReferenceExpression variableRef) { + var resolved = variableRef.resolve(); + if (resolved instanceof PsiField field) { + if (field.hasAnnotation(ORG_MOCKITO_MOCK)) { + holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); + } + } else if (resolved instanceof PsiLocalVariable localVariable) { + if (MockObject.isAnyKindOfMock(localVariable)) { + holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); + } + } } } } diff --git a/src/test/testData/inspection/SpyingOnMock.java b/src/test/testData/inspection/SpyingOnMock.java index 8730d29..fbf8c73 100644 --- a/src/test/testData/inspection/SpyingOnMock.java +++ b/src/test/testData/inspection/SpyingOnMock.java @@ -19,11 +19,11 @@ public void spyOnMock() { Mockito.spy(Mockito.mock(MockObject.class)); Mockito.spy(mockField); + Mockito.spy(localMock); //No highlighting int localNonMock = 5; - Mockito.spy(localMock); //variables with Mockito.mock() initializers are not recognized as mocks yet Mockito.spy(localNonMock); Mockito.spy(nonMockMethod()); Mockito.spy(nonMockField); From 708752d1da5e5c4f2fc196cc922a61cdceb9d872 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Sun, 8 Sep 2024 19:42:51 +0200 Subject: [PATCH 08/24] Update mockito-core library to 5.13.0 --- src/test/java/com/picimako/mockitools/ThirdPartyLibrary.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/picimako/mockitools/ThirdPartyLibrary.java b/src/test/java/com/picimako/mockitools/ThirdPartyLibrary.java index 9dd67d7..55c5d07 100644 --- a/src/test/java/com/picimako/mockitools/ThirdPartyLibrary.java +++ b/src/test/java/com/picimako/mockitools/ThirdPartyLibrary.java @@ -12,7 +12,7 @@ public enum ThirdPartyLibrary { MOCKITO_V3("org.mockito:mockito-core:3.12.4"), MOCKITO_V4("org.mockito:mockito-core:4.11.0"), - MOCKITO_V5("org.mockito:mockito-core:5.12.0"), + MOCKITO_V5("org.mockito:mockito-core:5.13.0"), JUNIT_4("junit:junit:4.13.2"); private final String mavenCoordinate; From c2d051060fd61454fe3e5e3cd10cbe4b08e0ac90 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 07:39:31 +0200 Subject: [PATCH 09/24] Update an inspection message to be clearer --- .../resources/messages/MockitoolsBundle.properties | 2 +- .../inspection/NoMethodCallArgumentTest.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index 44a94d6..cac47e4 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -17,7 +17,7 @@ inspection.option.report.times.zero.to.never=Report that times(0) can be replace inspection.option.report.times.one.to.omit=Report that times(1) calls can be omitted inspection.extra.interfaces.not.interface=The referenced type is not an interface. MockSettings#extraInterfaces() must be provided only interface types. inspection.annotation.extra.interfaces.not.interface=The referenced type is not an interface. @Mock#extraInterfaces() must be provided only interface types. -inspection.method.call.no.argument.specified={0}() is not provided any argument. At least one object must be passed. +inspection.method.call.no.argument.specified={0}() is not provided any argument. At least one type must be passed in. inspection.non.mockable.type=This type is not mockable by Mockito. Such types include primitive types, Class, String, and the wrapper types of primitives. inspection.non.mockable.type.do.not.mock.reason=This type is not mockable since a type in the class hierarchy is annotated as @DoNotMock. The reason: {0} inspection.non.mockable.type.do.not.mock.no.reason=This type is not mockable since a type in the class hierarchy is annotated as @DoNotMock. No reason provided. diff --git a/src/test/testData/inspection/NoMethodCallArgumentTest.java b/src/test/testData/inspection/NoMethodCallArgumentTest.java index f490fe4..c62e7a6 100644 --- a/src/test/testData/inspection/NoMethodCallArgumentTest.java +++ b/src/test/testData/inspection/NoMethodCallArgumentTest.java @@ -6,12 +6,12 @@ public class NoMethodCallArgumentTest { public void testMethod() { //Highlight cases - Mockito.mock(Object.class, Mockito.withSettings().extraInterfaces()); - Mockito.verifyNoInteractions(); - Mockito.verifyNoMoreInteractions(); - Mockito.verifyZeroInteractions(); - Mockito.inOrder(); - Mockito.ignoreStubs(); + Mockito.mock(Object.class, Mockito.withSettings().extraInterfaces()); + Mockito.verifyNoInteractions(); + Mockito.verifyNoMoreInteractions(); + Mockito.verifyZeroInteractions(); + Mockito.inOrder(); + Mockito.ignoreStubs(); //No-highlight cases Object mock = Mockito.mock(Object.class, Mockito.withSettings().extraInterfaces(List.class)); From 67468f6780436051620be6b2bffad3c92988e263 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 07:41:02 +0200 Subject: [PATCH 10/24] Fix the title of the stubbing approach selection list popup --- .../intention/convert/ConversionIntentionBase.java | 7 ++++++- .../convert/stub/ConvertStubbingIntentionBase.java | 5 +++++ .../verification/ConvertVerificationIntentionBase.java | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java index 864d74c..18a9a7d 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java @@ -122,9 +122,14 @@ private boolean isSymbolAfterMethodCallChain(PsiElement element) { */ protected abstract boolean isQualifierHaveCorrectType(PsiExpression qualifier); + /** + * Returns the title of the list popup that is presented for this conversion to select the target approach. + */ + protected abstract String approachSelectionListTitle(); + @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - ListPopupHelper.showActionsInListPopup(MockitoolsBundle.message("intention.convert.verification.select.target"), actionSelectionOptions(editor, file), editor); + ListPopupHelper.showActionsInListPopup(approachSelectionListTitle(), actionSelectionOptions(editor, file), editor); } /** diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java index c319812..abc4b77 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingIntentionBase.java @@ -51,6 +51,11 @@ protected ConvertStubbingIntentionBase(String sourceApproachName, String qualifi return MockitoolsBundle.message("intention.convert.stubbing.x.to.family", sourceApproachName); } + @Override + protected String approachSelectionListTitle() { + return MockitoolsBundle.message("intention.convert.stubbing.select.target"); + } + /** * Returns whether the argument qualifier expression has the correct type. The qualifier may be a local variable * (in case of e.g. InOrder), or a class (in case of Mockito or BDDMockito). diff --git a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java index 949b03a..af218f0 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/verification/ConvertVerificationIntentionBase.java @@ -38,6 +38,11 @@ public boolean isAvailableFor(PsiMethodCallExpression methodCall) { return sourceApproach.isVerifiedBy(methodCall) && sourceApproach.isValid(methodCall); } + @Override + protected String approachSelectionListTitle() { + return MockitoolsBundle.message("intention.convert.verification.select.target"); + } + //Intention names @Override From 8ca0fe807b7ffc9c24d2190b1644b17bf7ba8884 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 07:41:22 +0200 Subject: [PATCH 11/24] Add a missing bundle entry --- src/main/resources/messages/MockitoolsBundle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index cac47e4..8c56c0d 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -94,5 +94,6 @@ intention.convert.verification.bddmockito.without.inorder=BDDMockito.then() with action.no.available.action=No Action Available intention.convert.stubbing.to=Convert stubbing(s) to... intention.convert.stubbing.x.to.family=Convert {0} based stubbing +intention.convert.stubbing.select.target=Target Stubbing intention.expand.mock.creation=Expand mock creation with settings intention.expand.mock.creation.family=Expand mock creation \ No newline at end of file From cca1bc16ad966f8a6c0a08af1004981b822d5812 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 08:40:21 +0200 Subject: [PATCH 12/24] Update inspection message of VerificationModeValuesBetweenLimitsInspection to be clearer --- .../messages/MockitoolsBundle.properties | 2 +- ...rificationModeValuesBetweenLimitsTest.java | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index 8c56c0d..e992e38 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -1,6 +1,6 @@ # Inspections inspection.inconsistent.argument.matchers=Both matcher and non-matcher arguments are used. -inspection.verification.mode.value.less.than.allowed=The argument value of a(n) {0}() call must be {1} or greater. +inspection.verification.mode.value.less.than.allowed=The argument value of {0}() must be {1} or greater. inspection.timeout.value.more.than.allowed=The timeout value must be lower than the user-defined max threshold: {0}. inspection.timeout.max.threshold.config.title=Mockito.timeout() max threshold inspection.captor.field.must.be.argument.captor=A @Captor field must be of the type ArgumentCaptor. diff --git a/src/test/testData/inspection/VerificationModeValuesBetweenLimitsTest.java b/src/test/testData/inspection/VerificationModeValuesBetweenLimitsTest.java index 7f4f93f..b411530 100644 --- a/src/test/testData/inspection/VerificationModeValuesBetweenLimitsTest.java +++ b/src/test/testData/inspection/VerificationModeValuesBetweenLimitsTest.java @@ -29,24 +29,24 @@ public void testMethod() { Mockito.verify(mockObject, timeout(1000)).toString(); //Highlight cases - Mockito.verify(mockObject, times(-1)).toString(); - Mockito.verify(mockObject, atLeast(-1)).toString(); - Mockito.verify(mockObject, atMost(-1)).toString(); - Mockito.verify(mockObject, times(-1).description("desc")).toString(); - Mockito.verify(mockObject, atLeast(-1).description("desc")).toString(); - Mockito.verify(mockObject, atMost(-1).description("desc")).toString(); + Mockito.verify(mockObject, times(-1)).toString(); + Mockito.verify(mockObject, atLeast(-1)).toString(); + Mockito.verify(mockObject, atMost(-1)).toString(); + Mockito.verify(mockObject, times(-1).description("desc")).toString(); + Mockito.verify(mockObject, atLeast(-1).description("desc")).toString(); + Mockito.verify(mockObject, atMost(-1).description("desc")).toString(); InOrder inOrderHighlight = Mockito.inOrder(mockObject); - inOrderHighlight.verify(mockObject, calls(-1)).toString(); - inOrderHighlight.verify(mockObject, calls(0)).toString(); - inOrderHighlight.verify(mockObject, calls(-1).description("desc")).toString(); - inOrderHighlight.verify(mockObject, calls(0).description("desc")).toString(); + inOrderHighlight.verify(mockObject, calls(-1)).toString(); + inOrderHighlight.verify(mockObject, calls(0)).toString(); + inOrderHighlight.verify(mockObject, calls(-1).description("desc")).toString(); + inOrderHighlight.verify(mockObject, calls(0).description("desc")).toString(); - Mockito.verify(mockObject, after(-1000)).toString(); - Mockito.verify(mockObject, timeout(-1000)).toString(); + Mockito.verify(mockObject, after(-1000)).toString(); + Mockito.verify(mockObject, timeout(-1000)).toString(); Mockito.verify(mockObject, timeout(6000)).toString(); - Mockito.verify(mockObject, after(-1000).never()).toString(); - Mockito.verify(mockObject, timeout(-1000).description("desc")).toString(); + Mockito.verify(mockObject, after(-1000).never()).toString(); + Mockito.verify(mockObject, timeout(-1000).description("desc")).toString(); Mockito.verify(mockObject, timeout(6000).description("desc")).toString(); } } From 2f854227befa08a30622c848ff88f041dd264930 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 08:45:56 +0200 Subject: [PATCH 13/24] Update the documentation with images, gifs and clarifications --- docs/assets/consecutive_return_calls.png | Bin 8121 -> 0 bytes docs/assets/consecutive_then_return_calls.gif | Bin 0 -> 52197 bytes docs/assets/consecutive_then_throw_calls.gif | Bin 0 -> 66030 bytes .../convert_arguments_of_then_throw_call.gif | Bin 0 -> 26982 bytes .../assets/convert_mock_field_to_variable.gif | Bin 0 -> 60542 bytes .../assets/convert_mock_variable_to_field.gif | Bin 0 -> 46005 bytes ...onvert_multiple_stubbings_in_selection.gif | Bin 0 -> 69216 bytes ...rt_multiple_verifications_in_selection.gif | Bin 0 -> 63229 bytes docs/assets/convert_stubbing.gif | Bin 0 -> 57817 bytes docs/assets/convert_verification.gif | Bin 0 -> 40122 bytes docs/assets/expand_mock_creation.gif | Bin 0 -> 48219 bytes docs/assets/extra_interfaces_no_argument.png | Bin 0 -> 13211 bytes .../extra_interfaces_no_type_is_interface.png | Bin 0 -> 9215 bytes ...extra_interfaces_type_is_not_interface.png | Bin 0 -> 12211 bytes .../interface_extends_not_extensible.png | Bin 0 -> 17623 bytes docs/assets/mockito_reset_is_called.png | Bin 0 -> 23721 bytes docs/assets/non_mockable_types.png | Bin 0 -> 31966 bytes ...able_types_with_do_not_mock_annotation.png | Bin 0 -> 64532 bytes .../reified_mock_creation_with_arguments.png | Bin 0 -> 26129 bytes docs/assets/replace_times_zero_with_never.gif | Bin 0 -> 34085 bytes docs/assets/simplify_mock_creation.gif | Bin 0 -> 60642 bytes docs/assets/single_verification_in_order.png | Bin 0 -> 9093 bytes docs/assets/spying_on_mock_object.png | Bin 0 -> 28145 bytes docs/assets/target_method_selection_list.png | Bin 25289 -> 45750 bytes docs/assets/unconfigured_mock_in_inorder.png | Bin 0 -> 13644 bytes docs/assets/unused_mock_in_inorder.png | Bin 0 -> 14145 bytes ...fication_mode_arguments_outside_limits.png | Bin 0 -> 23551 bytes docs/conventions.md | 2 +- docs/framework_integration.md | 9 +- docs/mock_creation.md | 173 ++++++------------ docs/stubbing.md | 89 +++++---- docs/verifications.md | 77 +++++--- 32 files changed, 158 insertions(+), 192 deletions(-) delete mode 100644 docs/assets/consecutive_return_calls.png create mode 100644 docs/assets/consecutive_then_return_calls.gif create mode 100644 docs/assets/consecutive_then_throw_calls.gif create mode 100644 docs/assets/convert_arguments_of_then_throw_call.gif create mode 100644 docs/assets/convert_mock_field_to_variable.gif create mode 100644 docs/assets/convert_mock_variable_to_field.gif create mode 100644 docs/assets/convert_multiple_stubbings_in_selection.gif create mode 100644 docs/assets/convert_multiple_verifications_in_selection.gif create mode 100644 docs/assets/convert_stubbing.gif create mode 100644 docs/assets/convert_verification.gif create mode 100644 docs/assets/expand_mock_creation.gif create mode 100644 docs/assets/extra_interfaces_no_argument.png create mode 100644 docs/assets/extra_interfaces_no_type_is_interface.png create mode 100644 docs/assets/extra_interfaces_type_is_not_interface.png create mode 100644 docs/assets/interface_extends_not_extensible.png create mode 100644 docs/assets/mockito_reset_is_called.png create mode 100644 docs/assets/non_mockable_types.png create mode 100644 docs/assets/non_mockable_types_with_do_not_mock_annotation.png create mode 100644 docs/assets/reified_mock_creation_with_arguments.png create mode 100644 docs/assets/replace_times_zero_with_never.gif create mode 100644 docs/assets/simplify_mock_creation.gif create mode 100644 docs/assets/single_verification_in_order.png create mode 100644 docs/assets/spying_on_mock_object.png create mode 100644 docs/assets/unconfigured_mock_in_inorder.png create mode 100644 docs/assets/unused_mock_in_inorder.png create mode 100644 docs/assets/verification_mode_arguments_outside_limits.png diff --git a/docs/assets/consecutive_return_calls.png b/docs/assets/consecutive_return_calls.png deleted file mode 100644 index 79a509d71e55f50db6fc385df6d8b0ca84646e1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8121 zcmcI}cT`i&*Dh8NrAd$?7zB}C1O%y(BE3ig(u072fb`xH=?K!BbOjO!2#A7|P!tdZ zgh&?OwW8tVDC3a^-=Qm{4x#e88HjRMmr=tCWX}PAd8;R8+OeS5Iv(QJ$}OYMJ{` zQPFq)J(pM-a|T~u+9``C|ssq))Q z{lc5LkHU1%TKv30f)_&;Y@y#v9 zGaLiO=--2wEg&F}qI-5Zh4#XKYR)+RtJp61Pw`Ds+I$pNXYa!~Dv5i|{rDd=WgX2N zLP5W7Uk2M!I?*@Bg)Z|k+@zvnEDK9?prfyJ5z=(r4x5dfhR>X8yA^P5I1fB1YY?fR_GN3iMcOM9<0%U2?aZQy z28ExAU0z^$dtpA!i(NZfjWt^uB@y4K+!(MCJkAy^5j~Dr7>lMBB#WQY@Ii}|yz098 zi|V-n5Shk?oi$kVxTFx5R})vzyWVuhijA4ch8q`q0)5Gm_Xy!6sP1y~Q~Y==_OYHy zYuG^3;aL3%stpW!IW!C96tQ;MUz}x-Tf(JKuwgRu8}Qf zxOb%hfVeARq%d0K3RK1n{IaMHPUg8jUG!A@mdr#EF5%;Q50@T1hlUk`&LJ@T?IAL^ zhz$_A(A}4RQn^0!nWW-p_l6)K!l!0azCXbLHPr~Vj9@(3Q78!o20?)hJNy@zNtnSK+>6T+pd91C8Krvi zy!Rbd^Dyyc*)p{h+60=_QS~e1Ly^&IPk(_@>F)GOSW-keRJ}Z#vuEH(*J549Mg=}Qwz@WJzwA(GRF{6;Fm&X)sg$Mc zoRCYN`%h#C+XA^X{K2U1;Ino_Ma75acPKd7GwAbvpR=oWImEUQBwji*S+(6%ke|hp z=h38u;ylBl^D4Ny#H7X6$(m0@fQ{B`QY zG{x|oMAr;DOqMu(ZOX$fHh0ACrObEtmauTsl77`d7N8Q}y?rY?w5+2zDDIU=!E-it z17m9)HaLzyopxJqrhc0MP1I_tzqj}EomD*19SsW{J0e%Qj<})2mLk0UOMEKas?9@L zw`OYz<9B0p6HNrURGHYv6A|BfCc&D!4jS7s<0hruA}X=<_SH&*g^=uAM$+->HhuFiBat>p4iDB_e|yqWQq zNcZmG=2d<*zoFr3_#)w~>4Dkp`c&0d^#~{OCs!P%_8k&1Y2bKLJW*6>xQ-yvEIJEs zVFr^O2>6|uz6TfqB8jPpl}TW0t!j1V+l;sr^GsqgAv2{ISAQt}6n^V9owZ@s>B~8crB?_5GP)P)YK!atLEMb# zp}v}2GaP(P0S6=*|x=UJ_pQ8;#ZM^up3VR|jcn9crYQ5GKMV10(g z8w0+LAnacJTr(qw1QAC1cavPd?VW$x5NlBCU#)=8=FffJfx;GbT8lnqiuxa4VJbxNnN_m>+k@2hE4|0?LcOVcKY zQw&@>W_}cn@l^-PK6(~(7Zj}>&9GeIinN)usK&gvZkIW*Xa@8)+}WMMw=Be;8t)}k z#VE2o6i_U43J9_-ZQ;h*?Iwn2dhohAgIi@03Ex-qroynP!iF_*X5MP~!9FVKV0C^Z z(g`Wk=GjyxInne8N0tsiiGR9UQn zCDZpodwZZ+-q@ON6}{tSj0erqjD;M`OfZ0ZVT*pieHB6MmJ6*)nL3+$u9LRLJIGg> zO3l#g%y$8pY5Ydn8g}xr<_^E`jJMCzrS)_TNlX-pDWA2MjXH`)H%2+VY$8Z5XNe(p zf}R3i&~^mA5yYn!dlh4u!4l1LQ1wtnIn85(}&*l=2x zEFQ8mI&uqZ<1jmIZp~36^u51LX3-2}T-LF1YV=T`tkX~NF#=x3TQM=W-PpCSA}t0s z%+CL?lE9MGI+kPkVCVpgY0JuYAb?H%jDiR24RAvdt(R?*i^-24Oz_fPEpaUrV3Aoi z>__CUS?CV5HX$~1EE`{%WE#zzds|iG8Z33zr-6psp+I!rE49xEnpk4kM9Zdzy|(rG zW@@6x0^uVf7)6@bGSzjqKKYW-(CX4FD7uk9Wni-$sON!ixw(TGSZ}FuUE(p*f+k= zc>9~y6F_r}l%QnHx}mR_-KN38*?OG7xO|a*G^=YGhnp_YF`tm$SBPHJy|=$SZExvz z$1Q8*6HeP)(p`j;Vf=f5{guq*kZBRy($@Upci%e(8?bjha0@{i(~o)9mwgSX@3pWB zoG!#aEO&ew&>Hw2+U;gGqg?wkU=h@C`30Q_ju@0g`wC1zsXBLt!i>Wp_QviaSc zi6`^61Ur%rTh&pC4m&As;`PTRD?>Qh3l4R9w^iIi>S#3Q$&qt0K8p+EKBxE0VEYBM z$#s0g#~akZ>^Dut(%o883$7T4N%}TJGp|vd!&CCl z5MQS$(9|2WXAElwnv*wxenLM6ftRAdxdr@&9IZ9n0>!~%-93DT48>ll$Mvm1VIchd z77%R(8CyO0eYEamqdU0vT*~@(M?ZhoMC`}jphZILe1B1g@vjt+^XQG%xX_^@P0;5= zF0rI>?L))`SL_CtcmLGasf>LTz%vPL&F&bW zG6oY5ha6YMbRabkA@Y*<2}u(T-69nYmjRt9iL=H7-mBWt4g4b7GlrL4E4_p`M-*Em z^VN>o!`$Wr>#W-rzcXWdWtOUwpsMO2J+2E?izhTIs-z!RrVC*r!KV#d8J^&KtM(sG zmlar^K(Bd`O7x?5y$p9wpLDOIK>&P9+|S9cvkydB@ME_gApxU=-+8~iHebyC;1^f& z+iWEtEWrl@SGS6Pz9&MsXa#>8zi~@e7;f57vS~EUHGY!=qCFU{w@J;n$DLEqy@E`U%_XFOZwC+Qq zQ{_zG*qJZ;3}ubI5NB%jHy{Y`Og5X2SaHL%hyx4P^`jGe_@V~OeBCAjCg$_$-~dF& zWgLGVt%o#U$g<9uv^9|qs!A)3xY=r*pF47|#pl6e#J0`~crJEpC?45F?)&A+EXA_K z?2}xhV`#ZApVdal?8o$qM#k2h=pyh-O4A_${Rq=LY2bPL(%}A0KZ6jRxi3zK1Hf)4 zp&J+5S5;3jh>lo>_0|P_eMKA!cM#iA$jT(I(3}##E6jrA24qgOqa}xKEOZvNonqL< zzXd*jB2h?NiDBK!lxK0oC7)MCiPr2|zi&tf7%8!WvN^Xx8SAsxy*S0$k2m&0^S;AD zH!ZvYp+&4VWB{@w=2TGAwnxSXEobu|o;=gi=!+#A|2yZD6$3o^f6RFR z-Q|CrNY!>IwYGMy(DZ0gfxtEEcWytghYyRA=qXx>cd)DEhT!?dS@8BSZ}6PsHiFpU zBNz{TpK|<_;|K$|?#lT&>H0td43OnGV`k0qW0=f#1H{sH;G3G0`+Gr1z3Xm|Mo2r2 zDtK<-6}6$0kbSYIP^i<>vYLE7SAdbnbO<)fK!g{7mGF@q)@d_-*};*q%LCvlO3h~E z&E(CCA;@hCuFhKJegl)lS0G|-9G{+>wNFi z;@PHGC%pqs?iYU{0;gHqo_9*1?zAh>3OloNp>}?#eat?Mz7YO(z{n$P=f);FxoW&k(Z+m@P_wby5 z6R6aIkM>e{8Fvf_hdB-ujz`_uz(Z0Tt3W6Q>Y?u`%u^Tc3u`r->NzW4DuPf7H&elNfY#(Yuz?NTw zSQ`wh;YWvKW&zp;(H?EBFyBYP!MAtHex3c^1qbfy16&@FSnCQ@fy7$HW_$P81QA%ux;_QU+bbil%{`4n%yaD86cAud&s8^y1 zVDT9=>_PMXs!9$)27~2`^-(I0D<>ZKXs_b>G&l;AOXpR=X~%A_R4AeO1?pyK{Wi?E z!zZVg>@TIz?w_)=1k8*P56mruNP^`VZ?57pEgfDvFPGtZM)y7~ z0U;&3QY{|?*4I}^xjzo_BjjVlHa!kcRfZ;F@#J8$>~!_&^*c*BvXxS9XRU(FM?zrxjf)B_%STdo<>iEB z9z7YqK!Vt|fsD*d-9`=k)YJT796Hh3Ib@oI0~^I_74Rs&yETr_gU0pYA~E|VPu~!c zvi)1HuJ6U58$;AiN^Vk9TNj?;&tqG%l`P=5p{+j&NTr<6tsd8BIwIoix_>7O7Vo zN%3!$F2BoYUKQUj*+dz6BLrA@^CISCKWZO~%Rt@2d|E?5zGXZ~9NA*u=B8y&Se3;$ zLpg4`XgkbWry2h;;)lN_)z-An9?f}ELY>QXMRC_gO2&z~8gmHJI5sL|NI+|Tf)Mg9 zFYU}NwD?Thcccl)YhYWaj@v%A%F6%F5tKXEd59Av;}TgrlXN*Y zLLV|x^kp)kZBmC@o3X%tOEhy*mdll85y%JOsbK3O>@7F0jNRUn%6Yvrt#}Cw=5{9>Mt3%Uc ztqM~|%&9|?`yC|v%|Fjb4`J-zs~Db=PyBvE#<4|7_H1^s=v!CjCAzVc==Q4P@MgSd zKf1wKHs~kOch;Lv(+5tT{>xt_bXIH#mF!NNVS*ifwAG_NyVL@~3~qNd!{P5wnew%%?+#mWKHVAv1gR z!E_P7!*}gULmp4#%+ik6ircZNhga=zmMhE3Bm*$}f%CsHk2>{zuWh zO!cK}MQmD%S1bA)6_sAB7!SmnqBB$dNaXCIyMU6Qv^4Te84wnr3V+C*B6sO;%|n`S zW44Ru!+(hU(@B-4w1bHQBh5w0PyY;^=5`8gB*kRT|FOxpHZ^;F zecuo)B33`$hOhkZ=1IXbVLv~$o-kcy_09ABAI96EJAcRW1(2Uhi(3vD;Ns$vL;D_% z`4fgxPqf|Is-bs!laOKVqB3)_mkP`xdCUtmZR%S>B)@E(q?6u(gB@Bzx>;!RzGm7e zEy|y=zP=~GKb24W;&~U&J;V?8(;%v@hESZhPMcZTqy#eQ`w4S=-46bDHtbO!Zk9kL zR=|XG)Q93PH}1d*;0A_`IE_*>`fs;YCpMo7ez;XZkUV1>por9LwcLCeU*(xN6s!$G z`Q4TrDpfX`s%INA7RaI0Fz{x>d$VSpC;z@W619^*viW%;Sa^4D+4s0Uo@nNG-ZJHM zMt4T}120Faog5&R#=0RA@g=x?w*S;#IuAB$-=(?&wyiBFlDo)KyFH;&zxRd~g!*>Ym+bGo?^=`++cj&V9xN){&R_zK(HUsToLY(vU5FUJHj$EC$4=t7 zjOBo!B+Hc;4Mu`0ONM7Hx6<5(MQoluuH~*D@&LDm-42*_?FxDDNF$&@!5MLk??jtS zyMed8lD2m9s+E-O>Sy#f;t2@!9|ho1iBsjYyJ<}4t)%JKvFNu_NDXg zEQjpymQ2$~uIhYsdD-eEZH+qnub#)Nf+zR+qGamJ#(I*VJucH9!WM!(8e^nf(pDw$ zV`=!YJbAy5y#oho=|avRlZldGtmUGJMC=H<0I-siIdxT>uKqRDp(0_l=ZLQ0Kie;t zVjy#&9tM#UQXfB~vYE&3jtv(>s}=pVT7R3_hXWKd-`_Vv7;`6=x7s+!$RX->>it;}b0fZ{2skJ6UEqW~aAmc+pke9eFd?SX)XLaWf)pEOsOt z#WiJOG0sJk?MJ)8!*|&PH=lil|7+RuSF?X%w1AQ@pFsE-6&a=+&Z0$nE$cJmxf)zD z?O5-CoxgC@TsZw^C^}#ixCEj57|D|fj@Ql#EnphEy_iMbFp#OeQFmVm_uZLVqqR8U zy`Y1?jlNWiiTpy@Mu%%mzj5D_N=R^*R^J2jR6RkNF>00!2iGZ%89i<~A}^0S|0NW^ zP6(>j6UyY8n-zmp|01)h*@TU^_v>!*kII}flESlmif=@YIvDUb4M=Y;-Ddlp?W#FS zmF;I&pdn<4)^f%gB;G#D`Zu1yN;{+@Q$MkjU1AY^m|rGVebG5(>N?@Z93Q%otY!ye zpz1Q9xpPv7aFI)jlz?I424^Ny!F@mb&oMIvFC0Xle@-j2u`(6DZVu_o7enRERSh>O zJFr5fwx0w&m%iQUP&PI)>k0{btTJh@-#WH%&W~?IN#vL@m#jM#IJM4kqGjoPp&faV z^!)cS3aLehN&4Oh8-0EM2@hn}{s_wl+=yonR4*Hzu)ekJ@x5^XW|PL9A~}xBOX_soSAIryJ#--d0D`Au?O-6B6F=qZ* z!+u}wn@I0I;{&t3t(Kg(?r-Djd=+q>H^c^L5lU`93Yxw7f|zPnzpO$cJRlQlN&3wT z&fRih%ifuH*PkbNh>n7yFmT2w z)t@{6WrDxWX6?0M>&86 zNW`dw%ze#+4D-B}LaFYYwmF?}f^^B<`>(^EloiqxFu6oAG&%27{43;Hv>uX2nRU~ z1dWpuC_J|!3-~W4OwsDgb6EOTTm7|$LfUV!kN^J@=>HXGXJJu0K=>(8BO3X`{X5!_ Q@~KqXj||kSRi8%uFaK-|`Tzg` diff --git a/docs/assets/consecutive_then_return_calls.gif b/docs/assets/consecutive_then_return_calls.gif new file mode 100644 index 0000000000000000000000000000000000000000..671c64b2f8e5bcc51efffce020aa3787a2fbe4ff GIT binary patch literal 52197 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¬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 literal 0 HcmV?d00001 diff --git a/docs/assets/consecutive_then_throw_calls.gif b/docs/assets/consecutive_then_throw_calls.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfaebd1e7801ecca87ea84954cf0b77774d4d4d2 GIT binary patch literal 66030 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 literal 0 HcmV?d00001 diff --git a/docs/assets/convert_arguments_of_then_throw_call.gif b/docs/assets/convert_arguments_of_then_throw_call.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e9378d9c55e761152d9acab3944319cefb00d39 GIT binary patch literal 26982 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

    |LXXSRaA_j{JRub8)=1HScTSm70L2Qhc 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 D?9@>@ literal 0 HcmV?d00001 diff --git a/docs/assets/convert_mock_field_to_variable.gif b/docs/assets/convert_mock_field_to_variable.gif new file mode 100644 index 0000000000000000000000000000000000000000..73567af90a5c025aa20647f346376e057c82c3b2 GIT binary patch literal 60542 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

    @rLw&F4O^ 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�UuEy(7)4>K5+4$W^R6f4uAob2n0X!D!DCN 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ΧBr5?F;bs!)$g$nYasA=R zsdP$yNXl-xcL5=CDrP*6|Dhf{$c-+^H zM`r1Epq}g9j=YhXx!AhSgAC%{q z&Az_-nc(c^bGPMeqrjVsduL1!7xV^;9uus8KU(OfU&PYBI7^v&X<2fZ9+B5jAPIeO z3-vtJy)dMqN#3;ZI^ZjfO}Nn$%PXu4Sn5;!0C!GS)GW_s`O%@WHMfgdhu^Nl} z4#@Xc*Ug)%cIfx5^y{ME)GohB-CmP>EUv$Jw5lSw4)EIyZV3q0Z4N)(z^mMR9QGv8 z3yETmZ=7pvb^m#{zp>><KrvKw70o?v?0-|)8{<@DuA)GRW+4} zJMZ*oq4T4{aFQ4JC1!tXxPvEd#utur`GPh$4Oh&lIZGk>2Ex20qE%R}iqmi(1@6z3 z{H@`B_uNvEdxFz&rEs;Rd;=%H!Y^?eE`4unndP1g!CG+#u@eHYE}v2Vo^Lse`tsL_%N@70SZ7HsxCnR73`#>W=NIG}<~MYV7b+A0eR_M6W&z>DGszsjf*`dYn5Prc$)r^Tx z09FfR0v|9HLxDULAVVp>Cyt$qa~)k8F(Ny6ZW40cSror?aRO4@9x(ihaMk&tqiv`w z1ywZ?lLpP$m-f+VsAUx}z!#7}su}D&;DQR<4B#D}UjYkf0MgY2yylIJ1S^fW9|{tF zGa%t!?0ng2UDM6=aG#;O*=juYWsQlH@wa*7`_uxpcAyZ6SJr{~66=KpPR4CdMFqus zC2qaz*{;Gm+R}?#R_>7jG#ZmwGFe2`aznoQiUU}eQs&qEA8Q6%#Y>K=Q{1`e=V9K% zyOP4DE*aD6Ccn?FV+*>bcI1q>)sqZ~IBbYV6Ma9G0&q4q5Ik0aY?!h{koPOGM4k&= zALN;SI@(96-!-$%qp)7*DpKW^VM}DbvF_VTNslpm8?nC?>R5G4ZRT~v7QOWLYR|VG z_ogQ+AMouf$pJAAV0tV-lz}ajv5nr98rcBVAZp6mT&-=9Ul&~*i~dYYi);v0FVu5TgDELqofnsdc~?QFO*qr z1NubPOHTnmoC{+ox!!F1ypj?sJI}0^9{MsC`o!|{6M7!TnC;E-*EDLfJdObTfCj6N zxWmlTu1qWi1yiu@5{($;ra1T*Pl0>K>oFD)o* zdwmOX2o;n&%E3XYi}1u6Pmc8-aVq?)g{T(6Bp+UT8vh!L8#yAuZ30BIE}cw42~Z@d zZD;pr#wbpiO^JC^1l_)7*Lm-%CZ6-&*W#~5R?RP}sVD83q3Kpyu4c;1JHkm>OjM=h zwj|xJpHK>bS>2M+lak8c?Wy|+`|llT(1sCA zPJR~i>#5nes%S@cW_>4@Q2i7nAr%^ibZ{LD zh2O<0-cM5rY~-MKfBshyDgkhsN++U;llqC>ka0wI@o&{31{A6GT?KT;9vYIa#-uyV zoGO8umYc*k*{$S)?AFxeW}h2Pvr(MQ;*+(y%=Q*FdW@tFd~HfjP)Q;-hAo(sw>s2+97bBbA~EeUs?uE ze|t2B{UDa|aoG!>=rjxH>8pOlkEh635Dmm~kGA7{+-n}!TcA_e541n=pFA!~9$;G?sKE1Gnl9{xNj6me)_bHjJ|^cw#>_;T9@Z~px=pc+Dwz|t1t z^L~UV5z#}lV@v#uXN*?wJf45Zu1TJ5oK-R>QAYl4eF)tIPi=Ox=8%0Ynr>1^Ej!g* ze*ea2bYn^~UnCo zVoZysv(mVw?RJ{UW3RO;b}m7&a0=k!NRokq0VMLA-aO%6ezqdDoDO~eizSBqQU^;H z18s<9tH&$_c7&>wy4&h3b$#WlYF8$g7eGR8W1?%0mawPVk_ANnfQC>Yq5EfPkBO~jMuMU(_b1kNbwp=I?0!>5-s}e3iJM)BPg5j_fswPy z_nsv@uHPenBix6%0@7OUA+#LrZ#}*$(PhUWWw$x#uU)5yWvo8b>{YPTSWg#twCD5D z!xzX>rh+)A+D)9wkH8lK`h z2GE`j+XawNPG*|;J77Kc?I$V0-koK8KGX6kK^KcMI<}?nP9(7hnh$DAZlL8=Ji0nE z#V?kUyuJ!uJ4@fsg1j7T-`)QaqcBhxlAIIp?S5&)fvMk*(5cM}GQaTmL_>y5^5b=< z2xaq;t+hJx_T<%IcXkClsvZck)y&ELyWPs_V@Q5mPjD9v>)Z60ji(c(eP+gg>v0=y!OU{IUQrg6MZsOIf|(q81!24F7BX*{@vqIdX*fYd_J% z$YX>E$pM^tc7$|ig#7mC>!oMVh*k=w(c4BDRN|wrl@zJtN0)3zX#$#Q(?=OC1sHbj zGfs@M=%mxHDVDxfWaS(y1&qOVYS{$FxT;e)RL0Z|l(_T83K3&G6E_vSrDFokO8m_% z0t-rac9iZ8F$n!N#zm?u(p+2?3*heqOP_arlD#F8(y>Budr2QDHk)$CfmCKEL(ZtL z6gw_TiWE~B_ufk3L=%{d#JlwINPmIdix7KSKYnj7xB064zCcFzDiNG$VyACn89lL= ztODSeP|~?A9a<`WUh+tP(s`8qp@?`PociH)r@^eaTQ-r_^~3{^c!6++(Fb3Z3*Pbtd8; zhw`P`_PlauFxzHEQlgz1pQSa#=XrFy$}!}%No1y=o#LiPZ*r%D;tS_}WacIGU71UBKctCpyW{6{!2U z?6upSJQRD7IAac5Z%|y_6p(x-n`ur)8sVX^bzL8NTpCc)8}ze&kEpbRz8BR|7Pwzp zq{7%8%A}B7I;)r-^^bb$U)g>i``h`yV(0sYa*l{& zT{S@WS1Rp1dUe1WYB7tAgFH&tm9|Q9JfdQTc&7ThYc|gT;MI+2b_!pFs7kY7yzr;{_CP@62n5z%$Rj z>Q?>W;vim#N$DHoY)MWVf_~&0z10AA8e(VAb=hM5?U^#^@LZQce~yhClHZkhd!fKA zRwrkHJhJ9H__<1Bz12s#)9vctoSN6AB8U_S{3w~NK5@sgA@7lFp6&2Wd?mHhaO~J@ zK?qYDrS@A868jUg%ipkOxbntdVl(tkNA`_=w)+aP#IPgGpoz1VFA`vfAY`&7AU;|V zB3o5b;!UvUrFzZzZHSBG+Y4sZw#|TtyIVwQqXdzC1n{GxXIkoPKkfycEVHLRYo5C$ zH=J~D3H{^N{cAa*cMh2nXtnKqg>#MlH6? zq&kk&PThiNSEN+B37SGMTWfjF?^WSa^HtZ&BoEU4k})hp>s#5oVkah4gF5QzFSWZZ9B_{}64r|8QWQ z!0!NCpfHXD6A=2tfr-mY{LO*M$Vl@EsPGAz3QDT*OPh+}Ah5eme0Tl$B%S#r{iT() za5R{paxjht6V(ZlG6+)<6w($EQkIo?Bp~!qK-^GVNdKOMi-eH7jBu#D5L`eN2a0JZ z%eyNHd8&&=z=eV}#FUg(aJU$b6;oF8QZw>5SM@S5@WD}HKB}tGmMQ_dUY=fv5Icl` zTB4vzA&v>-H_jJPE|fHi6}LbOTGUC}mIydD{sV+bxYWt`bV(vwB?Ee8qegH{7!C;2 zc0-%Fr9KKwQ1NR}3+?=af`vBNJH-09qP#;3a6p(xQa}*WRUvLdD`wClvCb%Y*f%5B zKDF64b;t)*=ae@PUECU7Td)0JSXla$QO>+^@tS4Dh7)?ip=2efaM7u1BcO6Buw^~4 zeZ#xuZFv7)oSIOgo@j=FP@0KMj;TvwuOtfu4j02wVk!3C zu`d3Zk&Z~e2plDbL&S=L0$aoMDg*V~qxEp0SV2fZN@PbvWPEH=KyiZ0leoWGu|$)9 zD6!s5_nwpx93?iK8!?({IA35rU*xn}?lM~&{IVk=4uvks%EIwsnaCy_8J3sST9DR< z!@`pP#==q>y8mEdLk&Hsgr17RrrP#D>{oMrS3_rSNB2MM7qWfiU+h=sT*=T{?9khi zp@Z6{865sqJFwc*KVH%Gw)*ApKkV1=YE}PwACCP>pWH5(-uwf8Ex$?_*~_2aFIwKK zp5Ce7ny%YedOE!@IJefjHQm3p@dx}`Jm_8BYsStrVb_|l`#A7xwkl=5Hh;1wWxAte z`3Z8VHg|I%@nuiRLTabTGrTzK}<1L;W1bqBL!grQdb?qryF%CP}E#}wC`f=E5*r#udri} zViTaO0;IMWBwhxHmzM%F0synI4}Q}RJ%>+$1UZELXZ=Q(YlIAgbj$;s$7tC(1ay`p z-jd`qmXITDyIpsNY~BOwEJ@(J5Q{gLP2raU%0x!w#1Fx_5z6U_wnB{#0_CwLqI+LN*l zg>V6N6|Qtdkrox${h6Rwb_Ar5@A$ApuCGM5Qsu8yauVc!I8x=u9pn>g$^VF0UBi_a zjer$CPjssL!>!}hxPbM`GjIY5F+u>*%mq0_^Da(~!)F%OVJmDaQTM zC*#CNVHKsF)l|Oz^Ee);>s%Vmlo8QSD}X$9)gf!EjSFlJNwy&>54 zxb4p!2$x8nU>X-7M91gJRt#zL&;UywK%}KKmj?85L1gKsd99Io#KG5Ev<|C5Ri!TU z`E5&YW7_i)6xqqbrO)yz5uLEXFG1<^v)P$-zEz4R^%TGm=YZG%LMG;pY21%%?3R9@siZ;$f>qG$ZL@2T zwn4NoSi)|238y-JH7GqckV7Powb4b($h#V7xskw6^H9NH>!P4V47K8Qnv3p_{+VOwon7<}`)7_}xCjX#bo^(IVfJ~@z?ZV~ z^g3}6MkjRZ%fIFrW*_*z>U<0!!_6^hEyXf?#SrS&E75*j;1K>Z$55|A@^LBU(br14 z#d>M}utno$`%=k`3F1nbIR5I9A})nHvM&0>bo#k9cNY&ySFogtu3|O#f*&-Bhzz~d zFvQXD1{z0{Zkc3f-4AiT2f9CWG9Rs0?K8#QC#BS7ZgZ$x=;AY}`G9Yv)7dm%3cO>_ zr`w(rSY{hpOS`iS&bQBnj7odJ-QXFW#ngCiE$>NDz^oSHJ=UBVZmUySlcBJ0<#Arz zmhXsxb-VtMDfFZiCsv2J8s40>iiW zp1x`+%J8yR9Nc1TD-`|gHl<`X;GpBuBEB)c@oSHWW4ZQU<==a$x4rEd88;*JrH5y|e3EV%7iZRR8{Ld*#>FVZ zM|dW`=p`(f<_qP%vv?=YXSSr{OhJ1 zmqs@f^ZFaLr*)01&3kg!Y^ZOa)i&jZ(vl?`S=rC9w#QlAOIE2@9X^Gt$mCy7dr5*_ z-7PLV3%Spa2drKv-D~f@|Kr>a^YhoEah5L{-?pP)T=%}9rwB1$d~apGa`g;a3}NIts$jyT(BP z=_mzS;C=OoBdMU2qyVj68{Nae&FOFl3gotAh!sI#`lOD6Y0PP0v`BY!qIx*FSrBVT zAW?l#C=Bum>u?$vQ`Q?3KtM2uf9t;X4W> zCXByJXGfO*Kvv&&0qieY=gp5usOd45JSVw}4+awgZG_2rUV_fC1`}$=4j~3{#y-<< zBDLfQo{)ffwZ!LYi41i?j@^m$bS5|7y@oDzLi?+&)M?+6;Y_G*z3DafPhx^ALll2CAlf znbbjD>e<@5*g28LAe{KX#1`+Vi-(zyzh zt^nkgQ!ypdNgC>86>#V^${|yYl&?DD6#?)iuc>4q=sh|^cq3-vAoGweOCF!(IgDH% zVJwCswSJij(a1VKa^0xUm{BLKM}SVdGo8L?9&KbhVzHyh;2 zU8~MrGs@jm$$L?a#6y$IN#w3L<}FR;E^+2P>CVyF%oC%xe#x1yXP&=wkatz1D@dd( z)bQ~1b~2@^SHlum2TuA_t-#w&*Y3JN)QR|FMqfgoc(9G66p-(?S?If2h@?lyHav*d z)Qby6Cl{eV8|kHPqBF12uO0Qif{XIZiwey3ep68Vtt*WIe*KB5V z0U_6alB(PvpGiYm4i{5>w8SG6g+jC?LLN$~sw@3hQibdJs^C`rRJ|+=eGE+f9Utob z39EWu(T-Yf?tURo{sQXBxV*||n1>UX#Es&_{|HQV(src+P7QZGJ8|}sv|Ek1X9vz+ zk__s@g;i6FBu(dZJ>NoHSTzqz)d;NDi0m>9X?z&f>E@k|%c%ZHSDDyxrI=xx#5&W| zq5t-l;tKyOth(g&;lgT2@gI#zGi6dc=lO&DrH3gahB*ty#jCiy>R32qU%Z4fnVf32 zf-5Kdn%06kHoY3(Mh)!6s|&^Hi2svUvrTY$Riw;CvdUek+EY5->`zQhvh|90^-uH- z&;8qEDh>9>Wz-r!gPtg*no!>qpW^u7gj~k*Qr^r4E~%oIms3ZvxpQy-R+P3IHl`}q*M?^o z`leUAb{B?LUjL&gJ$-{yl%|`oD}NNFlBDUngt_|Mk*>$fHEBzAIopFtuewVoS}LYH zt0o4zH-@Sg7K&z;%5gDuW4Z(vQzs|u|L96<6*Fr+8)J3rQ$4tty1CgmJ3Bc&w=%Ob zJNI(?<>KP2#nsK13%Hm%v$nVL`j4)(i{1S%Nf4(i{rvwurmERivsJ|M(%@q1$K}yG zl%y^8P7TK6VBX(OKv!mV#o18}TvYqTd$2%-Y-?r0Oy`eKqEPQ zcR~u#EMWRZOW&Q$GItgr_qDT?Y-u6;Zk2I}gJR!43+~taVB$9l-(|Ti{1kLFexHq^C$wbqo=Jy#6mg zKoR59(8KYF)~*@HY45NEPXesuj^BR8&y(`Fs9Thm6L074{@gi@8_xRuP2N}t?NXlBoXbB^`vdzWXcFDt^BVPjs_NpO6VW4=-0Q|4xwCKtnhVxcU+mYdvxv=Y54pfz1`N9pNe zcC^atvSzwKX@DR^k>u%+cZgSn1Jfb8Q?_*(!L73YZmmyh6TgE2k+-kwIl>-$1z?`z zo9bgPnAMeRf>8kyi^4`S7vq6p(jiF%cuRNN%S8FGq6~uZ?^JH6g)=_9oq9HBD-_EG zclZ@vGcxmD+tx%_k@F|lvy-}MT?`U`2!*Cn3Yu4?F?8;TP;vh{NhF-DfnJ|j6qiYu z22hN$REJwhyVU9~B34Uk_Vz_-6scR274Vl%d6j7PDXRp7doW%$2~GQZ3txfn!oA$M}_C zD5me8F2G}=7g1Wb&DLDs%f<~aDScd}m{gl+C!icbz-W=9cflR;34{*X)$4QjdOCr8 zC-$dt=JR~u&I;XB_h*E+3C!8?HT!NRKN@LoZ{2`_bug-jOxOhLnMz8d_7+5v_Rd>| z%f1=hYGC2~&U@L*ewGh}0d?B1-+srTmdVJV-uc&`!Y&7~WKTk-aR=Yx%b_FPCt>UJ zyWa;chtD&7!l@|$F*BD>uNI#~;Z_50eq25Skoy2S7_oSaS0jXaZLzdWHh5xJqZFBK z@jNa$bkExo2TS6~!mq|*xvh ze-St$JV!G7w{}#%9JB|O*fBjw{8H9!5hJV)$D>9g!DdJYVzWnh{2Si*W^GnF50H2Q zm=T7qQMXTx#V@5Z;WZ^Xq=-KFAQd83?8o_gM{E^EO=4VGzufVs%twRqukPa8GXsr- z<5p{FBpR|?Tpl)Imr|^|dgix}0NWV)XskB{Ib{q>x>2~wbFqT2%jE30Dwyr8l_lBR z;+!@>uPJA~2%L|miXMPiKT>o(13q{3-v_;UEfFUvo)OQ}hQ(LZP$%)!C$)+IP2aPf z7UK3o#IG~5UK6U5+~h3AhXO(e-L8V=9Z@G?Z!8Y3TZ1T0bfJc@ux;r>$=Fa>y3(^E zy5^-W#txAfMoW$(8I7qjpC!_JL-ae6fPtmhdd#T6Y;$4O> z5}lJUktlNN_zFge_YvR;TcXt8dta`-6ItHtU6)K-L)x<7%S{!@q31u&*3_P!Xh;88 zJEs4xqA$PSd-K9-I*sO7fF)XgQ9$$s5A3Y+Dn;^h_VelxJ0Zr0vW~(?&V>F;>=x7Yu#dF?-5f7gfAdc&sw@cIXPPPhB~k9Ysu>mTa-yg!rs zKY0C@XV~%O|Jm#Ra{T7SvuD5mFJ3>LbNyc8zvs38?e*8zzfBeBIeMG+Z?AtpL;8LF zey04ty?&GmjoU%C#y?*Fhl5;wwL9ygu43l9l1go3j=UyvGCh^DBmkF-;W zjE1VV@&hAP6AN>7xQd0Hl5wP=tFn0rT-(-B*)GDw(ak|a#m7Pwp`{pLrWs~qf+_+5gg*ltQE&>oWX30;?PN8H%#NO%9Ain7P8IYb1W8j$dGm|lJu@t2x!!_ zh&9!V)v`-hw98iYL7PRDD2Ftwgtb46YW4}w4hn6Si}!Oy-nWcVS4(t*r}=3Xc&p_3 z8lb)P(FoJVN2ZPTW|au1L=A_`hmI(1d-Ox+$1e7j<_;Ae&b0`u*m9lNW-Vm5XrSJU#xBDqJisfeT zI46~4Z~b&%y$t_{#ctY<1GV$R%u<6~azb31UE$S%DmCFoykYjBR=Xg zp_+4%`muhoi81a4NZZ0>yOKoP(pdM>6z9@3-&UkvU4m&>vT0qaYi&ySlLEK;+<@+6 z=dKjr{ygWl;?Sm=kiOc``BbynRM(7@*tpX6qUy&5Lq$mqL+OJpiJgNvO#|q@>in+$ zma@2-($coF*yhHVrrwO&fui1;gzn~|_KxJ9-rUM3{Z)gtb)7?<&9z;f%{~2tv2`Pv z{p0z)W37Fo1Hp@m;3_#ss8zoqcuH^IGxDeL@J$_`_4@J|KVuOJ(VUvvc**I z&!HEiz^F&c=X>$1~suw1+8 zDd8i;aa_6}uDs-*NA4MCnM|AIn`fcXf;ti1>n#zWTTqrCQYY^#11}(Cma^{;2mUE9 zxjeJ0yYVq;DRl`wR3a;RG00RI_NAJVJrUQ?xAWzB3;#3d(|FH$csILS z^dEQ$qF~S1iXrKBRrG&{m(bV91)G1YutT+cs=tPpxEE#EvbdF$XubN}P@N=v&|F{m zKj0-j2M4Xhj%ne;w(kE9FFAZT^y}d8(I}b7zu_fEowNL{M~@fe{|zq@@ooVubY=kg zO59DKtQ#JF>D^&rCGfts)4Sh8o;#M=PouM9r2b>0`sK~T_p(0y&Y#FM{iGXJk+Fqy2*dkH_35~4Z%oIq+frd#m zqmB~5c$WsiyTSw@teM?z56}e5j!r8p%8n8iN$0&liwKaMBpc$MssW9_Ufn!V-MOkl z9;5>iKi@I$U$o2U=qrsIzl8u;<(+)2jqm2`@~&&v|LfR)-Ztlc<${L zyWgk=4dd6}haH1X=Tl@2lC)~)mijq2zib>|sQ2vp`0s!Af8K+7s?0PHP$%LAWjk*^ zF<_CTT8lW^aD5c5-NgtVQyg4dBJi$IpCXm&yNyrJ-eup7i7jQj!u_BTldw3MvG*h8 z_*qSS@$)rRH2@;mG;u3|jg?5SPDpp-|BcZj8o@ygxRJ;^u# ztjlfd;HETLw_H0g-EnJkG8C}-#v4?8KBbX>MUOTdr`w^eH7w8Rn2SN2s~wYn08n7` zOVs74?9}QsY(iUqesxttYnK7gdVR%;^vLp6c3t} z9}Ak!w2U+S3~GrR7YZ~13ms&5S6gAS{Z=TAd!pqYXbcNkov|XD#9cAE1;Q1UW;OhH z_Xgn9eTNCkryUGW(1}wbCI$2B^OWNH!~H9D)M@;*(Wf=34b57qlR`5sr`7T>v1HL_ zThAPNT2WKP7H!8e{=^=p>Sk~E@?Y;+ZyKyM`7pHG3%%ZYKTz1G+~1IM>b|}IBfVeA z*e9p@aQi?veL$H0Q%;BH|MhRcqo|L1cl9UGq--pBo^-dqjm5E?v&CAt#;8O*T;>xpj^xQS~!cC0Vj} zoX2*h0&x%@(dx-&Jxy7=Mt8$2O+fXhsV~L!-PuCNoIE18(u~bjmF?;n&apEzA+NC2 z6kt~#`I2dQ8X3!Hteo9RnF0>6Id=lvB2-RFI+M+%*k#bv-)B3DXH-kb*fb$(Zqvfs zM>}%8o7((C;VxRLu?`*0alt)edBw;&|JH1UR!bfqVJ!!HA9>lAt3o zPtd#4^@Hk6xEW1w2w{fBkdXRtlg2lqwR%%a{~$a0@?~{#_~Ks(!F?j>quPzv%O^d( zBTD|>!Va49Hu_&5*ENhWTxm1Eee?BRN6DLOc*%7{nA+5NCs(Mot8aZK@{aZ>Qu{SP66Ri91ZIm{cifaWBCK+LiiuH%xc z=mvJbW~BGgFkJv?j?IFA0F>prro1QvJK&JW*~dsT6|buZS{tdkn=0S$zDfoLe>>+R zN^IsxXsf@K^6I)>CFT*L{5q0&`RnLu^wOyo_RS(6!RhoI{y|+G1-=KRF18x?CeBa{ z!82?GYa&h_UHz31&tkU(QaE&o(=Jieb3qRnBS(v%e1*#28FU(ppdd@al^;Q*DdO9N z@<^8kEf-~9o-(E@;z|;Dhak4Zqq-Ik9a%?#-3StacJZWG)4eQ5P;SzIzpi|Dw5D71t<+b#}@+V4@<~VNV>u$JqS&H^oyeW zj80_KU0|K;8%|o_jLx&eW1=rYoILLC3DU2aa76&vf>V50P$U{CK}CmE!Kg9UsOF~3 z?ek1--mF)esXsy4C5qX`K;O?vp++6P29h+SZrMNhq2L|rrVapAhvF|6Y8hM(0P6Sm zmoLLu4hWJ%qLYKqr*21r{)C0uaZxct(o$w}p^&tv8}`l{K@w*{JPOWu#{ho*h-S?I zbp;|+91@5N%_6baqyRH<6a^!-HF8fWEb=iRIOZD?!>^O~604CG7W{2AZ|Y|L?iTvG^g+PhO^GtK%Qbo*N_bU>lqzJ9$KI5r zeha0x6ogV9$BY4VB8BXu=kD=Rpi4ujDheIWpdLPC&aO*@SB=H<=5)X8isjs61NXF! z0;Jh_P;dLNnWtDWv=nn5Hdm>n!8K2+FD19Xgk%h>1}e?1*Ootrx*pR);tTpVnKsw; zpnep8tMB&TD%b8T8wLZ&cU;Fy%B3~R=QqorUz9K1s#sB~ShK2l6<)DXQn5wsuh`zK zczaQ?bF1>bQf1*!lfkh&n{kz{sLCTHuKhVxmYf_^=LsD#;lrQsi~O#0Sgt(=;uSDP z;lcPVylDlK6=GwEtS?SlE9X7zQ)bimd33X zuCW$4A6LggOSg4vPef~9Y3sm1>(Ex~$nVxs*0ym(+oW~dbVS>FJ}}=;cS+XHsgrC7 z>OPAQE4`rRJFzE&I{esxzG#LD6KIFI+70OeF&*F!^9*|)5A~K9ls`cgPsH)RoL^HW zKE9wW`ou(02Nf%nI5~i_Y1#AT0t*0iFBRICxdC~Sa{M@ompFhT`Kd?)nlT9#r84T&m1aANAJOo z$J?u&TBGp$z&SMN&@!1fuv^)rte zKe^o>(%bvelDnRx{9YZ+QtT7r_@=uCRNfjgeO;TqEoYu%<{jKiw9*79uFMThRg%vZ zHmzR@@H?7lu5lWsYENV0% zel)WU5KQ%mT_ib|BuOF?3<83Zjz?m-p29oGHI5Sd6g3gVS*I-Eq3@ZLHrqJ zu1U?4%R8D*|Qc!4Y6gJs6dr|{}fM6GrNBvz?eA&SaONiRXk zgbkFFLz(9SBFTwznq=1BO=hJB5D7T&$un?)41fd(O4#lp1%S{1V7#BlJph>GJ4s}9 z3vKR<=nQICnx?#(iZVd87a}v_s&q9v&AL53X@QzcntK9~tGT3GG?jPTp;hj1PGy`~ zLQYqlg}1du-I$1aup1S1i8h@>|0s?dU5Na$l@{Kc_E^~|K>*sD5|-ABSlf;w?+iCT z618mWatWuf-M)8ak(6{(X)6p$MJ~~6HQ&EIEq_a;-&8HoW+qfWetdU;2RQrV51j;Z z_KEuvBI4pj#{!UxLJOr-&V^s36}_uw|6C zgOEtPU7+h%_-{(R&a$Y=-{lM<5xMEn`H^ENhVyOQ4i*Fxkz8Bs5 zm3;41VQteZrPmaGPxuR9rJQ2MVxayO=CR!pfkv(9hi-h5;lHQ{PtBO47BQiN7`Z+vo% zp^{3R!zEf2CsKAK-XUk|q)D=h&d_NW)%&|xFX?WiI=z*VG4JNEaMRs~;HYy!M_!M7 zcq8KoIb)YOb3pur30PrS!Gtk2_Ig6&a*C{~X=S`a{F^>dpd{)Yhu#XtieAsfOhl~8rWs9=X zh^q{U*^hQXxZpQUETVo_SK)DM-nNq>8gsh4`?}-`xhZr0K_&k_pFp0$tvquxkR`aB za~bVkhbGp^VsK_3Lq{+!hHum+gP@;tqGWPOtzvGJQ%HGG{9>aR!UHIhq~S*I`{ipX)4mBEDjh@)T`SbETmHKROSTn^hD*K6Sb=oBlmSC*>+c0F-V1*olA;AHw_?rop~;}&&q%rbrHJTD*?Tpk z5-LRN>vp=>g_y!Q2|RecOzwJo0N`~e1*|R0Crl~guK*jdy&u4habVVt@Z>rm2yg|p z*>gcw18|?KJ0#baYDh!n5yU^qIJjmqK=^2vW!HJJf+U)9??R>-SB%MIko#ZYCGECT zrT9bhhj)f!NZHJfEFU{BR$|J`zgSjD#`d(&t$G_(OA4j@k@{*~l0$+jh;!Gz2ESLC zjM>o9ih&J`09q=J1bw=Ek>vw$HE&XTYh3N0o1o!7LY>#}tacbf_bb&d*0V1ld1UWv zsnFq*4~tdWRkr_vm%MqJd<`$TeCYR2k9pQpx3fW|HZFP|UI+qC+9)4XCfZ$lbE1he z+>0PIHZRU2B)?O8BBTgGk2OuiKrcmvV$D3Wn!ny>&0&hA73F%c2!PhX*cw506SQn= z28u`gpK6sDUR!_dqZANLo32$n%~AZjUz`5qG6&%=B=EWJ8eZ~fQd&=}cki*D#EY(P zbNxe9zD-0h|B!OmphuwCnN3&YS8D3NG(+0c>Si> zGb6so24L+wr`4{un|a0(Sf%<)i{ss~$_<|GO*%li&bhzkQI7`&%dCIuS=>#OGq-YW zcw&Bglgd<_tLXG=m5lw72pUEqLoH>);(1gh|F&dIiRw$r{_`zcu(0BW9f|;4NR#`r zp-=Sz|G<;87W!heql>0^T7^;mb>PG${m^^V!D)YBI`zxurR~LnInxh(t82~H!%ytu z>9iE>6K}W_i<*^e7pSC={+3ⅇZp%8Uz5*?k2`uBun7|VQoE#x5jRcA5{#6ns>x2 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 H0gV3xP=F;( literal 0 HcmV?d00001 diff --git a/docs/assets/convert_stubbing.gif b/docs/assets/convert_stubbing.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd0b0d47b08bd8578153bd01b7d3fee9680cce37 GIT binary patch literal 57817 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 literal 0 HcmV?d00001 diff --git a/docs/assets/convert_verification.gif b/docs/assets/convert_verification.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c4c4b330a5055abe2715c225ac439c0a4d05ba5 GIT binary patch literal 40122 zcmb5#RZv@P-}w6^1h-Hq1rlh0ws>)u26u`VFYfN%;O<&9xH|-=3GVJvf)=Pjm9~_7 zb3f02zk46-d1v-Pl3AH+t+Tae*5~^ElvS0)#H}>(t^t7n0P{bjT8jF5^0L~B0#Ety zfPlNdeu2R}cfZ_sAHcuMYM36fJYwT{!v2(ljfa<$=g|{^M{E+0*aaVPNpe3GdLkNFUW@l$-@8s_h9N^>T80_I09O&Q|;PXf$>akwpBl9eg7g1a` z`E21u(vE53POqN?)QG#6OLtwI2=cq+nM3y{9Hfct78Adng$8|eIM>)o1`9{V0#^&0^ zS2!e~Ju(}e@&~+98pBgNebZ|K3%bIqi#^IZf@%g{wGLWjU>x#?-BBaHRl_lcJc;H) zDVDrRR>Ij1Vv)wmNp?yxP6qKl#yO6%1>UOJfyPPBj*)?OIU&v!0qT{ZdQrZyk#W9x zQ4aZ$E=BPU`3a7>iLZ*%JsP53w8xoN#o5**y=u≫-EWCtLSsJEIGITgroaD?=iq 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 z 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 Q6XoX@W*2T8=nv5RZ(Sx6yZ`_I literal 0 HcmV?d00001 diff --git a/docs/assets/extra_interfaces_no_argument.png b/docs/assets/extra_interfaces_no_argument.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfbefb9512909ba1f6af18d82e40e373be16ff2 GIT binary patch literal 13211 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 NB{_9qq0F0){{^Gk70>_x literal 0 HcmV?d00001 diff --git a/docs/assets/extra_interfaces_no_type_is_interface.png b/docs/assets/extra_interfaces_no_type_is_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..ce732526eeddf3f75d27a097491266b99b791c02 GIT binary patch literal 9215 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 literal 0 HcmV?d00001 diff --git a/docs/assets/extra_interfaces_type_is_not_interface.png b/docs/assets/extra_interfaces_type_is_not_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..4e805a2c69cb1ca65cda311cae48516b46ccfadd GIT binary patch literal 12211 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 A6#xJL literal 0 HcmV?d00001 diff --git a/docs/assets/interface_extends_not_extensible.png b/docs/assets/interface_extends_not_extensible.png new file mode 100644 index 0000000000000000000000000000000000000000..7d25de794c386ab805d105e5efef353d1cc0268e GIT binary patch literal 17623 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 MU0)6H`1#xa0ylB%G5`Po literal 0 HcmV?d00001 diff --git a/docs/assets/mockito_reset_is_called.png b/docs/assets/mockito_reset_is_called.png new file mode 100644 index 0000000000000000000000000000000000000000..ae208a6118469a3afaa4f634ae5c0fed8dfd8af6 GIT binary patch literal 23721 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 G;J*NT-)7wa literal 0 HcmV?d00001 diff --git a/docs/assets/non_mockable_types.png b/docs/assets/non_mockable_types.png new file mode 100644 index 0000000000000000000000000000000000000000..89b5c48e167b107306396272914b66a920eec28b GIT binary patch literal 31966 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%0AW?` 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 Ls8M|P$(#QLgz`pa literal 0 HcmV?d00001 diff --git a/docs/assets/non_mockable_types_with_do_not_mock_annotation.png b/docs/assets/non_mockable_types_with_do_not_mock_annotation.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0ec91d6f6543e0e6ccbde27b12d642ad4a742a GIT binary patch literal 64532 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 k`TzIicLZ7V!sS(e*LsCFUjn9-*(^b literal 0 HcmV?d00001 diff --git a/docs/assets/reified_mock_creation_with_arguments.png b/docs/assets/reified_mock_creation_with_arguments.png new file mode 100644 index 0000000000000000000000000000000000000000..633ed07daf4267ee47a0218781e62df080b4b944 GIT binary patch literal 26129 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 AEC2ui literal 0 HcmV?d00001 diff --git a/docs/assets/replace_times_zero_with_never.gif b/docs/assets/replace_times_zero_with_never.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce95db19fc5ce1bfb22300bb07603870e94b5326 GIT binary patch literal 34085 zcmc$_bySqm+cx@4Ff;VfAT@+Abay!PAR#4tke8N)fPk~1Ur;FP*{9^$3;4&+YWVmCg+--A(9+_fQW6rGl+H`3 zOGqn;$ZE^TDND;~D2hrcNJwdjN@MDyyq$$SbQVt7)q%sHv+9 zqYZ^cZKM>iQVKRo>iUYR_QH~0;wqlP>cPqy*F^QDL@{bw7)=oatfbBr6&RhE^9YdB{1KnrPbSN;zQF{jpMBCTjlH8lgr~L0F|w8>wh(Wqkvzp0S;| zg&Ee$#@-m~blKd-)>g;F*Z9&c0~;?r+fXY9-z!eH&E1_Gz5E<~L$BgIog?qKn_s+P zYU|~o>*3-U;%F4&WZ~!F>+5A7=5{gM$1W<+`P#K>zCNMX!#r<2bd<`_gYT#Rn9zWu<}I>A36(K{;HFET6AH|EyuxZpe45m60dY5r(p zw0B%&V9d>s_z+QiiAX|&Xjvn=j4WDNiLPk5LMXk2Z!{y29ph_l5<9%(V!acxLt+y{ z67oC~D}0jLeDC#!q(2PIstqe@3%K7AUe$BAsn7e~U|{)B0BI<=YB0f0D#b-H-Bl*T zT|U=aHSwxjk_R^4*E%WKA>U88I1rl?;TRKsjd;T?|F%y>m`PQXRa|I7`JIHA#E|@0 zuaYG1qGX>EV!(ssi}f*=TN0i6OD!KHc-ExeZOHPk$qnmBckjyaC70ZKToKV#6*X94 z6Casp(8UsLbHzw1r^5BE@#f00Oq5;< zk8#U`i5#?bo%2LX)l`A3$7G3dYxPXAYVg6?)gkl$EO#RSXzGb-pr0e-`}mb z`n{O#>-qU|%IhJ)_6ib&a}7JDkVUp_xZ1I)0uUNf2uZ8{)O>Id!jmh1NvrR$PDgUe z3SQsva^-e?*c*a;`fdIuuo;P;;bJW?!pF^fj}P;^f=wUSM8zZ$N-C5LY-%$&-OI(WxNg(fzux=k_ zf0;BA?NfZ6@1gzmUDI8TK^5ZqmkC)7rw@`^-G|qeM8B>Fw*cB4u1Sqxe9N46m9E{` zmw9WU47VsAj>g)b03sORuGBMd@Mad!}Jb(F+|7$Q-SYurgx-ySfPf^?@q z8+zM^W$?ae?3@Na#fbWYTq@1HTePGw^9A#)^oWxfwvVzg5qGGxMKCHT9|3w@^aAG_w2{;)9%(3RNw;GgFLUuFBv#@T z`{%Y{=0H@6nQ$c++;>#W_H)V=XeE4a+*tB@R_ggL6t+d8D(nFz&9dd32zI*{+h7hT z1($~eO>|M)9&(~tFmS8S4KH5?alh9~sH-;6i3D=O8)F#wN(3+mzaByAnv4`p3F?eL zz;Q>rT+&nbO`4NEf}2fh)JJ}#>ubhxM`JGox}r*T)UIU}r$R2Wq_^Vt&x6!?4gtO* zQGiPJC8MQ>E&~`pciZ-ZdO}h;&-#4`Xjq5O!)H*G$dMQU#8M~WjSQH!L0szr>LmMw zkZ;HfoEEI=iQBFrJCqEWra`W|;fW0A)Z6M_28V2~*UX)W={R7Uj?RVxG2M>U%tqJ# zuh%e5n5rO1!$^|!O@f?5DdxNgn$ia2rqSBgjCML4jhiehYc(yvw`Z3aR(lcpqO<&T z)zT8=kKy@YU#4~NvLEq4^RcTb5=?iLEMrWTNl!Wyfzql<95H=*ZcXnQ2mzGZw5CLY zvA~D{dmy#C<}A3W8G7m$c*$Zbe12Z;+kur?X@Y_YSTZ9b^~p;}+r$y0h z@#e$sz5eadTKwdGY$b=Iy;eCxea!RMowTTVyHqskS~n<4Uuznd89!I$;d%4(ciw#S zIn2+4`&e#WP9e%SxI5FWAD;&`?>51;$oEtGY@KJ~KeY3wZNp{L`oE=rDG=hZ^mE+qYnDf9Mc`=_oj2FZ%2V?T>IeTb?0)K=dco>cUCq(*-BE`OoviotC*jj_>}Kxwug z-&N?qO@4nde1|=#76N&};#C_9-;SmCLSaDYAg;YojW-@~>^jju!v=yvNn^ObqQN|z z3aypbRNw@HO8C4m-IX^uM8nF6boW$eLUH_q1=)rEM^Q)!YCqY7{40aP4#m+|va zw>+XxWw&XoexQ@X4S1R&r|cX(=k0OB0ptki5}lec^(R_2v1_&2AMS>qALY|+Ib#(D{&Y4P_5!6 zzFy-Wf$D`{I{kw9ig%mb4_wNMLyH2eKJlKfFHZy~@{$R>su})Y2=jr#s5f|8BX}Rq z`%wj4JU=EaRN`%TA{}5J6H2>7GWi~Sfr<#0T~k~N)H)XCHR0ej5+!POdKq?x;@D}i zUTIT<86VNWVW%lAhmM_4kTu#GH3s5DWzFkkedXladnxrUkY>u2k58VSk3wV8bQ&%) zV#{_24N$!p`5N>X7h#ka5^gVZfBs4(<;E;~z#R*}her;0J(X{Zpkw(IRwU$stp9nz zype7D`v8p3m1-bSrnxZ6f7h^z?MBXg?y+tZD+cm$H8su^Mhr?>%FA7TgII#)EmGyl zQDABoxx)qlclAKyUIn$a(YzKgLthvj5P+`GYPB)xAcGn)F+}5-pGQ}x1cL-|R=jqA z1WC*y{GP;;;?i(1@|X9LZV>O!EPRrLItTQ zBq&6dQCk##2q>^ug$9I{oXfw|^;UtKQv4ID#Bg56MHP=?R2PPPCDNL1!(TT+4Lr;Csd>e| zB<=r5!si6k*T6pH<;pc7D%mRQ;V^f7*^EP23??sK7h*R7C}L>VWs?i`^IpR9bMRCd zvNYZ}1H}V`a!URe6&joCh3CNqJy=!k16esFjmh;&%Pz!Kbx_qx#TI*|5AjOwtEwoL zl!sX7`ZqUYJgzn`t7fvOusP|6o{DwY>&n!6tQ$``BDXv|q@k%}?Fp1OX@B0;sSr2a z#+w_B=q~C&UQ{v|0la^Xw9k_n6B9zTlHk8x8HX|EydgC6NK=FGIDdHEcT^ojzpf&p z3_LG6$1KIXY|4>azF{p-L7FaIHyvK8zIdCpWsT<8lsPGS&v_5&@tgN8*m(QgX!;RWfY1X+%S*(9(uvCXj5 zCg%DksX>5?q`D`H1FliCSj#OefVP|Hv}#XVBqeyoQ_TsE-Y;6sYInig6zv6^n1V*# zD71bp*G&1iagO=XM0bO1Pm7jnsKWR|^J6lrE^(Ovu;8z`z=Dk;;wpzWKDq~|*o>|4?3+bHgPDgkiL(+T|Qs}}=moci~U+ZP1-pVRig zKw!H6K%@VhrohX3x{p1B?;;1KPX=Wh z%*!;;a?V4_Q9}$nJnFqenp;EKCqo#XVO`B(edl4rs9|i$@WtL?)2(6ilVJ;<5i89R z8|M+*s1f^;5y##U=dF<|CnK&rqwbocp3b9QQKLR3qt|;!{kKMMo{Zvn#)34*LY&7! zqsGEZ#%}kHMQx4UIT<^}^Nh!6j>kEVCq#`Wm5itKj;C#nXPk@^c_y+oCvu%9@}njS zOD2kXCrY*^%1$OoJd+iglMkFHtD`1sOD5}jCmXgVADv7#@l3U7PLZ9b+M}jAOQyPe zr+T-h`cI}PJkx`k)5Ffwqfyi2CDW6=)6-kivnSK@JTr@$Gt161t5GxSB{LhnGh16T z&rfEyd1iMsXJ0wb?nTY+m&_jY&c5H8{dh8a$TRmvbMBk-+>fZaqmsGby>lm9bEhYB z0Pj3lYaZ${4~w2hl+M%i&C@-bXZSOZaMlw>9Xn- zz3NlCdcAMe|JmxzKdU(2wIHpv5SO*k=(X_DwcCAbQP0-y{8_{EuE%Jt$GNO0M6V~6 zuBY^^r#)NG__I#reVVQHG}q;6e)QAA(x*jzPfMOXE&KD7#Jf?Uwei4ZqdIz{wsfPe zZ=>Pa#-l$QO}v{eTAO5-&GzWc&eF~9zRlieoBe+_DZE>QT3f>|TcdyGK%jqco**>9 z07(73mr*sCC4xX`6 z@-y;hED?eqfShqexNSTD1+yaXC`=4M14tq%coG4iXMjTgi2(-~0m+avmX!v80+k>T z0|dfIMa4t~V}`+45Y(*HH0-qWoNOF?oLv0eJOYD*6RWH1-@g6)`}gk|3_=8eC<4T7 z0)dKw4u!@X4#YyiJhGhIO%*yY284Y`ErvpX{@WY`!0``r03aTa0v`Mq6czLT4(*KQ zZ6)`fVV-ecXRt3{?(Xj&93Fl>!$10U{I4neixB&t?`IU5%zvlIaBcuCQsA7$e3L+I zDxI`zul+wMG8XMLbe8*g3@6pi>F|G0WMHH023e-+fpq2IgAlCzPF#^j;76W|-(sfA znDOi`liyx1lrhmMmR?+`G^Jst_sMf?tGA045(9i(2QV>@eU{F(p=<{LS|(U+sgn|B zlNQcnuZqim^r8X=6xyIDU?})5i;5O7pbHuyCQBpn6wg=x9~7DS(e}Xm@wNcH*+vby zPtWh%g_KJ~g>USPJ`ue1{FYj9-E6r^x^%SI_XGXM9xon7N6vnH?nW2G_$f&9SI*vC zEFI$COAQ7jmClx044?<@pZWIX_OpM7iakJuphNwWPGkhzkK^2QW2l8L`eT^{^piR1 ztr~m|-AB{7)fi5&@(-|?!a_y<_Q-1&<0QD+qml!!O##rr?gzd(dnWmU(J>)tRPB7Z zeCBUYF%;^*fX|-+bNmlrz5f7%0hDl3liOfC1Gl*5xNOBhGEBmeHL002n$8Qq*^3Ai z9?ND2)tYu%Jupt>zj{0Oo*bZ4EGGr~UvYe99M2gB^6dJ*8)tNu2dpSrJU$iR6nTYS5ST5yV0MMf zY2*6803m=R7({)xRxJMn93LM2SEL}!062mNLE6U005EaZLfrkK1PBzHruvzr2ci{V z7_POb#AHBayjY)Rd5*`UxQc9&gFL6QWiE-oN;)Lz5I{WY(+`6&_;PK6^nZd93P}C| z=*})?pyDhj&uZL%0RNNKXUNnDRs;z}_y@A4Dh{s)W`N5&qXS)aQ)pzw8?ZQm;WR!q z^DP8(`42MFKgtmUKnw5#5B`Dt ze_UYy=LG*V)BoKUL>M51NCQYHomdDQj2$O#V-QFoOk5LD02)s(L(@=bQK^^8sdICh zv&CbAzzC!9DYV+YSRmnK7_O#JeKAjtYQN#(lGjkFJc~BxIX52*5cFJ~Bx$*dP_4j% zVI#R7fNMdV7~XkT@tN|gTzrV)dC=L&zd8vVpavv=oP`k0SrAqJ%gYXieg+QsiAQ(K zhQ`PvWB)HUoq3-H0maCIbO12RIh%2$z)&0m3#t&!G@zFZ;dgW%$9W9L!J)8lPWb_B z!ud<$rp8vDCOI;f#pz_Tt0%KL0{d-LDHtpmOe6en?+ctQx8%389HKs((LcSfq2{Kk zs;8rI*3Yp1`PTl~9s$Itsxyv2tGoJcbyseCYinlb7-?i|V)V(_Kj-_e;`P7t_#M2Djm4Dg)TJ=08WE)ljTVn4x-1lc~;F6t}t%;9|RS*_) z%f>Lw(%R44&KGx6Nj+ZNEKbI}NaAveq!UpU8?R!Lqhg<==3Jm)*(mOstL2^`=XFo* zMy-O=kc!We>dn`Nc5%j+>x}*KbiL|yuXSQ0>d(YOE3aB>pFXRIdZ*hx9=3^IQEA?h zHHNrFqwo)QDNbftH*D|Q+t>Q|XE}Hjy9cL6hF3UwRo~D^_!-k`Rq58^zjCtuzO{)N3Yj*X=TKnABkVLOKY;$+s!;0Mcu6x~8 z`K>*5_tGlTD=Ujh_4Nt073KGvQ|ixBs5-H&p^!{YZSBadYizCUd{9U3AvZoGH#f9( zcIOq2CbrEcKY7*IF+l2EI+Gml_w4pgm$WRmJlgJS-tNg5o=Bl==1%|F3Izp*OQy|m-XHb7d#F)D*Posg69z!rU-kyH%saqqk7AJPw`RU zL@(pLSni~yi>R-$w96~8+7`4IY>(Ps7K+=bD3*i_}ilb5=bGgHI zjwEpByV{|V)c2Xht3C&>V#_daTqR>TmAMZp7*yT4lln7H)hz*Kc*GwKDMbjz!?3a$ zbYNd5{zw~lXnE9!Z`qmJ-?3iKJip?6lXYwwSoSm$Z!vjklRYs!gllE@_KI%&sIJof zj8H)aO~xfN3WG=PF&0sMZ#UC^%!xwZ4^41j^c{W3E;2mGw+6OqGKn;~wm~Skb79&YVz9b@%nEAoh#1r4a{? z4eXzBL_R6t)pc|Q471RH5wv|MWnky{#=MxRR&Oey-?(X32!jItY48$`(-BWgZ3wL^y%wVFrud z`x@3C7bF9L&D4M=hqEo8hj#_XcLA}GjQf|(%$vpcO&(Fal9WD{3`KT+|zmws-OJvk%2`=vW8#(Vz&LnQe z#%FZ`;J4GQ0pkOL!lyb<&3&jeGWOpox0nB>Kiayr2Hs6W%IxqU|6J3lzxAQ>Px!0P zZRgt8e|;?8ev$FbO!bvAwrqeUUXMw^dn;r|m@lQn{9}N&wRzaA#@Awo^8}3FBLU+z z$IhgR9Er)t;KeI}FGhqidJZ2H-^6@cQI3pwd(TdLej!o>-r>;FDBSTT;Jtqdo5~Oi z^{R!bG?LHDJ@^P;M!T#X2cwi{o)97*1vgAGC85+o@k*r=4iGnU5d9GY19|cWy?n;$ zQP_nTNt_vd1L@E+K?A)Errsgx&eY~>5^@>+=$S2RV`_ASbM;{7zS$PeEA^CIZits5 z7ye}p8-Uo#Ku-z4B}Vvb%J0BSDEi-590q^#Im*3>+ey}Yi5TPktqF>N?;HM2v3^3I zy`Qo_xx>!Vp(-rmO}(az2%b-(K-)dE{C5QfD7A7@Khm}RC9yAT#s-#-lBZe@t4|3ag@{IZCQx`_^pmS@Q;a=kj?OwTG&Ae2wG-JI82$EA`pA zrmIcU#VN=b)?QE~st#)IT(pob+`1r@1je1C)h+=sF13ppd7T6C) zqCDbZNm7WfEO43LH@vsEAg7&qb)OP{?>z{el|aq+VBzJq;%_T#TP#Ng7%hNRug&cK zW_2O{Vapdns@Tm>juz`%Z}FPX)M1w7 zQuR({YURudw7ue1^^_la!4NC+BP8w{yMWce5y3VEup0}EPBOAaF((lmIU*24&Hc_*4}nM z>y*LY+hlWN<41evOykY4sm>M|H6jU&^wWt2GYd-x^NR7#} z1IM4;>obo+JEmO9cqla6ZG-ffR3eo<=q@S?!?D<2^Htghyoke*|>>{`z83`0#Z8LWSje(glebo&*+I*hPW%I`u2nV z4gmk)JeABLh>_QP9QgzPg6L^ar-mF)ahiV2qKBrzQ$YG&rbLdha1rGjvL>f^V#2MBieMeH$R7 zsJPMDBLKxNhayfV@~{jqq$uO>^Gf+%q}|X@*2a3srCS=l5nYMB^F3bJML@X89%WfO zbQhi-%ME>bAxN1*e;aoY`wD{{V^B^K(eU?TDehI9U#|HHsqp%nh;6M_HdLJPy(CJ# zDk8Ypp_96AajAPTt4yiW&PCYP@4?!WYNou#MxxJ~ybX?u4p7sd{bT3&ImrEQ)9UmH zSy!(ScL0hyv=HF)(0PeR4&EVRaIuWeFWE(tSl>7Ci=7B~m|{MsowD@fSQ-jxX~y(Y z4J2VMw8F1Ekn$sPW$pJkG$EQ^gZ%!oUvj;t_gsDC2BW2sBo7f9FTR%Hbm;>vVP^yk z@yqYQb0PvN0M*47mvBi!1=itB)a?G*U1hh@#qPZqK^?E9dIrpX>wag&9=g_dvqG9y z;G+izn6Z5(G5;@oPyTWEXad8nYK~VgX$p=;0?dQ*zH;uzhN&;mW4@Gn3?JC9{eJqU zKeVAuYc}A?akkpkuucz=Pmvuol;UAHcM>NYP{mUcDR9~MMs%SRwNwri?C-iGmEbH0 z(3gx`8@sX%H3p|L&cCHe*4fcC)c$au52TIh8@1_dTl6@Uw$Mgg{lUz5df0fuqg3T& zb)4hEQL}P1fZd*ZmZ){4LQWi#C4C<)zk5t2NL8RxIy%}OrbfIy5DIyyg0xLkG8Yjr z9)%ps;k`OM;Xe2zrhwibZeDNj)cLnr?Y++-2=twP^aAcr3zTz5qYsRHfu_5^5~Cs) zBY#-k-7$)~DC*JkCVC7Wz53?PVTU{0;#EQW05BH+H58xdMYxqf5a=X;7YN)(_{fg9 zzoYOoMK=-|2q1%$kv^uBKyr;39mPGtOVEY_m&DwH+>du24=h=@ttShg8;g2VAh%c( z?d}?>+k3SZ`;m2`)oiQ8UNzc~2 zX|p^N-EP&`#Sw0KPL19=y`OA$ zKG9c*D!fzF3w?_l4&1TNd~KI0zv>&u8NDW&mf{oZ`!#C6Gvj>{mjDOY0}16y&YTKQ zgC!@^5U%MGAugeuHE6HkwOfn%r@|A4*I=@s>iuLhRf3Edv`8>x3GJ^%%t>s|v10e< z8t_I;1k(QESMc&N#bq88W(Kln-j&T{HO~HPlx60dxYhx+8^`G+A<+-BHPzD1v7xdK z-g3WkhD35}baJip-7P`5Y0QV({^ddpaLpTIJ^n&ydA{sn{{GGyfX@( z4ueEIO|?#RPu`DpCk27jvL>;}goG@-n7azjFH9`~I+2@Kh*X=0AeHgWi8+X*IPUx$ zL*JZwF@n2STn!(UL3$xFqlyMTrA+cJA|ISSjD)wDoIJGE+06o`10di?_0kH9~4Zr_#6mF zmBI!89WB0}ftW0V%9USoC|53$HE^#BR!LD5E8cRrU3(CrL0y5l$6w=k+oeEmFMJAA;qIcM6gjE*?FwF!3lk{LUs%7S|QY)fLrW5M$pC z^&Rqt32ShL^fA_rO~&$(Y|U)5bX-I+dZAnjS2_yQj%RUt_~ zd_QmaL@70W?`DF&dkkS}c9u)%uDW{i8pgWm!XshvZlxK;-6E*bBJ9*664`<-ZV~Tk zk=#6Okv?vb`EpAosY1Q0p)jn>;aFa!us`Z`7hLL1!G5KN-*>sb9 zreRuew^?bl**LY?Mz+}(w>kE-Id8UIIc{_1ZZ|x3aCd6=ifs2OZol5s{tpfFxE;6I z?#bN|;?xlu*%4mcal5A@in}9tv*S#|jM3@+>@Nb2cK+w9CZ?j&+|>DPB= zJ9Xtpb`=(P6`8c<_H>mUcagZeD>geyHM*-KyK9TP>!!Mn+q)kfcQD0ep+<(wRep5^~LBXQt!%SSetWZ(0PEXzyKbhX_ zH$1*$2Y{d$0EwfDLV*%YJh44B2Je!rO(J<}08x=PL=>6EluXy~gtMgQ#Dx6mCjdDd zK%D?o&YdhiJ#4)CB0^x_#i_0=4TIq6cO159vK{E{FK zfa=o}ls}5PY65kyIu zvOiFMt{Q>^uwejvzPrYM0^8$$83_xtm@F}!=-!&BKdERu34F{mrEEGC?mE>eIW40( zzSz(eF9|~)4!EO0{HB0C27mw{cMCGuHKCw)!tkUbgA?d}KWyYQX-xr3go1Xb!LR9n z1JgOc0{X+mbJujlt!~=w_TX3Nxt?CQplfuM<~$%v#T+&#Q#Uv25BcLv2GVCEOGaMx z&KGOW@Z9K%pN2m#0iu9GVKX4gf{dV?!o^%C+iMnN>VQF&SqaSihpoX+Jab}wizWV% z@;As4X>d-=0!L{)N9mGeDOn;PWV$^e<-e?vzM$YjzQDVz@3f$AMmEI$jVs zlSlhzMAKKqqnD-4$Xd~>N`3Q(y>JfVislU5(v0jugs^hVxN9zp(yd_|2luy@ul-r} zHCqd9oci0aX284dIJ1&A)438g10l|AZq2;lne{1Mpfg*NIhd#ES^$7y(2b=VQgemR z=DB8|$M5-bB$sKU7HCSJwwRJ73|FXKHhx5HJmj5jxH0hP#%B7T%|xg1#FFvUt?^8r z3H{AdtXOCpQqb8Y3!SjXj3T}(%2f}KN-?V8#Q?UROXp) zIAs>OwdjD}_#8EA$5S0bhX|D%#gs03(jm?_Jr!PC#G8^C`=8(8eJP{96WlxErapj8 z1o4=U^52{jDBD3if1%3I89yDXX1XZoPqFU_m@eJbzw*keXIJy+2}qM7l-BmrEbz$x zm6i7Ei>a?@N_R1KSt z*3-js884cAgXw>{$ls=9`th9XCviON@5fK76a)kC0XY0DDKk|={N#4=yKUxo&%;k# zF`wPKVezhHAI3Iiq=?z(55p(lg33F$K9WJ1AAO&^-{CuS%KVseSP}i=>q^E)h8UV? znQxkZpVr_%eCR*AwE5%49GS@fGx+K+Bc~xY+hAY9=H#YNWFjMwn@MiFdz}B|cul!Y74x3$?ibm+G!HQEL9)N^{QW*Q z`&56Z$IzS4`=bBa_HcK;;MR?yGb)Q} z#w{@&qODH!*%IR!UD0D@r82?E^tq!giq_j<`&@w-wut`w%zjz2bds@^rl}pD-!KZ} zjW%F0tV!45vXpJ;(mtz+O%o`+1;9YqpdKI^Au8h{oB*OBi$DTqn_i|dZ*4RUF~VuK zGtCi`gbN@$&jpE(sKJ3Of_sb@JKI9x%jyyfwto~;;m!GANJ;% z|6=>X!y>?!N_R=L$@+p1ZsjUrPFm|5(1<_O*Xss@H8 zY)@^_CcgGqkf-K0bGo`*5Q$EOx&=kg<8H89t!UwcN_2)Kwc652*1i<63wGI0))HD2 z;rA|$uYKzMm5c1iPJ07uOpn7M>A6;%(1rv~wxrEKv&&W^#qRfvjcq4fJ$tD}%$Vsv zFS_g}`3$o>1Usydfv0$?7Q8k9gS7+lljEc`CV|PFycD_$TfvmZ5l)Q%M6UdKU>sdP z_+V0~U?76KG3!O11%tbY;+1n&=V7J8HrD{b=RSCa^=+;>LeweSet&G%wH$BdeaI^4 zmoCbqLe;!v92G06UAvR^*zo3VytvPS1?=kWd-tscAB550d+Wk_jWCYP8*a|gjIZtB z62C`MT^_9k^>J^vq$%1XZd1i%ZW8VKsc7(NJof0Jgk3=z6p>0O`y5cuTXz!Fpz_Ad zF9wHx$709oG2Vc@A9l}w_ zC?=OYoKO;EG?e}MZ}8pws=^G(ka5}SvS~3~d+H^~sW>I!r$5^6&ewZ-IK!@3Vd2|s ztVy~}9Ru%~_67Mol1)M$nCd-PSR$|>oWU#j1?^4ejs$(@h02Lq9Dad~!Z z0cJO>mJ;@bB$Dkx=dc9q3hAp9$8Q2ef5)N$MdD<#vc;mr7l;7g-PcIm;Oe*UFrVwbWUt>Kz^wVLPaCNnmc&$c)-u2DwM!@j`mwsp8Co9KZrmGrjT zpenF{u0p5)t%S2)gYoa{_OafliGDt@3vZ4wt6RQ_PQJ|vR-_zsoz9qCl#Ve$5+G%CEeiJwE?hBUGm zm2lPU+O)UjQ=QLX?gu-0K&P*HE!(9?R zt|u*DI1*(qrae4 zUWdxps(YsSwH#Z<0@^~RyZ-Fl1P>2oL6~d1?CS?T=n)YjGOvUB83HgL$>u3{4uF`q zWA9LXNl-m~vK-4njRr!lTbE2m4lPy)sV142lBem99n&~>LxOqC~xwVq;l;b7hr%FoVzE%cz0t0sNuM>jh^QoNKl6H)} zHpJ$Fup~?m4+e^~u;GeWzbBz4`Q+UT;BVT85d2exc%$HYfJ;V9N1 zJl2qFNZwiQryrs^R$}*{zs*B82Ct{aLs4YS6k8s;+Nw^#QD_Twsh9g`Bw_MVWUeVp zlp}&cvUkWt6F}&27b;(e;Nccvsqx3Yjss0TIx`;4a2Bv-a!1tH-e{pgr(SA&Dxd7j z5q=)L4FD=T=;c2#xXUt{;HpumF%&+9`{_GF4ZR^h=OjrVs!KhO zzJwcX1|!an#bbLPMY2jn`|FmP^xQVZhLEKQ5A-LxdwM;d^c|1I$06uTWGvrftZg*4 zQK%Rw9>IyQE>fg(rlqQvohpu}(Su&=o!B;x*SBaU%r~*-$igC<@hr{A@woP6YA(b@ z03C16S!-i&XoH*N;+|ydX|9YyctBdh(;)Wa0JVJ!0SnwzZ4iC0D!$Yv6xk-Fpw_kn zb3doZSE(#>3{v=Zu~pwBF9PfzUS^yM!{?PJ6u{Sy zs*9pjQuoCkf$@zO;|K`3aw{%wjJP9q)T&9`krP^3BwpoSXO8K=UlCs$gts9*6cC=P zkC{B%f_<2FDGB>{I%N!sg5ih>E*LH_3TBUFY)c#bY$fwzv9VLXVYgU&Z7~5s4XC0e z0db2MoCV^1(wwRE8}~+EPyL(Q^9Z+T`pXRrypL&>x<6~kFoP_QBlS2+ElHdU>7L_% zZd>H(EF3sCHgD*0{ZZgF&=6~;Xx!~WI>IV2M#T3^!=Ru@ zQ?1^u?#q}DHkAF9`lFS^bq%fggaX;|RJ3|}cAub=^=*BE_tzUt%s zo=4;+yuDUX*@zObF~tWkpfYuF$D|@l+b*-K2@aBO>60eA%6Z*!q~jtGXMg9ySCltX zl+4LY+Z^ps*!`8GTb5?z?Mdey67h(m;u9Y;wv=Yr)xw&x`2EUF)y{5pf#zYR7XtIt z_Y3C=CpVmRl32GU?UiA1!npUW5EhrQlmNj)qtV*N8K2kmBPV0Yr(J4i;w^8~iN5q* z!-eP3g%}~XJE+0IO%TvVBeQq14o3{;7WO{?&Eks;W>$6kZ zphQ>!F(0U-E8UgZ2QBFqw!fVyE40&O7K{$dz9Ioqb$gyRpIrQaD-Q>=R&x4EV z>D`o9Y{hcIv`VrTcO;v31QvFbS9Y);;`3&rWcmnlrLFMfw>wR(%#o<6>T6ZGMf|f# ze7^FTxzl-;fa!~m7KK{tu#<6a!H3Tt^m-Vn2USg>s}?S@t*LQ#oXw^KeyH_+o>HU2DTFk^~r%vE{4zo3{8LDk+YqyECn|E6a^aF)8>SlGO$1=H!}p}mlIVC_`40V(j8b{8u0yWPB1Wfg=a7D8sxC1 zz7s*E~Is3d)ebZ~;39md5S%7h#y)EwR_I82;!dbh+OFoUN*f0!1> zA?E}9JYz>o9C5Q(waFf3s~#bMzXFuB*j-yee9$d`19zG5nkoG9LgewA_tp$;xQf0=VGn%@K) z5ccKP$(F!hoo6&e0I4{*7^5Say2V6TFn4!zT{5F{?0F2Zf#8Y%g_sH^#>lk?M|Zhd^jBWE#q8n*YOF3Ts*-813%|w=rb4Nh3qfpYyQ?BvYGQFW&rf~TZzFJ zY#z_>BP+Riwn%8ZUlSCXhmjY-&Ued>aYpf9`L{5;XD`qDPBal#CVf0*e{7&SB z)XYuf6AhXAK$g|3g?d zpAY^EmW|%X(BCYZk>RWVnq}j(69wk3+ll@UEStLBIHrKZ-FQeG?_L6D&VRzPS#{b^ zf&GhRL%{bMtxV_qI$iyrEE|2*f3j>G>fhv81RTA|wffDnaekZc^cTyf=jd&r*A(AD zk>9HGL2=OA`h$|NuSW-^2m=1YG9;bLVR-^~!(m0T#PMMzT9yB(D(jxhQFWd}!%AB#{7_@) zZ506tW0;Hrzp%HYk``3aT~IkdLdji3J3!JfR7X_UU+R_tEJ#C9+D}DPQCY)OOViTu zo{EY)T-RIK)K$gM-&ob%(A-7aF3`f-#am0oLCxLuo_mO{d&oU^AJd=!8!bmCw?G@O zus}xvwFIbg4!?1>uzI|RQm&*)jD&eE)S_10xI*44Mbf%Jz_AYM)(Q0=kaVdNac-0F zYLN=+g@t4EEn}7JVznGIO`Q`hLlTrcn^b-4G$J|;JSq%Bn>?M+p5928z)a7O9=BK@ zx!6fH#NdOtT4U6(M|`3?IxjLg*Cw&aCZXRGUF(?HA6d{6RL~yT*s6(|)XI3Gm%Vs5 zdBP}T-lX7}MftjY{+x5goPFh{Pvx9n(@Id+hFkq!c>iwFU6EqjTh(sD(H8I+6Zd#? zuM7+KG&ikyE00(wUxZIswzGSttxt)!duymhb&z{ah!4uMAk!@~CnOsc-ccWpL`H?@ z#M@_AM0Cd*HAnf?X4;nJdG(~a_Mn1>avX;^%*b!Z&h1U8$wAe( zqUyS0+Zyw#23u2*bmg%(Jeo+2NI~rse&f`PaSAcN=%6 z8+Vo)clM_9P2ovzoOR15=YT({s;fS7zr{Hdp2so-aJxcs}=hZEb3OZ*^;L zX=i$3=k@OtJ+|Z#`SzINx_bZm&+Ao%fA?4dh+7_ORHM!ag_C;7wVLc z|6+jcd`@y)uqi6xw4r<7KaFcmp}dRY$rGe{XbaW|$oKZw2im%46Ju36G0itk^z@Q3x>5llxG#1JBks^3{`Xow#t5|E_%^*tINwgrPZ{ zSi_fB+FK+i(u^zDlRsH3T;TnD_*pjr!F4s)5;-d~UnD7;sW%XrV*Z}cm_^|!@vmS# zi0GD^hm}H{=u>%liR6}k`M#J6#+OAmoBI{^GV}zxdfS z4cZx{I&|BKmar-yk1r)xM<8#9&RlWe4PB8B)joLN5l=FSURnUTT73`L+IW}3B}L2c zOW0X3{;?PI6vNSd$2TTd<}DDvC^sz zVY1-$y+1-1N9Tb|MYukTA<@RvK65J@LWOTV{BLDbfS$YnwRTS0u zybp%rqwx{`W7vUAG4E44n62B1FP(;?3tRqjm*%XC3Mm8OiZB0dR&A~Vu{zWoj%7Cs zH$Ev@TU32qI&BjV^V{Z}*Px(#EAsR=k_l)s@2)T%=WwqZT64mO4e{T$WTD^=pTrqP zL{-}w_p(8>S_~NWsdnTBwff2B>i3D;!oDin4`{@aTu-M(XByptRgEgl&W*c1^}E?g zkQCAtjYZa_TsOPLRGQ7S1^mj-JGovl$c?D}m7iy*6FELdpQny z(h{$vy+=K5Kf$fro_N%;M>l9X^d!7J*>UIw?X$}%7ur!~kr;;((}Jl+G*0C#=Ee>f#GWX**J!xdbSHbjSH_q}>wsoBJ#FxGbM)QN#QofEnE?)?ah7kU6M)apbe1aH$MGH)gZpxxw&H`7wE>btZi#&-z$!Q{p`0@tz8?!e`VA{u$-6Ehwtl5 zNiD|e`r(OJuH*3H%H+Is$bYu=mV8Zk;x6txw{^z-v`h6V@8T4JM?2fB3S#)%^7c%1 zMQ?D*WYocDxB#O#BKdj z+;Pe4k2jxuCmh`7Yr7gUWoK^)d0Iq{K(5{Of@ z9pMhi0S~n`H{m4O?p7NDXAwc+TsU6LG3${lSF#;|0}cdf-7@SbvT$ z5yXeHmh@Jx4-EpChY-;~@YWZ7SS0~o6R=buV5bi*nF@2Gi2EssaGK0`<+l)N~Dr0k^^kbrB2OL7u|UQ3{z6j!#$}M zNlddnR&yvW&j=?M?IaOo-xkR-58R1q5_ImxUz32yeQToj9OC2D69Qp4gkA&_2V~?7 z!SN%(ga}kjPN-EN*w4BU`mmg7uRfJr#_zaQjkrRe3}#9l6o-;pLUY}95ExCT zl(PN2j&B<8`nZfRoq+o0{qU9=r>L6iMxpQap&;1r*C$W3zazUYVf!V`Axc|iHxCLG*mYTS;$ zW|zKo&qQU^RG+lC*IusA_ve(qJzu6jZ~2Vq`xf0(y(maj7n4lngZuRnAnxU@Fd@xaeI z2ka6Mg5U|tsV_L^$!EP=5Xczq-Rs|{QK(j%Rk~rR=A6s16jpl_zDO9cMd;#B2T)^3 zmPK&^Y+64)tdlXcvo~Ps`hNHyeZ_|d`L*AoFpNbfUs4InkZe>0X^VyK4k1iIsLi&5 zpBGdbn8F-2>fNKb?)*T)KK~q4;V@%qjYR3|SASN;WEMK zepQlsC9^{%Y&U6eJ$bawAt(osIC28>)!brB%2li3#7SmntNkOPM)|1v?Uyu3whX(` z+8{H_kYjX}SMIe-6cF>h_B~-u!a$u4RbBG;I?|dtv~<1VZe3PLJ;b^`FQmR;pgwc6 zzT|sd*&hu_(hXJLYimLpEDIVM%*sIb(S-eUTB^w$AJL+_>9NH2Mf~-mBI!4R(;1~` zAyU-i$JCiq)Da=n1Xav!PW+$?gxxq8aEFrY@7uVL{!wR(M)_EFZ! z+sY|Oj;W*P_&p&HC*<9PhX4_c3 zohar!*x9bVe!R^w$+r_G$)&n-Bb2ch67Y1>a3AHS_`XAqOl-h$ZJHp8Dj=#%W6Y18 z1vC%*lTfbuj)ffU0a;Q$emNODYB9RzzBp)PD#Tw$%?~l_{oo{5y*J<{%1`^MEOEBm z&!IZ%Q@qu6Z{nVXx&$p8O$6GOF$atblE)(4n_9#x$4)D6HoRDyX%0<)LwzN+nO$PL1Sd)D^{4;}_p#P@gw^j$dgcQ7WGoD@dh?|Zb-*Sk?#chsMEQuqK) z6sTD_&e*k`@5&bx?x0#c86S53weQH;cbhM)WFvHBFk)dk_!WIb|LV{)wa}vJQW``! z&NX^y^(buiXlPz40(v-H_O^KOgkWwi0cQu)Mbf6^T|%!G`R;xND{mBSQ0cS5QnXBH zhHLn@z+rwhL~!q;#YDtnSGpO%2r^YovD&tMlO}1vJ23w41T_O-C&b zWBF&I+vCR`6y|ccgv%AhiX?gmB$aDw$5mcbnADAzt;O8QbG_L#q8wEz{kSsSX@oBi zRk&W&#M}9tr#i`L%4E|kxGz4OcdEJ0Bb^~pp&$x=j3Q?M9Ex0_Whh8gf~_F+wf_&4 zxfzAHOqGSpi1R$kmvlPLY4T{U?$4PTPkx$=u*|^Yni9g=RMnbnw`5<<#uB$?ruk&< z-C0MM%v#yUej&kR^p6W4H;~f@KiO=6;>-;>)FBh+x{_&nhUPdn=0=#%SPa-t*!)CM z8WscgC2#&QQyLZnc6vF#Sd@yzfW0wYSY=AZV!&QrHV~lDAyZ8j){SHDMxncnbg1;M zM4HJzs85q0%(>Xxh|HatX7J1cD-Evw3{KMd%^sRAt#p~Ei7v8ILGt}ilO0;WH9Wmt zkL}!OAtlRnGIJ8;TQba9ypmqrGaEclT*5hBqJHT_)!h2&xOFEvO)dXAi}6L4-bSY_ zBfu*VO#Wi|n!DZpe!JvwrQcGnNEq zCnW=L4|++y=rGvuG-m94+w(m3$1{@$E7Di(L?@ka^CwDoa}|<$!$|TSdb)H9^Bxj* z+X)OC%H*qs`ug1jVx)TQl6tvvy8{Dzy-4ynBtbugeV}kMy})&p9FR2Z=jFNvQ=1&b z-#{Tst7^ds+Ih7Dg}J5!20;($3F%!9#K z9>OC}e-^XDMqb@~6@1UJ=U{u^d?fY9%ax{0{?U=6{*soI;*WEf^Q4(Jx$eu80ZGYG z8}m`jX(>({D9~h-BFyExyCXy0-nBbsCIwRzKRN*3hm!B9#P5G4+@dGN5G?Kh!DU1P zWn|yWXz9yCQPG{X(TW!1g0hv6k7KtQ*0h_-kIBXl_=p&>Q6jHB{ICg%zCDrmdxGx~ zci)XeEjGl~M}i68BJRJ@609^KpR|e?hg;55j!>JuBfpj@m>C#+9m+Hnv6XlpH^mk; zb-%zvK(h*|Jyo20XjlW(K*)B=@HPotqUK-OZ0`}jdzCK~5*+3cTX&e~HoY=^7@K^Y zx;-toX;=DWMz(P@Z9XksyQc9Sb+#aNUQv=t&`FVFEl>MnTrXF$cfluH)GhB8?WL0( zHXSgQwa$OkF66zNwaj`kPkYWpO^7B)F2hk;BuU-bF=LzCs-IsQp&bxxGovK!5e83> z+&CJskC$FJc(Sl+`r)fk%4NxiCw(7&l*CkN-!(|P?dw4b!a0Y&5PyFaiarKP6 zHH9j29)u#whZH|lK)-T}CZ4rZ%fSs7!GEynI3RufF{R*uFUsdp!xNQ{Pk5r9U>--* zI{Tl$09}`5u+F}9cK)O*l4iA&Pk|tV-D+k1*{aOC{LXAKJ)m~k#pRo{@L4_Hbd2C95T{^=7TGvR*o+g;boJ8_rXA_e!YNO~5*D6JPs zt}h%3UsSoiNV*IT_<0pG_{ckCp!g|4X6;6$-d5>#d zFMjw~E^^!R)r*TC-{ZF*6^5xao?e7U1U@AQSHqFlk6obH*(7>{Wk0mZ!~Q&P+vzmIhi#d>82Dt2JTDooRQjQMjZU$A>>tL*Mh(XQ$j@tw zSRHEm6AVkyP;-_~a|5_`u>?#ILomi5-u1;uicDa+UJ$9{;mNvvkwTBh?qg=DdudUf z&JWMY&el@qVuhc7@8kKztvr(f0$+27nMBQ2tK!g32?RQu{>snCF`IuqY3tSbh{`XDvyuPu?1QB_7EV{%I^%giqSn z&+9YJ!D6*xFAHR>Gwj=d4sWnMP0f5Ke1i*RDeU5GkU%VU*Rbded`4M2*?J(p!x+ z5>Hf}P3xVvI!Btas0NoBzmEn_DN@nCq9+9zLTr#P31ZkZD&NV3s&YbgVh?Yub$Xb+R*7rWJY>%NRW+sO$?y zo6K~2ICMjf*N`@`E=CWdnu!gqe-Q`3ZSX4aU~upd_mo4c2Z6P~3it?jsl?Dm^hT4^Cm>J*?JZz&Af zTP_Q$af@s07RE~Q6xGkG(hrnl2z&xKL4v8#ht*g(euGNPweyY;=OHVOybU0B7*Avl zCzAl95e5vTF60OT8e%Uh>ThKRi3(AmDr=S~D)3!-UU)ArhMvPBN%R~*EMaT|36~(a zF!fP7@-#N3CQ{KKxd6cJjnWCrqNP!vq?FeeXGcQlL8hZ570D?KOtXac>f_m?coa8C z5e!W2`BDXK$v65(Kjv{w56&+lp#!Xy1?}YKc$F-YKW4!rHh9lOAU9pgXK+nA|Jo&? zQUK$yOKCjI)?-8k8Ig;vXp~&Gu$Re#ak3Okv<&PRT{ci$A{r{DX0F~Fd0G4v*9IB0 zw3S3@ht_Jy!^dV3s&~LqT;xT4w8lQmnOXf60`#Jqr20ODzdR7cU)Ik&bx ziqhZbG-lY2@KjKVK+Vrf?5qk91i^vWa|LwFIkP;~1~*V|h;O3)0Ps318kya{si$po zBiJd{c_xN#%?m^x5Q~nLSSc^e0B#*yr&3+MjUgrz8lePh^3C)ar;RpPu{^XF`3NyBoo z$2mmvC%@9w*F^y7SH%TwRM*(Nl@sA#IovUS9EKQK;O%C&s-BT}zjU4Y;QgDJfE)CM zcz8W5tA?dSOH)F(`xmm`aW)cCJ+>~*Kn8{2aq=&r{6h9hrxOM3RJn+89SY_qxb31Y zEfyTqmZSZ)#>fa^1U!q9>gdEd;YpSszV(%;`b zZteh=3!Vy|WL8}+XNhj$>$pYJgmDM*=HkVuBZD@MtqVI~5i7@Xb> zMhvoz@|_B)B8z@<@>Ur$DGr(A58S+`?~b_~mFb8s*v%}kP01g=sFQveoBShD0F!T^ z8a9Te@S@_v^xU?m3fxr=c%TbjSAS|tAZYxkhxSqJ-MEBtBAx5+1EV97LUxv4U%dMB zJq)(PEf9>Eqz-&3$Tl}xc-6)az@3M1EP zSdQjv8OqukY+ zy^y51D4!6o8hz?@7lQNTdeO1C; z`P%<>%US4)_o?e68{wAry>%w{rGrvenCoQ9O(ejOSig2WZ`A%F4ibQkKYQ(!f^8d6 z+Pj=qk^givw&*pFn$)P_h)>R3!wxh)cs>*ATd=mJ%-tLO#Q&PM=)=~5{D*H(V=X_I zQM^2aPQ&59b7wOD15p}6Eaw*sL}b7oiVCR0QZQlCSV0+FOB(i28s?=2)6mvdHE{RS zv{7}*((=r|7hZ23-RhZ9;*mX$rT)g4!LZ`0!NdnmneM%r&e09iLn9NjlO?}FiT?z> z{*#Fawge=>OnnM5qtOI7yjx|I7z`;MzH~BJWKTKz29aeLL%Q{JGKeGW9n88)B@>U$ z&uy_CJ`G|f@-tfWhN}@UgZ%s!y(=-q%w(h%UO1x!L`1@-rUOyY2tsDbf3k&X0l_Qm zTLNR5tba2e!;N9e{uSvivZ#k@SP@rMxPE=~y)LxFY_Vrwv6ixDC;ZrRvAjQ>CbkJ$*skDz-A{W|38Ngw)%xAb}HYA zji&ntPnGZq?PK>3R@=?BlXG58#P3thb(XrG_ zJ3qKGb`L^5-L1OFNS|$CrN$*U9mmb*h}#X{)yG!Nk~hF zIhkTLZdR!S<-yvyb=|$qasTOn!PWphmhS?V5*%V|8t;Dx!EUT!=~jPZim}%jtOStILVklhi6D5GHUNkR zTE*--^VV~Hn z>OaCtzktM8TOszY{vCMx1q#MyRikmJ|DC*T3taa9Z+YAQ4ZQs)fj6Sxfwxrp-*+eF zuTa|&zzA62&;hlaJVMxc!uKz$r8Ez}7%x7=u(YDIoFb=?9jB-*r?@+pybUMJlT*?gE3kwq z-^bc3p^8?#O0Jv=Ay7>}KFvr;ZCh!5CsCs?MINXUFI1fesx1grl7MR5hQg&K4f&w= z1)%04PzyOBJ5i{UB-BkBY9}JBE2oInSYjQP_mriu4ohc!n4c0fR14~>CX97hDk`Wc zs+k)ps^8PlFxS+8tGO%cIxFgXC>i-H-3wE>A8BUqZKJE{XQJ(6t?TV+&aI8)G(_7l(0(|x6PAxFOl)Al=G=IF-p+1je)xtX!;Z? z1~e)MHED#kU^%i_1Eo(y7FIcF8C{|s)ukWXY#v{GHx~P%&p2Vg9Mxr(GU6RyWF1>> zpHSfv+v$^*3brEt;%*e}_nwFuf)EYn^($62Pp<4%ILdaD1u6o1n!N5ukng<>z|QXh46 zpjk$UMN+7HMu1yRq)l#wTS3HjvyogmqG8HV))=SL6;g753B?4p(J&4CD@X zFO%z9%(E|tS%_6X^d_yi*IU-t}8F88z|^5kL#&U>S&DatxFxOMfNpD_ctVV zHf44=Q0CrrA%aI@EQwBH}}?sT>jx)o=iHgdx$Xivvwn8C@Ez$5l4ZUR3W zr&WBeJ(hkGF8{8#HpivnGWyc6MRoLfv!S9sr}N>vO#+_R&V;v&LB(Dc^|Hkw5Vti| zW)`E7yx@J*f}Cog{P3RdVG_x`p`+xD6oK`Q>+n_7{Z7sJa;TEvsqc7)Hb6|5mze|| z{r2VVc8|^#Y7RwGcxsySn|z` ziKxdCIXY!(G9RoeFmURjQC-;)e0@s*uWpHi1ZQiM;?BtW+GHyHeFf$YcSYTvMrTyC zwrs->I)ukia0eXVs)`wh-z(x6&m0`(cmsFcTAr3&gV4k2_jjBq37-P(4u#+ODmXKB z%>b~c2*IL)@YP}`ajJ&UMpbfxzUU%-EBNd+im!zMgC9L3HpfDsc=RR!&aNoi-TweWv`xSiJkTa7aH6>VQ#>Qli2%;rY^ANv0ZOsf z3Ul3IhvOk(WTTtzkD6Prw{Yw}&N=$EMeE}j+*F2n?B>V`Zh{zvF>qgS>c%7v)7hn) zgV@MJ1)CF+ZuWFR^4r@ueasJmC<@CUg&Qz0HWMkz-(N3yd2`7Y)ODS^K`YlxLhSJ-FUvy{cRu3+rm>DPI& zr}ANjODUvWezr=$LG2^?S8pg*Mrl)PA}DtSZi0b*WZ@5d4Bmo1>m5?sxL_|3gMmKn zH~IL!sIXS|ryLKw4&&v&w0pW%FD6gkzsaHL zv&zIk*Bm!mSpM|h<)G47VtR{a_L;OYDbsPA?>B*cc+VnHqdhlZ1BoXgwwY*chPWkq z6&w&}0NUP7h*Cp)d=_DJXYm;2+oLVP=>W8NLMw!p7kMtos~yvok?chKgs{T9x|1j# zU=JFFFGGZRY^L;a;8}q1xBf+`OxupCH{y}O(>5gs0qs7o-`h!wzr4L1AZk~|`4XiY zpqs!hdCinSe&=hm^$h{|wEAi?uUDGRA{ewp9Z$~E2E^-IGv8fYy>rRf5#LAInuWaSdH<4QYuQC{q#Awtj@6|wJ++w0T8_OSe9avTzNB!aT0 z?uZ|Ri1WhZWt^?3YXb{+WE^Exvgi<~8$ULPnK&;JOD?`=4t}aKARLtL_Sz)oUMKBl z8*BE8qdnbZp%#o-Q~3KrGAHBIPdKQO#8i7Tc&jEfNJvlu~^D_+~SXjJh}HwDVZbvtrpe4?VPD0Tg0`6c#SNwMp$ zCA_ZdYGgJn-8)Lv;1knmyMWHhFM>`)R$xT2z7vn%bL4C1!M1|4V)3vC3ss?8_wNTn z9H~g+#~!m}nL;Svo{hr$FsUY9IYVzxTTDl8Zhy?l?L4RV-l(Cg*Z#RD9;h z*603XIU*bbOiWZ+8DTBQOcV{%PAh322FLVF0VbRR0WWY4%5X+lNAoLxTD#R0Vi%*P zZBt{k8?r*y{y}2ihT>0-!DBgNl%w{3#Y_+y`lOv$p-6`L>T+5rm`6?w?{!C3&5XKk zM@H^e2IBV?g6^*}j~ZL%!T(j}Vddq5JWx&^VNM=t2_C3C4-_T>l@JmB>+_kMlr)T! z2V2w`aPk>(O5Br>R+Ny|kdW4wkT#aMqc0(k{f;>&pADywGpC3EeW^* zr&5>%+*Lx!_qJgK)8UU6qW}%j6!OuP^iqd~7|X&Hl+~29;9A<6N?N*F3L4s4 z3Q7jLclGaUYwMYL>KgmpwGOqqt8Z^=;9_pzWuX{isE!qohgulADcMB2nqsBnoSIR5 zS_nR)ByO{G9*a!ghuISMQPQSJSu+H$Rn9HPLJ8|sS*w)Wjs+6VIWYT7S&zay-lf=L z?~Y%+f_;pVN1<*&v9V_y);oSLv_v7GQ6;2BJE%e{wEk{Dxvh1QixtYnuL$cM*G6>Q zjcPJRwphkDnJ2Xx$F>_`YroV-4$1Y-sB+J=8oQJ(+l)uH*~7jCgMszK5e*}eZ9`TW zqb^0`UM1s!mE!@mqXBi}p>?A%hR}rjLNWJYDD&Hiwy<<(nS6IStXw?JQ5o&5nB}3E z#{!MaruhV|k4s0dUx!lnS_UWE3j zjxwo;dDt9nR1t04nPS_M?$DL%j`aWx=6QA(`3w|!wN*v*)ffx+|-$FTZIhd$=NdxHfaBp|GdAaJW3P zYbdL0IInB4aPU!mI;}mje#`mx_b-Q#CSQNL3ZGd;$59CwF;(QZGuzY|Cz1My&dsA38!e$r zVopm{cM2>~A)Q;4BSH4dF^@MbDG)mg9QKMzb z0~RpvxTf*z&c8+GNdmBvuwdUu#3gDb!apDSN3FBE9Hd@fO#mjzN`$g+4;LwM%$a;C zBqV--;HJdJoEiLaDxBC0uKdSqP6cI3Qr-i~w!W7{JOQ&!k>p43 zrxKrER{ASaJ9B1enr*y}v|pi_q(rXUzyYJS{Rzt8ccO}b`#d`wFm@WpEe_bLKe%H! zBSuW=T{Rw^pij#&N6)Lf1Lnd##Yw`Y7TiO@9TUbdc61D5ni-%JoGN%XpA}!twWbI0 zn3QkntxNQ$8!%781~ZKLLp!K^4S!slosy|b7(Ochoq8o#{?9rw zC50)QoF@1s!Tc>ym+E}>&^eZ1K7RG}$`b=3vp5@_Y-xZuG6zi^4%E zlv{f8xxm>|!i}~z1sTyFpw4;m7jAK-f5IX7L?2fn=t-_SL*5GE-98gy1rR~e*>4V{ z?GqMCTpyM%9Nasm0Hx-H6(jTTcQYgci++!2q^!W4WFL1Q-(dhho4CFs$4LnXf=FUw znA=DxFSo=0{7Jz|C7&g}4i&s9P+JmRpxG8VtdL5=*7~yHb%Df-FNX@@&4|ge&t~6R za|>&v4(csm1{_z&WZ{Uxeq{P^{b^UGO^U^kA&{}AirVC4-^gWg#!gDWT$FMV1D4LB zsOlW?O{Y!#t1RkQ6!NKtNJ<`X)})LcQ+|EHt&H~(N1A#MtG@_8&I`}o3Vj4zdM4jrvwliuL3ca4@>G-bR;-c z8Z^&Ad;Agb$r>-(D8peE?*r~YsEMM~F%&;9)gEaEjqMG6h>sU%Wcz}!Riq_Wjy-i| z3!^<7V|a4LcKbCgxqluf``0$apKZ9kA=AkvKb7!iFw?g^fWEjs1=bASefn{jD#qT5 z(ej<9c^2-3^n1HhmAj-YDK^vc0d{F}OB|5ky=g@UJ2Z@nlReyKM%BPBJ=ubUljCSc zQ^GC-dY6+s&1P2DW0}i`=(iN@_OF)mqrV+{<-hmnu>U%Ltx-3y$W=;puQC82q+z$H z)8EC!tk>4 MVdSai>;TC8FReq*tpET3 literal 0 HcmV?d00001 diff --git a/docs/assets/simplify_mock_creation.gif b/docs/assets/simplify_mock_creation.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d5b7f6235af9359e6ccc3aaf4b6000ad9fcc534 GIT binary patch literal 60642 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

    +Fep7)fH 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 L25J>5HWB{|mlH%W literal 0 HcmV?d00001 diff --git a/docs/assets/unused_mock_in_inorder.png b/docs/assets/unused_mock_in_inorder.png new file mode 100644 index 0000000000000000000000000000000000000000..cd902adab5d93b59585df9ffc2e8b91dc66cff68 GIT binary patch literal 14145 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 M)%DfTs { -} -``` +![interface extends not extensible interface](assets/interface_extends_not_extensible.png) diff --git a/docs/mock_creation.md b/docs/mock_creation.md index 001e310..084911e 100644 --- a/docs/mock_creation.md +++ b/docs/mock_creation.md @@ -4,14 +4,11 @@ * [Non-interface type(s) passed into extraInterfaces](#non-interface-types-passed-into-extrainterfaces) * [No argument is provided for the extraInterfaces() call](#no-argument-is-provided-for-the-extrainterfaces-call) * [Mockito cannot mock certain types](#mockito-cannot-mock-certain-types) - * [Non-annotation based validation](#non-annotation-based-validation) - * [@DoNotMock annotated types](#donotmock-annotated-types) * [Spying on mock objects](#spying-on-mock-objects) * [Mock/Spy creation without specifying class](#mockspy-creation-without-specifying-class) * [Mismatch between mocked type and type of spied instance](#mismatch-between-mocked-type-and-type-of-spied-instance) * [Mockito/MockedStatic.reset() is used](#mockitomockedstaticreset-is-used) * [Convert @Mock/@Spy fields to Mockito.mock()/spy() calls](#convert-mockspy-fields-to-mockitomockspy-calls) - * [Determining the target method](#determining-the-target-method) * [Convert Mockito.mock()/spy() calls to @Mock/@Spy fields](#convert-mockitomockspy-calls-to-mockspy-fields) * [Simplify mock creation](#simplify-mock-creation) * [Expand mock creation](#expand-mock-creation) @@ -24,15 +21,9 @@ When specifying extra interfaces for a mock object (either `@Mock` annotation's `extraInterfaces` attribute, or in `Mockito.withSettings().extraInterfaces()`) the types must be actual interfaces, otherwise Mockito would stop test execution and fail with an exception letting you know about one of these issues. -```java -@Mock(extraInterfaces = {List.class, Set.class, Object.class}) //Object is not an interface -public Object mock; -``` +![extraInterfaces type is not an interface](assets/extra_interfaces_type_is_not_interface.png) -```java -//None of the arguments is an interface -Mockito.mock(Object.class, Mockito.withSettings().extraInterfaces(Object.class, ArrayList.class, AbstractMap.class)); -``` +![extraInterfaces none of the types is an interface](assets/extra_interfaces_no_type_is_interface.png) The respective Mockito exceptions are thrown in Mockito's [Reporter.java](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java), look for the `extraInterfacesAcceptsOnlyInterfaces(Class)` method. @@ -46,9 +37,7 @@ look for the `extraInterfacesAcceptsOnlyInterfaces(Class)` method. the `MockSettings.extraInterfaces()` method accepts a varargs of `Class` objects, but if there is no argument passed in, Mockito would stop test execution and fail with an exception letting you know about the problem. -```java -Mockito.mock(Object.class, Mockito.withSettings().extraInterfaces()); //no argument specified -``` +![extraInterfaces without any argument](assets/extra_interfaces_no_argument.png) You can find the related Mockito exception handling in its [Reporter.java](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java), look for the `extraInterfacesRequiresAtLeastOneInterface()` method. @@ -69,24 +58,9 @@ and [InlineBytecodeGenerator#EXCLUDES](https://github.com/mockito/mockito/blob/m This inspection validates `@Mock` and `@Spy` annotated fields' types and the types specified as the arguments of `Mockito.mock()` and `Mockito.spy()` calls. The following examples are all non-compliant ones: -```java -class MockTypesTest { - @Mock - String mock; - - @Spy - int spy; //primitive - - @Test - public void shouldInspectMockTypes() { - Mockito.mock(Short.class); //wrapper - Mockito.spy(Class.class); - Mockito.mock(String.class, Mockito.withSettings().name("name")); - } -} -``` +![non-mockable types](assets/non_mockable_types.png) -### @DoNotMock annotated types +### @DoNotMock-annotated types ![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-0.2.0-blue) [![](https://img.shields.io/badge/implementation-MockTypeInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/MockTypeInspection.java) @@ -97,28 +71,7 @@ ends with `org.mockito.DoNotMock`, be it a custom annotation or Mockito's `org.m When constructing the inspection message, the inspection looks for the annotation's `reason` attribute value. -```java -class MockTypesTest { - @Mock - NotMockable mock; //message: ... The reason: Create a real instance instead. - @Mock - NotMockableWithCustomReason mockCustom; //message: ... The reason: You are doing it wrong. - @Mock - NotMockableWithEmptyReason mockEmpty; //message: ... No reason provided. - - @DoNotMock - private static class NotMockable { - } - - @DoNotMock(reason = "You are doing it wrong.") - private static class NotMockableWithCustomReason { - } - - @DoNotMock(reason = "") //This is just for demonstration purposes. Either specify an actual reason or use the default one if the annotation has one. - private static class NotMockableWithEmptyReason { - } -} -``` +![non-mockable types with @DoNotMock annotation](assets/non_mockable_types_with_do_not_mock_annotation.png) Additional resources: - [@DoNotMock javadoc](https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/DoNotMock.html) @@ -132,24 +85,11 @@ Additional resources: This inspection reports spy creation on mock objects, for example -```java - -class SpyOnMockTest { - - @Mock - MockObject mock; - - @Test - void testMethod() { - var spiedLocal = Mockito.spy(Mockito.mock(MockObject.class)); - var spiedField = Mockito.spy(mock); - } -} -``` +![spying on mock objects](assets/spying_on_mock_object.png) The corresponding feature was introduced in [Mockito 5.4.0](https://github.com/mockito/mockito/releases/tag/v5.4.0), but this inspection does not do a library version check, and validates test code regardless of the Mockito version. - + ---- ## Mock/Spy creation without specifying class @@ -157,21 +97,12 @@ and validates test code regardless of the Mockito version. ![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-0.11.0-blue) [![](https://img.shields.io/badge/implementation-ClasslessMockAndSpyCreationInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/ClasslessMockAndSpyCreationInspection.java) [Mockito 4.9.0](https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#mock_without_class) introduced an enhancement to `Mockito.mock()` and `Mockito.spy()` -based mock/spy creation, so that the mock type is not determined by the class passed in, instead the variable/field it is assigned to. +based mock/spy creation, so that the mock type is not determined by the class passed in, instead by the type of the variable/field it is assigned to. -These variants of `mock()` and `spy()` throw an exception if objects other configuration are passed in, thus this inspection reports +These variants of `mock()` and `spy()` throw an exception if objects other than configuration are passed in, thus this inspection reports these calls when it finds at least one such argument. -```java -class MockWithoutSpecifyingClassTest { - - @Test - void testMethod() { - MockObject mockWithAnswer = Mockito.mock(Answers.CALLS_REAL_METHODS, someOtherObject); //someOtherObject is highlighted - MockObject spied = Mockito.spy(new MockObject(), new MockObject()); //The entire argument list is highlighted - } -} -``` +![reified mock creation with arguments passed in](assets/reified_mock_creation_with_arguments.png) ---- @@ -194,11 +125,11 @@ Based on Mockito's behaviour, in case of mocking/spying type with generic types, class MockSpiedInstanceTypeMismatch { void typeComparison() { - //Matching types, are not reported + //Matching types - are not reported var matchesWithoutGenerics = mock(ArrayList.class, withSettings().spiedInstance(new ArrayList())); var matchesWithGenerics = mock(ArrayList.class, withSettings().spiedInstance(new ArrayList<>())); - //Mismatching types, are reported + //Mismatching types - are reported var doesNotMatchWithSubType = mock(List.class, withSettings().spiedInstance(new ArrayList<>())); var doesNotMatchWithSuperType = mock(SomeType.class, withSettings().spiedInstance(new SuperType())); var doesNotMatchWithOtherType = mock(List.class, withSettings().spiedInstance(new HashSet<>())); @@ -241,17 +172,7 @@ Based on Mockito's documentation on [resetting mocks](https://javadoc.io/doc/org This inspection will report any call to `Mockito.reset()` and `MockedStatic.reset()` (since 0.6.0), regardless of its location in the test method. Although there may be cases when calling `reset()` is acceptable or even necessary, this inspection doesn't take into account those cases. -```java -@Test -void testMethod() { - //mock setup - MockObject mock = Mockito.mock(MockObject.class); - when(mock.doSomething())... - reset(mock); //reset() is called - //another mock setup - when(mock.doSomethingElse())... -} -``` +![Mockito.reset() is called](assets/mockito_reset_is_called.png) Additional resources: - [Reflectoring.io - Clean Unit Tests with Mockito](https://reflectoring.io/clean-unit-tests-with-mockito/) (**Avoid Mockito.reset() for Better Unit Tests** section) @@ -271,20 +192,22 @@ It is not available when the field annotated with both `@Mock` and `@Spy`. In case of converting `@Mock` fields, default attribute values are also ignored and not added to the result `Mockito.mock()` call. -#### Determining the target method +### Determining the target method -If there is only one method in the class, then that is the target method, otherwise users are able to choose which method to introduce the variable in. +If there is only one method in the class, then that one is the target method, otherwise users are able to choose which method to introduce the variable in. Inner classes are not taken into consideration. Converting the field is possible only within the same class. -The methods in the target selection list are reordered and are always shown in before hooks, test methods, rest of methods order. Before hooks and test methods also have dedicated -icons for better visual presentation of them. +The methods in the target selection list are reordered and are always shown in the following order: before hooks, test methods, rest of methods order. +Before hooks and test methods also have dedicated icons for better visual presentation of them. ![target_method_selection](assets/target_method_selection_list.png) -#### Examples +![convert @Mock field to mock() variable](assets/convert_mock_field_to_variable.gif) + +### Examples -Below you can find an extensive list of examples, what is converted into what. +Below you can find an extensive list of examples about what is converted into what.

    See examples... @@ -340,18 +263,18 @@ to: Object mock = Mockito.mock(Object.class, Mockito.withSettings().mockMaker( ``` ```java -from: +//from: @Mock(extraInterfaces = List.class, name = "some name") Object mock; -to: +//to: Object mock = Mockito.mock(Object.class, Mockito.withSettings().name("some name").extraInterfaces(List.class)); ``` ```java -from: +//from: @Mock(name = "some name", extraInterfaces = List.class, answer = Answers.CALLS_REAL_METHODS) Object mock; -to: +//to: Object mock = Mockito.mock(Object.class, Mockito.withSettings() .name("some name") .defaultAnswer(Answers.CALLS_REAL_METHODS) @@ -359,10 +282,10 @@ Object mock = Mockito.mock(Object.class, Mockito.withSettings() ``` ```java -from: +//from: @Mock(lenient = true, extraInterfaces = {List.class, Set.class}, name = "some name", answer = Answers.CALLS_REAL_METHODS) Object mock; -to: +//to: Object mock = Mockito.mock(Object.class, Mockito.withSettings() .lenient() .name("some name") @@ -381,10 +304,14 @@ Object mock = Mockito.mock(Object.class, Mockito.withSettings() Just like `@Spy` and `@Mock` annotated fields can be converted to `Mockito.spy()` and `@Mockito.mock()` calls, it is true vice versa too. -**Mockito.spy()** +### Mockito.spy() -This intention is available on `Mockito.spy()` calls, when the argument of the call is either a new expression (i.e. `new MockObject()`), or a class object access expression (i.e. `MockObject.class`), -but the argument is not an array creation. +This intention is available on `Mockito.spy()` calls, when the argument of the call is either a *new* expression (i.e. `new MockObject()`), +or a class object access expression (i.e. `MockObject.class`), but the argument is not an array creation. + +![convert mock() variable to @Mock field](assets/convert_mock_variable_to_field.gif) + +### Examples ```java from: spy(Clazz.class); @@ -412,13 +339,13 @@ from: Clazz localVar = spy(new Clazz()); to: @Spy Clazz localVar; ``` -**Mockito.mock()** +### Mockito.mock() This intention is available on `Mockito.mock()` calls, when the Class argument of the call is a class object access expression (i.e. `MockObject.class`), and in case of the `MockSettings` specific overload, the @Mock annotation supports all configuration specified: - it starts with the `Mockito.withSettings()` call, - it doesn't have a call other than to `lenient()`, `stubOnly()`, `defaultAnswer()`, `name()`, `extraInterfaces()`, `mockMaker()` - or `serializable()` but not its overloaded variant `serializable(SerializableMode)`. + or `serializable()`, but not its overloaded variant `serializable(SerializableMode)`. NOTE: there is no validation on whether the specified name or answer is valid to be put into the annotation attribute (as annotation attributes accept constants only), the intention is available regardless. @@ -463,18 +390,18 @@ to: @Mock(mockMaker = MockMakers.INLINE) Clazz clazz; Furthermore, the type that is being mocked should be mockable either by Mockito's rules or not being annotated with `@DoNotMock`. -**Naming** +### Naming - if the `Mockito.spy()`/`Mockito.mock()` call is part of a local variable declaration, then by default will use the variable's name. If there is already a field with the same name in the target class, a rename refactor is invoked first. - if the call is not part of a local variable declaration, a rename refactor is invoked first, where the default field name provided is the mock type's name in lowercase format. -**Target class selection** +### Target class selection If there is more than one parent class of the selected `spy()`/`mock()` call, a list is shown to select the class the field will be introduced in. -**Support notes** +### Support notes It is not yet supported to convert `spy()` calls in which an already created object is passed: @@ -494,6 +421,10 @@ This is essentially the opposite direction of what [Expand mock creation](#expan Currently `spiedInstance()`, `name()` and `defaultAnswer()` are supported in `MockSettings`. +![simplify mock creation](assets/simplify_mock_creation.gif) + +### Examples + ```java from: Mockito.mock(MockObject.class, withSettings().spiedInstance(instance)) to: Mockito.spy(instance) @@ -514,7 +445,9 @@ This intention action expands certain mock/spy creation calls to use concrete `M and aims to simplify the process of converting mock creation logic when further mock settings need to be added. This is essentially the opposite direction of what [Simplify mock creation](#simplify-mock-creation) does. -The intention is available on `Mockito.mock()` and `Mockito.spy()` calls. and the following conversions/expansions are supported: +![expand mock creation](assets/expand_mock_creation.gif) + +The intention is available on `Mockito.mock()` and `Mockito.spy()` calls, and the following conversions/expansions are supported: ```java //From: @@ -523,9 +456,13 @@ var spy = Mockito.spy(spiedInstance); //to: var spy = Mockito.mock(SpiedType.class, withSettings().spiedInstance(spiedInstance)); -from: Mockito.mock(MockType.class, "some mock name") - to: Mockito.mock(MockType.class, withSettings().name("some mock name")) +//From: +Mockito.mock(MockType.class, "some mock name") +//to: +Mockito.mock(MockType.class, withSettings().name("some mock name")) -from: Mockito.mock(MockType.class, Answers.RETURNS_MOCKS) - to: Mockito.mock(MockType.class, withSettings().defaultAnswer(Answers.RETURNS_MOCKS)) +//From: +Mockito.mock(MockType.class, Answers.RETURNS_MOCKS) +//to: +Mockito.mock(MockType.class, withSettings().defaultAnswer(Answers.RETURNS_MOCKS)) ``` diff --git a/docs/stubbing.md b/docs/stubbing.md index 15170c6..1c66138 100644 --- a/docs/stubbing.md +++ b/docs/stubbing.md @@ -3,6 +3,7 @@ * [Invalid checked exception is passed into *Throw() methods](#invalid-checked-exception-is-passed-into-throw-methods) * [Consecutive `*Return()` and `*Throw()` calls can be merged](#consecutive-return-and-throw-calls-can-be-merged) +* [Stubbing calls and method return type mismatch](#stubbing-calls-and-method-return-type-mismatch) * [Convert arguments of `*Throw()` stubbing methods](#convert-arguments-of-throw-stubbing-methods) * [Convert between various stubbing approaches](#convert-between-various-stubbing-approaches) @@ -58,10 +59,11 @@ Reports multiple consecutive calls to `*Return()` and `*Throw()` methods, respec If there are multiple sections of consecutive calls within the same call chain, they are reported separately for better notification, and all sections can be merged separately, depending on the section the quick fix is invoked on. It is always the last consecutive call that is registered. -### Return examples +### *Return examples -![consecutive_return_calls](assets/consecutive_return_calls.png) +![consecutive thenReturn() calls](assets/consecutive_then_return_calls.gif) +**Detailed examples:** ```java From: Mockito.when(mockObject.invoke()).thenReturn(1).thenReturn(2); to: Mockito.when(mockObject.invoke()).thenReturn(1, 2); @@ -81,7 +83,7 @@ From: Mockito.when(mockObject.invoke()).thenReturn(1, 2, 3).thenReturn(4).thenCa to: Mockito.when(mockObject.invoke()).thenReturn(1, 2, 3).thenReturn(4).thenCallRealMethod().thenReturn(5, 6, 7); ``` -### Throw examples +### *Throw examples When merging `*Throw()` calls, there are a few more cases than in case of `*Return()` ones. @@ -92,6 +94,10 @@ When merging `*Throw()` calls, there are a few more cases than in case of `*Retu | `Class` + 'new' expression with default constructor | Merge calls, convert parameters to Class objects
    Merge calls, convert parameters to Throwables | `Class`
    `Throwable` | | `Class` + 'new' expression with non-default constructor | Merge *Throw calls | `Throwable` to keep constructor parameters | +![consecutive thenThrow() calls](assets/consecutive_then_throw_calls.gif) + +**Detailed examples:** + ```java From: Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); to: Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class, IOException.class); @@ -99,27 +105,34 @@ From: Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class From: Mockito.when(mockObject.invoke()).thenThrow(new IllegalArgumentException()).thenThrow(new IOException()); to: Mockito.when(mockObject.invoke()).thenThrow(new IllegalArgumentException(), new IOException()); -From: Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class).thenThrow(new IOException()); - to (conversion to Classes): Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class, IOException.class); - to (conversion to Throwables): Mockito.when(mockObject.invoke()).thenThrow(new IllegalArgumentException(), new IOException()); - -From: Mockito.when(mockObject.invoke()) - .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) //caret is here - .thenReturn(10) - .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); - to: Mockito.when(mockObject.invoke()) - .thenThrow(new IllegalArgumentException(), new IOException("reason")) - .thenReturn(10) - .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); - -From: Mockito.when(mockObject.invoke()) - .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) - .thenReturn(10) - .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); //caret is here - to: Mockito.when(mockObject.invoke()) - .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) - .thenReturn(10) - .thenThrow(IllegalArgumentException.class, IOException.class); +//From: +Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class).thenThrow(new IOException()); +//to (conversion to Classes): +Mockito.when(mockObject.invoke()).thenThrow(IllegalArgumentException.class, IOException.class); +//to (conversion to Throwables): +Mockito.when(mockObject.invoke()).thenThrow(new IllegalArgumentException(), new IOException()); + +//From: +Mockito.when(mockObject.invoke()) + .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) //caret is here + .thenReturn(10) + .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); +//to: +Mockito.when(mockObject.invoke()) + .thenThrow(new IllegalArgumentException(), new IOException("reason")) + .thenReturn(10) + .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); + +//From: +Mockito.when(mockObject.invoke()) + .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) + .thenReturn(10) + .thenThrow(IllegalArgumentException.class).thenThrow(IOException.class); //caret is here +//to: +Mockito.when(mockObject.invoke()) + .thenThrow(IllegalArgumentException.class).thenThrow(new IOException("reason")) + .thenReturn(10) + .thenThrow(IllegalArgumentException.class, IOException.class); ``` ## Stubbing calls and method return type mismatch @@ -127,8 +140,8 @@ From: Mockito.when(mockObject.invoke()) ![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-0.7.0-blue) [![](https://img.shields.io/badge/implementation-StubbingAndMethodReturnTypeMismatchInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/StubbingAndMethodReturnTypeMismatchInspection.java) There are two parts to this inspection: -- it reports `doNothing()` and `willDoNothing()` calls when the stubbed method's return type is not void. Mockito's [corresponding error handling](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java#L568) -- it reports `*Return()` calls when the stubbed method's return type is void. Mockito's [corresponding error handling](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java#L546) +- it reports `doNothing()` and `willDoNothing()` calls when the stubbed method's return type is not void. See Mockito's [corresponding error handling](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java#L568) +- it reports `*Return()` calls when the stubbed method's return type is void. See Mockito's [corresponding error handling](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java#L546) It highlights every instance of `doNothing()`, `willDoNothing()` and `*Return()` calls in the affected call chains. @@ -171,6 +184,10 @@ All stubbing approaches are supported: - `BDDMockito.will*().willThrow().given()` - `BDDMockito.willThrow().given()` +![convert arguments of thenThrow() call](assets/convert_arguments_of_then_throw_call.gif) + +### Examples + ```java From: Mockito.when(mockObject.doSomething()).thenThrow(new IOException(), new IllegalArgumentException()); to: Mockito.when(mockObject.doSomething()).thenThrow(IOException.class, IllegalArgumentException.class); @@ -220,6 +237,8 @@ Below you can see the details of the conversion directions when converting singl **Example (Mockito.when() -> BDDMockito.will\*()):** +![convert stubbing](assets/convert_stubbing.gif) + ```java From: Mockito.when(mockObject.doSomething()).thenThrow(new IOException(), new IllegalArgumentException()).thenReturn(20); to: BDDMockito.willThrow(new IOException(), new IllegalArgumentException()).willReturn(20).given(mockObject).doSomething(); @@ -233,17 +252,17 @@ Conversion of one or more stubbing call chains is also available via selection i The availability and the conversion logic is the same as for the single conversion options, with the only difference that all selected stubbings must be of the same approach. -#### Examples +#### Example (Mockito.do*() -> BDDMockito.given()) -Selections are between [\[ and ]]. +![convert multiple stubbings in selection](assets/convert_multiple_stubbings_in_selection.gif) -**Mockito.do*() -> BDDMockito.given()** +Selections are between [\[ and ]]. ```java -From: - [[Mockito.doReturn(30).when(mock).doSomething(); - Mockito.doThrow(IllegalArgumentException.class).when(mock).doSomethingElse();]] -to: - BDDMockito.given(mock.doSomething()).willReturn(30); - BDDMockito.given(mock.doSomethingElse()).willThrow(IllegalArgumentException.class); +//From: +[[Mockito.doReturn(30).when(mock).doSomething(); + Mockito.doThrow(IllegalArgumentException.class).when(mock).doSomethingElse();]] +//to: +BDDMockito.given(mock.doSomething()).willReturn(30); +BDDMockito.given(mock.doSomethingElse()).willThrow(IllegalArgumentException.class); ``` diff --git a/docs/verifications.md b/docs/verifications.md index c8c54cd..d536b04 100644 --- a/docs/verifications.md +++ b/docs/verifications.md @@ -4,9 +4,11 @@ * [Verification mode arguments must be between limits](#verification-mode-arguments-must-be-between-limits) * [Mockito.times(0) and Mockito.times(1) calls may be optimized or removed](#mockitotimes0-and-mockitotimes1-calls-may-be-optimized-or-removed) * [No method call argument is provided](#no-method-call-argument-is-provided) +* [Cannot verify `toString()`](#cannot-verify-tostring) * [InOrder with a single verification](#inorder-with-a-single-verification) * [Misconfigured InOrder verifications](#misconfigured-inorder-verifications) * [Convert between various verification approaches](#convert-between-various-verification-approaches) +* [Stub-only mock is used in verification](#stub-only-mock-is-used-in-verification) * [Code complete mock objects](#code-complete-mock-objects) @@ -20,7 +22,9 @@ This inspection validates the following time- and occurrence based methods for ` None of these calls are allowed negative values as arguments. Additionally, `Mockito.calls()` doesn't allow 0 as argument either, and `Mockito.timeout()` doesn't allow values above a user-defined threshold (with 5000 as its default value - see inspection settings). -The following are all non-compliant examples: +![verification mode arguments outside limits](assets/verification_mode_arguments_outside_limits.png) + +The following ones are all non-compliant examples: ```java Mockito.verify(mockObject, times(-10)).method(); //negative value @@ -29,7 +33,7 @@ Mockito.verify(mockObject, atMost(-10)).method(); //negative value InOrder inOrder = Mockito.inOrder(mockObject); inOrder.verify(mockObject, calls(-10)).method(); //negative value -inOrder.verify(mockObject, calls(0)).method(); //0 is not allowed either for calls +inOrder.verify(mockObject, calls(0)).method(); //0 (beside negative values) is not allowed either for calls Mockito.verify(mockObject, after(-1000).never()).method(); //negative value Mockito.verify(mockObject, timeout(-1000)).method(); //negative value @@ -48,8 +52,12 @@ This inspection reports `Mockito.times()` calls whether they can be optimized or Both of them can be enabled/disabled on the inspection's settings panel. +### Quick fixes + Quick fixes are also provided for the replacement and removal of these calls. +![replace times_zero_with_never](assets/replace_times_zero_with_never.gif) + ```java From: Mockito.verify(mock, times(1))... //times(1) can be omitted to: Mockito.verify(mock)... @@ -125,6 +133,8 @@ and also cases when: - the user forgot to add further verification calls, - a verification started out as `InOrder` but was forgotten to be converted to simple verification when he/she changed his/her mind +![single verification in InOrder](assets/single_verification_in_order.png) + ```java InOrder inOrder = Mockito.inOrder(mock); //the variable name is highlighted inOrder.verify(mock).doSomething(); @@ -138,20 +148,22 @@ inOrder.verify(mock).doSomething(); This inspection reports mock objects in `InOrder` verifications in the following cases: - The mock is added to the arguments of `Mockito.inOrder()` but is not used in any verification performed via that `InOrder` object. - - `Type.class`-type arguments are excluded for MockedStatic verifications + - `Type.class`-type arguments are excluded for `MockedStatic` verifications - The mock is used in an `InOrder` verification, but it is not added to the arguments of `Mockito.inOrder()`. It can report mocks both in `InOrder.verify()` and `BDDMockito.then().should(InOrder)`. -```java -InOrder unusedMock = Mockito.inOrder(mock, mock2); //mock2 is reported since it is not used in any of the verifications -unusedMock.verify(mock).doSomething(); -unusedMock.verify(mock, Mockito.times(2)).doSomething(); +### Unused mock -InOrder unconfiguredMock = Mockito.inOrder(mock); -unconfiguredMock.verify(mock).doSomething(); -unconfiguredMock.verify(mock2).doSomething(); //mock2 is reported since it is not added to 'Mockito.inOrder()' -``` +Here, `mock2` is reported since it is not used in any of the verifications: + +![unused mock in InOrder](assets/unused_mock_in_inorder.png) + +### Unconfigured mock + +Here, `mock2` is reported since it is not added to `Mockito.inOrder()`: + +![unconfigured mock in InOrder](assets/unconfigured_mock_in_inorder.png) ## Convert between various verification approaches @@ -186,6 +198,8 @@ it always creates a new `InOrder` local variable. **Example (Mockito.verify() -> BDDMockito.then()):** +![convert verification](assets/convert_verification.gif) + ```java //Without verification mode From: Mockito.verify(mock).doSomething(); @@ -199,10 +213,11 @@ From: Mockito.verify(mock, times(2)).doSomething(); **Example (BDDMockito.then() -> InOrder.verify()):** ```java -From: BDDMockito.then(mock).should().doSomething(); -to: - InOrder inOrder = Mockito.inOrder(mock); - inOrder.verify(mock).doSomething(); +//From: +BDDMockito.then(mock).should().doSomething(); +//to: +InOrder inOrder = Mockito.inOrder(mock); +inOrder.verify(mock).doSomething(); ``` ### Selection based conversion @@ -225,27 +240,29 @@ Selections are between [\[ and ]]. **InOrder.verify() -> BDDMockito.then()** +![convert multiple verifications in selection](assets/convert_multiple_verifications_in_selection.gif) + ```java -From: - InOrder inOrder = Mockito.inOrder(mock, mock2); - [[inOrder.verify(mock).doSomething(); - inOrder.verify(mock2, times(2)).doSomething();]] -to: - InOrder inOrder = Mockito.inOrder(mock, mock2); - BDDMockito.then(mock).should().doSomething(); - BDDMockito.then(mock2).should(times(2)).doSomething(); +//From: +InOrder inOrder = Mockito.inOrder(mock, mock2); +[[inOrder.verify(mock).doSomething(); +inOrder.verify(mock2, times(2)).doSomething();]] +//to: +InOrder inOrder = Mockito.inOrder(mock, mock2); +BDDMockito.then(mock).should().doSomething(); +BDDMockito.then(mock2).should(times(2)).doSomething(); ``` **Mockito.verify() -> InOrder.verify()** ```java -From: - [[Mockito.verify(mock).doSomething(); - Mockito.verify(mock2, times(2)).doSomething();]] -to: - InOrder inOrder = Mockito.inOrder(mock, mock2); - inOrder.verify(mock).doSomething(); - inOrder.verify(mock2, times(2)).doSomething(); +//From: +[[Mockito.verify(mock).doSomething(); +Mockito.verify(mock2, times(2)).doSomething();]] +//to: +InOrder inOrder = Mockito.inOrder(mock, mock2); +inOrder.verify(mock).doSomething(); +inOrder.verify(mock2, times(2)).doSomething(); ``` ## Stub-only mock is used in verification From f67be36f4af215ce03294ecf80840c228945b794 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 13:21:47 +0200 Subject: [PATCH 14/24] Fix a threading related exception when convert @Mock/Spy fields to calls --- docs/assets/target_method_selection_list.png | Bin 45750 -> 30320 bytes .../ConvertMockSpyFieldToCallAction.java | 278 ++++++++++++++++++ .../ConvertMockSpyFieldToCallIntention.java | 221 +------------- .../intention/MethodRearranger.java | 44 +-- ...onvertMockSpyFieldToCallIntentionTest.java | 96 +++--- .../MockitoolsIntentionTestBase.java | 11 + 6 files changed, 345 insertions(+), 305 deletions(-) create mode 100644 src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallAction.java diff --git a/docs/assets/target_method_selection_list.png b/docs/assets/target_method_selection_list.png index cb69d16461dfc1e3737c368d4a3155e423c491a7..e04174729d95d6279c5055859479d76f75a90dbc 100644 GIT binary patch literal 30320 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 KN`l0VUjGNf^}K!n literal 45750 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 + * This action contains and performs the core conversion logic for {@link ConvertMockSpyFieldToCallIntention}. + * For details, see that class' javadoc. + */ +final class ConvertMockSpyFieldToCallAction extends AnAction { + + /** + * Defines the annotation attributes and the conditions when they are allowed to be added to the Mockito.mock() call. + *

    + * These are used for {@code Mockito.mock(Class, String)} and {@code Mockito.mock(Class, Answer)}. + */ + private static final Map> MOCK_OVERLOAD_ARGS = Map.of( + "answer", value -> value instanceof PsiReferenceExpression memberValue && !isDefaultAnswer(memberValue), + "name", value -> !isBlank(value) + ); + private static final Set BOOLEAN_ATTRIBUTES = Set.of("stubOnly", "serializable", "lenient", "withoutAnnotations"); + private final PsiField fieldToConvert; + private final PsiMethod method; + + //Instantiation + + public ConvertMockSpyFieldToCallAction(PsiField fieldToConvert, PsiMethod method) { + super( + //The element text is always method name and the parameter list, e.g. 'testMethod(String)' + compute(() -> PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY, + PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS, PsiFormatUtilBase.SHOW_TYPE)), + "", + compute(() -> getIcon(method))); + this.fieldToConvert = fieldToConvert; + this.method = method; + } + + private static Icon getIcon(PsiElement element) { + var method = (PsiMethod) element; + if (BEFORE_ANNOTATIONS.stream().anyMatch(method::hasAnnotation)) + return AllIcons.Gutter.ExtAnnotation; + else if (TEST_ANNOTATIONS.stream().anyMatch(method::hasAnnotation)) + return AllIcons.Actions.Execute; + return element.getIcon(Iconable.ICON_FLAG_READ_STATUS); + } + + //Perform action + + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + introduceMockitoMockingCall(fieldToConvert, method, e.getData(PlatformCoreDataKeys.PSI_FILE)); + } + + /** + * Adds the new variable declaration as the first statement of method body. + */ + public static void introduceMockitoMockingCall(PsiField fieldToConvert, PsiMethod targetMethod, PsiFile file) { + final var mockitoMockingCall = new Ref(); + + //This if-else is safe since isAvailable() returns true only in case of @Mock and @Spy annotations + if (compute(() -> fieldToConvert.hasAnnotation(ORG_MOCKITO_MOCK))) { + final var mockAnnotation = new Ref(); + final var isMockSettingsOverride = new Ref(); + + run(() -> { + //org.mockito.Mockito.mock(.class + mockitoMockingCall.set(new StringBuilder("Mockito").append(".").append(MOCK).append("(")); + appendType(fieldToConvert, mockitoMockingCall.get()); + + mockAnnotation.set(fieldToConvert.getAnnotation(ORG_MOCKITO_MOCK)); + //Assemble Mockito.mock() call based on the @Mock annotation attributes + isMockSettingsOverride.set(true); + //Handle .mock(Class, Answer) and .mock(Class, String) + if (mockAnnotation.get().getAttributes().size() == 1) { + for (var entry : MOCK_OVERLOAD_ARGS.entrySet()) { + var attributeValue = valueOf(mockAnnotation.get().findAttribute(entry.getKey())) + .filter(value -> entry.getValue().test(value)); + if (attributeValue.isPresent()) { + mockitoMockingCall.get().append(", ").append(attributeValue.get().getText()); + isMockSettingsOverride.set(false); + break; + } + } + } + }); + + + //if there is no attribute specified, no action is needed + //If there is at least one attribute specified, but it is not the answer and name specific overrides of Mockito.mock(), + // then build the MockSettings for Mockito.mock(Class, MockSettings) + if (compute(() -> !mockAnnotation.get().getAttributes().isEmpty()) && isMockSettingsOverride.get()) { + StringBuilder mockSettings = new StringBuilder("Mockito").append(".withSettings()"); + run(() -> { + //Handle boolean attributes + BOOLEAN_ATTRIBUTES.forEach(attributeName -> { + if (isAttributeEnabledOnMockAnnotation(mockAnnotation.get(), attributeName)) + appendSetting(mockSettings, attributeName, ""); + }); + + //Handle attributes for whose MockSettings counterpart the value of the attribute must be passed in. + //E.g. withSettings().name("some name") or withSettings().answer(anAnswer) + valueOf(mockAnnotation.get().findAttribute(NAME)).ifPresent(value -> { + if (MOCK_OVERLOAD_ARGS.get(NAME).test(value)) + appendSetting(mockSettings, NAME, value.getText()); + }); + valueOf(mockAnnotation.get().findAttribute(ANSWER)).ifPresent(value -> { + if (MOCK_OVERLOAD_ARGS.get(ANSWER).test(value)) + appendSetting(mockSettings, DEFAULT_ANSWER, value.getText()); + }); + + //Handle extraInterfaces attribute. + //This needs special care because the attribute value may be an individual value or an array initializer. + valueOf(mockAnnotation.get().findAttribute(EXTRA_INTERFACES)).ifPresent(extraInterfacesValue -> { + if (extraInterfacesValue instanceof PsiArrayInitializerMemberValue attributeValue) { + //In case of empty extraInterfaces - @Mock(extraInterfaces = {}) - don't add the .extraInterfaces() call to the mock settings + var initializers = attributeValue.getInitializers(); + if (initializers.length > 0) { + String interfaces = Arrays.stream(initializers).map(PsiElement::getText).collect(joining(",")); + appendSetting(mockSettings, EXTRA_INTERFACES, interfaces); + } + } else { + appendSetting(mockSettings, EXTRA_INTERFACES, extraInterfacesValue.getText()); + } + }); + }); + + compute(() -> valueOf(mockAnnotation.get().findAttribute(STRICTNESS)) + .filter(PsiReferenceExpression.class::isInstance) + .map(PsiReferenceExpression.class::cast) + .map(PsiReference::resolve) + .filter(PsiEnumConstant.class::isInstance) + .map(PsiEnumConstant.class::cast) + .map(PsiField::getName)) + .ifPresent(strictnessName -> { + //Mock.Strictness.TEST_LEVEL_DEFAULT has no matching enum constant in Strictness, thus we'll ignore it. + if (!"TEST_LEVEL_DEFAULT".equals(strictnessName)) { + runWriteCommandAction(file.getProject(), + () -> PsiClassUtil.importClass(ORG_MOCKITO_QUALITY_STRICTNESS, mockAnnotation.get())); + appendSetting(mockSettings, STRICTNESS, "Strictness." + strictnessName); + } + }); + + run(() -> valueOf(mockAnnotation.get().findAttribute(MOCK_MAKER)).ifPresent(value -> appendSetting(mockSettings, MOCK_MAKER, value.getText()))); + + mockitoMockingCall.get().append(", ").append(mockSettings); //Adds the second parameter to Mockito.mock(Class, MockSettings) + } + } else { //@Spy -> Mockito.spy() + run(() -> { + mockitoMockingCall.set(new StringBuilder("Mockito").append(".").append(SPY).append("(")); + if (fieldToConvert.hasInitializer()) { + mockitoMockingCall.get().append(fieldToConvert.getInitializer().getText()); + } else { + appendType(fieldToConvert, mockitoMockingCall.get()); + } + }); + } + + mockitoMockingCall.get().append(")"); + + runWriteCommandAction(file.getProject(), () -> { + var elementFactory = JavaPsiFacade.getElementFactory(file.getProject()); + PsiClassUtil.importClass(ORG_MOCKITO_MOCKITO, file); + var mockitoMockingInitializer = elementFactory.createExpressionFromText(mockitoMockingCall.get().toString(), file); + + //Post-process variable initializer: if the second argument is a call to Mockito.withSettings() then it can be omitted. + //E.g. mock(Type.class, Mockito.withSettings()) -> mock(Type.class) + var finalMockingInitializer = (PsiMethodCallExpression) mockitoMockingInitializer; + if (finalMockingInitializer.getArgumentList().getExpressionCount() > 1 && MOCKITO_WITH_SETTINGS.matches(finalMockingInitializer.getArgumentList().getExpressions()[1])) { + finalMockingInitializer.getArgumentList().getExpressions()[1].delete(); + } + + //Introduces the variable declaration in the selected method + //Deletes the field + PsiDocumentManager.getInstance(file.getProject()).commitAllDocuments(); + var mockitoMockingVariableDeclaration = elementFactory.createVariableDeclarationStatement(fieldToConvert.getName(), fieldToConvert.getType(), finalMockingInitializer); + PsiCodeBlock methodBody = targetMethod.getBody(); + if (methodBody != null) { + if (methodBody.getFirstBodyElement() != null) + methodBody.addBefore(mockitoMockingVariableDeclaration, methodBody.getFirstBodyElement()); + else + methodBody.add(mockitoMockingVariableDeclaration); + } + fieldToConvert.delete(); + }); + } + + private static Optional valueOf(JvmAnnotationAttribute attribute) { + return compute(() -> attribute instanceof PsiNameValuePair attributeNameValue && attributeNameValue.getValue() != null + ? Optional.ofNullable(attributeNameValue.getValue()) + : Optional.empty()); + } + + private static void appendSetting(StringBuilder sb, String methodName, String argument) { + sb.append(".").append(methodName).append("(").append(argument).append(")"); + } + + /** + * This is to make sure that the mock()/spy() call's argument (when a PsiClassObjectAccessExpression), doesn't include the generic type arguments. + */ + private static void appendType(PsiField fieldToConvert, StringBuilder mockitoMockingCall) { + run(() -> { + Optional.ofNullable(fieldToConvert.getTypeElement()) + .map(PsiTypeElement::getInnermostComponentReferenceElement) + .map(PsiQualifiedReference::getReferenceName) + .ifPresentOrElse(mockitoMockingCall::append, () -> mockitoMockingCall.append(fieldToConvert.getType().getCanonicalText())); + mockitoMockingCall.append(".class"); + }); + } + + private static boolean isBlank(PsiAnnotationMemberValue value) { + return value.getText().replace("\"", "").isBlank(); + } + + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.BGT; + } +} diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java index 1aad008..9a34a0a 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntention.java @@ -3,66 +3,27 @@ package com.picimako.mockitools.intention; import static com.intellij.openapi.application.ReadAction.compute; -import static com.intellij.openapi.application.ReadAction.run; -import static com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction; -import static com.picimako.mockitools.MockitoQualifiedNames.ANSWER; -import static com.picimako.mockitools.MockitoQualifiedNames.DEFAULT_ANSWER; -import static com.picimako.mockitools.MockitoQualifiedNames.EXTRA_INTERFACES; -import static com.picimako.mockitools.MockitoQualifiedNames.MOCK; -import static com.picimako.mockitools.MockitoQualifiedNames.MOCK_MAKER; -import static com.picimako.mockitools.MockitoQualifiedNames.NAME; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCK; -import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCKITO; -import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_QUALITY_STRICTNESS; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_SPY; -import static com.picimako.mockitools.MockitoQualifiedNames.SPY; -import static com.picimako.mockitools.MockitoQualifiedNames.STRICTNESS; -import static com.picimako.mockitools.MockitoolsPsiUtil.MOCKITO_WITH_SETTINGS; -import static com.picimako.mockitools.dsl.MockAnnotation.isAttributeEnabledOnMockAnnotation; -import static com.picimako.mockitools.intention.ConvertMockCallToFieldIntention.isDefaultAnswer; +import static com.picimako.mockitools.intention.ConvertMockSpyFieldToCallAction.introduceMockitoMockingCall; import static com.picimako.mockitools.intention.MethodRearranger.reOrder; -import static com.picimako.mockitools.util.ListPopupHelper.selectItemAndRun; -import static java.util.stream.Collectors.joining; +import static com.picimako.mockitools.util.ListPopupHelper.showActionsInListPopup; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionName; -import com.intellij.lang.jvm.annotation.JvmAnnotationAttribute; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Ref; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiAnnotation; -import com.intellij.psi.PsiAnnotationMemberValue; -import com.intellij.psi.PsiArrayInitializerMemberValue; import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiCodeBlock; -import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiEnumConstant; import com.intellij.psi.PsiField; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiIdentifier; -import com.intellij.psi.PsiMethod; -import com.intellij.psi.PsiMethodCallExpression; -import com.intellij.psi.PsiNameValuePair; -import com.intellij.psi.PsiQualifiedReference; -import com.intellij.psi.PsiReference; -import com.intellij.psi.PsiReferenceExpression; -import com.intellij.psi.PsiTypeElement; import com.intellij.util.IncorrectOperationException; import com.picimako.mockitools.MockitoQualifiedNames; -import com.picimako.mockitools.intention.MethodRearranger.ClassMethodCellRenderer; import com.picimako.mockitools.resources.MockitoolsBundle; -import com.picimako.mockitools.util.PsiClassUtil; import org.jetbrains.annotations.NotNull; -import java.util.Arrays; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.function.Predicate; - /** * Converts {@code @Mock} and {@code @Spy} annotated fields to {@code Mockito.mock()} and {@code Mockito.spy()} local variable declarations, respectively. *

    @@ -84,18 +45,6 @@ @SuppressWarnings("UnstableApiUsage") final class ConvertMockSpyFieldToCallIntention implements IntentionAction { - /** - * Defines the annotation attributes and the conditions when they are allowed to be added to the Mockito.mock() call. - *

    - * These are used for {@code Mockito.mock(Class, String)} and {@code Mockito.mock(Class, Answer)}. - */ - private static final Map> MOCK_OVERLOAD_ARGS = Map.of( - "answer", value -> value instanceof PsiReferenceExpression memberValue && !isDefaultAnswer(memberValue), - "name", value -> !isBlank(value) - ); - private static final Set BOOLEAN_ATTRIBUTES = Set.of("stubOnly", "serializable", "lenient", "withoutAnnotations"); - private static final ClassMethodCellRenderer METHOD_CELL_RENDERER = new ClassMethodCellRenderer(); - @IntentionName private String mockingCall; @@ -143,177 +92,19 @@ public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws var field = (PsiField) compute(element::getParent); var methodsInClass = compute(() -> ((PsiClass) field.getParent()).getMethods()); if (methodsInClass.length > 1) { - selectItemAndRun(MockitoolsBundle.message("intention.convert.mocking.field.to.call.select.method"), - reOrder(methodsInClass), selectedMethod -> introduceMockitoMockingCall(field, selectedMethod, file), () -> METHOD_CELL_RENDERER, editor, project); + showActionsInListPopup( + MockitoolsBundle.message("intention.convert.mocking.field.to.call.select.method"), + reOrder(methodsInClass).stream().map(method -> new ConvertMockSpyFieldToCallAction(field, method)).toList(), + editor); } else if (methodsInClass.length == 1) { introduceMockitoMockingCall(field, methodsInClass[0], file); } } - /** - * Adds the new variable declaration as the first statement of method body. - */ - private void introduceMockitoMockingCall(PsiField fieldToConvert, PsiMethod targetMethod, PsiFile file) { - final var mockitoMockingCall = new Ref(); - - //This if-else is safe since isAvailable() returns true only in case of @Mock and @Spy annotations - if (compute(() -> fieldToConvert.hasAnnotation(ORG_MOCKITO_MOCK))) { - final var mockAnnotation = new Ref(); - final var isMockSettingsOverride = new Ref(); - - run(() -> { - //org.mockito.Mockito.mock(.class - mockitoMockingCall.set(new StringBuilder("Mockito").append(".").append(MOCK).append("(")); - appendType(fieldToConvert, mockitoMockingCall.get()); - - mockAnnotation.set(fieldToConvert.getAnnotation(ORG_MOCKITO_MOCK)); - //Assemble Mockito.mock() call based on the @Mock annotation attributes - isMockSettingsOverride.set(true); - //Handle .mock(Class, Answer) and .mock(Class, String) - if (mockAnnotation.get().getAttributes().size() == 1) { - for (var entry : MOCK_OVERLOAD_ARGS.entrySet()) { - var attributeValue = valueOf(mockAnnotation.get().findAttribute(entry.getKey())) - .filter(value -> entry.getValue().test(value)); - if (attributeValue.isPresent()) { - mockitoMockingCall.get().append(", ").append(attributeValue.get().getText()); - isMockSettingsOverride.set(false); - break; - } - } - } - }); - - - //if there is no attribute specified, no action is needed - //If there is at least one attribute specified, but it is not the answer and name specific overrides of Mockito.mock(), - // then build the MockSettings for Mockito.mock(Class, MockSettings) - if (compute(() -> !mockAnnotation.get().getAttributes().isEmpty()) && isMockSettingsOverride.get()) { - StringBuilder mockSettings = new StringBuilder("Mockito").append(".withSettings()"); - run(() -> { - //Handle boolean attributes - BOOLEAN_ATTRIBUTES.forEach(attributeName -> { - if (isAttributeEnabledOnMockAnnotation(mockAnnotation.get(), attributeName)) - appendSetting(mockSettings, attributeName, ""); - }); - - //Handle attributes for whose MockSettings counterpart the value of the attribute must be passed in. - //E.g. withSettings().name("some name") or withSettings().answer(anAnswer) - valueOf(mockAnnotation.get().findAttribute(NAME)).ifPresent(value -> { - if (MOCK_OVERLOAD_ARGS.get(NAME).test(value)) - appendSetting(mockSettings, NAME, value.getText()); - }); - valueOf(mockAnnotation.get().findAttribute(ANSWER)).ifPresent(value -> { - if (MOCK_OVERLOAD_ARGS.get(ANSWER).test(value)) - appendSetting(mockSettings, DEFAULT_ANSWER, value.getText()); - }); - - //Handle extraInterfaces attribute. - //This needs special care because the attribute value may be an individual value or an array initializer. - valueOf(mockAnnotation.get().findAttribute(EXTRA_INTERFACES)).ifPresent(extraInterfacesValue -> { - if (extraInterfacesValue instanceof PsiArrayInitializerMemberValue attributeValue) { - //In case of empty extraInterfaces - @Mock(extraInterfaces = {}) - don't add the .extraInterfaces() call to the mock settings - var initializers = attributeValue.getInitializers(); - if (initializers.length > 0) { - String interfaces = Arrays.stream(initializers).map(PsiElement::getText).collect(joining(",")); - appendSetting(mockSettings, EXTRA_INTERFACES, interfaces); - } - } else { - appendSetting(mockSettings, EXTRA_INTERFACES, extraInterfacesValue.getText()); - } - }); - }); - - compute(() -> valueOf(mockAnnotation.get().findAttribute(STRICTNESS)) - .filter(PsiReferenceExpression.class::isInstance) - .map(PsiReferenceExpression.class::cast) - .map(PsiReference::resolve) - .filter(PsiEnumConstant.class::isInstance) - .map(PsiEnumConstant.class::cast) - .map(PsiField::getName)) - .ifPresent(strictnessName -> { - //Mock.Strictness.TEST_LEVEL_DEFAULT has no matching enum constant in Strictness, thus we'll ignore it. - if (!"TEST_LEVEL_DEFAULT".equals(strictnessName)) { - runWriteCommandAction(file.getProject(), - () -> PsiClassUtil.importClass(ORG_MOCKITO_QUALITY_STRICTNESS, mockAnnotation.get())); - appendSetting(mockSettings, STRICTNESS, "Strictness." + strictnessName); - } - }); - - run(() -> valueOf(mockAnnotation.get().findAttribute(MOCK_MAKER)).ifPresent(value -> appendSetting(mockSettings, MOCK_MAKER, value.getText()))); - - mockitoMockingCall.get().append(", ").append(mockSettings); //Adds the second parameter to Mockito.mock(Class, MockSettings) - } - } else { //@Spy -> Mockito.spy() - run(() -> { - mockitoMockingCall.set(new StringBuilder("Mockito").append(".").append(SPY).append("(")); - if (fieldToConvert.hasInitializer()) { - mockitoMockingCall.get().append(fieldToConvert.getInitializer().getText()); - } else { - appendType(fieldToConvert, mockitoMockingCall.get()); - } - }); - } - - mockitoMockingCall.get().append(")"); - - runWriteCommandAction(file.getProject(), () -> { - var elementFactory = JavaPsiFacade.getElementFactory(file.getProject()); - PsiClassUtil.importClass(ORG_MOCKITO_MOCKITO, file); - var mockitoMockingInitializer = elementFactory.createExpressionFromText(mockitoMockingCall.get().toString(), file); - - //Post-process variable initializer: if the second argument is a call to Mockito.withSettings() then it can be omitted. - //E.g. mock(Type.class, Mockito.withSettings()) -> mock(Type.class) - var finalMockingInitializer = (PsiMethodCallExpression) mockitoMockingInitializer; - if (finalMockingInitializer.getArgumentList().getExpressionCount() > 1 && MOCKITO_WITH_SETTINGS.matches(finalMockingInitializer.getArgumentList().getExpressions()[1])) { - finalMockingInitializer.getArgumentList().getExpressions()[1].delete(); - } - - //Introduces the variable declaration in the selected method - //Deletes the field - PsiDocumentManager.getInstance(file.getProject()).commitAllDocuments(); - var mockitoMockingVariableDeclaration = elementFactory.createVariableDeclarationStatement(fieldToConvert.getName(), fieldToConvert.getType(), finalMockingInitializer); - PsiCodeBlock methodBody = targetMethod.getBody(); - if (methodBody != null) { - if (methodBody.getFirstBodyElement() != null) - methodBody.addBefore(mockitoMockingVariableDeclaration, methodBody.getFirstBodyElement()); - else - methodBody.add(mockitoMockingVariableDeclaration); - } - fieldToConvert.delete(); - }); - } - - private static boolean isBlank(PsiAnnotationMemberValue value) { - return value.getText().replace("\"", "").isBlank(); - } - private boolean isIdentifierOfField(PsiElement element) { return element instanceof PsiIdentifier && compute(element::getParent) instanceof PsiField; } - private Optional valueOf(JvmAnnotationAttribute attribute) { - return compute(() -> attribute instanceof PsiNameValuePair attributeNameValue && attributeNameValue.getValue() != null - ? Optional.ofNullable(attributeNameValue.getValue()) - : Optional.empty()); - } - - private void appendSetting(StringBuilder sb, String methodName, String argument) { - sb.append(".").append(methodName).append("(").append(argument).append(")"); - } - - /** - * This is to make sure that the mock()/spy() call's argument (when a PsiClassObjectAccessExpression), doesn't include the generic type arguments. - */ - private void appendType(PsiField fieldToConvert, StringBuilder mockitoMockingCall) { - run(() -> { - Optional.ofNullable(fieldToConvert.getTypeElement()) - .map(PsiTypeElement::getInnermostComponentReferenceElement) - .map(PsiQualifiedReference::getReferenceName) - .ifPresentOrElse(mockitoMockingCall::append, () -> mockitoMockingCall.append(fieldToConvert.getType().getCanonicalText())); - mockitoMockingCall.append(".class"); - }); - } - @Override public boolean startInWriteAction() { return false; diff --git a/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java b/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java index 0f8ea64..9bbe171 100644 --- a/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java +++ b/src/main/java/com/picimako/mockitools/intention/MethodRearranger.java @@ -5,16 +5,9 @@ import static com.intellij.openapi.application.ReadAction.compute; import com.google.common.collect.ImmutableList; -import com.intellij.icons.AllIcons; -import com.intellij.ide.util.MethodCellRenderer; -import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; -import com.intellij.psi.PsiSubstitutor; -import com.intellij.psi.util.PsiFormatUtil; -import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.util.SmartList; -import javax.swing.*; import java.util.List; import java.util.Set; @@ -26,7 +19,7 @@ */ public final class MethodRearranger { - private static final Set BEFORE_ANNOTATIONS = Set.of( + public static final Set BEFORE_ANNOTATIONS = Set.of( //JUnit 4 "org.junit.Before", "org.junit.BeforeClass", //JUnit 5 @@ -36,7 +29,7 @@ public final class MethodRearranger { "org.testng.annotations.BeforeGroups", "org.testng.annotations.BeforeClass", "org.testng.annotations.BeforeMethod" ); - private static final Set TEST_ANNOTATIONS = Set.of("org.junit.Test", "org.junit.jupiter.api.Test", "org.testng.annotations.Test"); + public static final Set TEST_ANNOTATIONS = Set.of("org.junit.Test", "org.junit.jupiter.api.Test", "org.testng.annotations.Test"); /** * Returns a reordered variant of the argument methods array. @@ -65,37 +58,4 @@ public static List reOrder(PsiMethod[] methods) { private MethodRearranger() { //Utility } - - /** - * Custom cell renderer for {@link ConvertMockSpyFieldToCallIntention} that displays only the method signature - * without the container class to minimize noise in the target method selection list popup. - *

    + For example: +

    +
    +ArgumentCaptor<String> aCaptor = ArgumentCaptor.captor("some string");
    +
    +
    + + \ No newline at end of file diff --git a/src/main/resources/inspectionDescriptions/ParameterlessMockAndSpyCreation.html b/src/main/resources/inspectionDescriptions/GenericInferredMockAndSpyCreation.html similarity index 100% rename from src/main/resources/inspectionDescriptions/ParameterlessMockAndSpyCreation.html rename to src/main/resources/inspectionDescriptions/GenericInferredMockAndSpyCreation.html diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index 711058a..9f92676 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -40,9 +40,11 @@ inspection.non.void.method.is.stubbed.with.return.value=The stubbed method, toString(). inspection.stub.only.mock.used.in.verification=This mock is stub-only, thus cannot be used in verification. inspection.spying.on.mock.is.not.allowed=Spying is not allowed on mocks. -inspection.argument.in.classless.mock.spy.creation=This type of mock creation must not have any value passed in. +inspection.argument.in.generic.inferred.mock.spy.creation=This type of mock creation must not have any value passed in. inspection.mock.type.spied.instance.type.mismatch=The mocked type doesn't match the type of the spied instance. +inspection.argument.in.generic.inferred.captor.creation=This type of ArgumentCaptor creation must not have any value passed in. + inspection.mock.creation.with.settings.can.be.simplified=Mock creation can be simplified with calling {0}. quick.fix.replace.mock.creation.with.simpler.variant=Simplify mock creation diff --git a/src/test/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspectionTest.java new file mode 100644 index 0000000..318c76b --- /dev/null +++ b/src/test/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspectionTest.java @@ -0,0 +1,23 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.captor; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.picimako.mockitools.inspection.MockitoolsInspectionTestBase; +import org.junit.jupiter.api.Test; + +/** + * Integration test for {@link GenericInferredCaptorCreationInspection}. + */ +class GenericInferredCaptorCreationInspectionTest extends MockitoolsInspectionTestBase { + + @Override + protected InspectionProfileEntry getInspection() { + return new GenericInferredCaptorCreationInspection(); + } + + @Test + void testGenericInferredCaptorCreation() { + doJavaTest(); + } +} diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspectionTest.java similarity index 62% rename from src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java rename to src/test/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspectionTest.java index ad92c70..1f949a9 100644 --- a/src/test/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspectionTest.java +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspectionTest.java @@ -7,17 +7,17 @@ import org.junit.jupiter.api.Test; /** - * Integration test for {@link ParameterlessMockAndSpyCreationInspection}. + * Integration test for {@link GenericInferredMockAndSpyCreationInspection}. */ -class ParameterlessMockAndSpyCreationInspectionTest extends MockitoolsInspectionTestBase { +class GenericInferredMockAndSpyCreationInspectionTest extends MockitoolsInspectionTestBase { @Override protected InspectionProfileEntry getInspection() { - return new ParameterlessMockAndSpyCreationInspection(); + return new GenericInferredMockAndSpyCreationInspection(); } @Test - void testParameterlessMockCreation() { + void testGenericInferredMockCreation() { doJavaTest(); } } diff --git a/src/test/testData/inspection/GenericInferredCaptorCreation.java b/src/test/testData/inspection/GenericInferredCaptorCreation.java new file mode 100644 index 0000000..d0e5c6b --- /dev/null +++ b/src/test/testData/inspection/GenericInferredCaptorCreation.java @@ -0,0 +1,13 @@ +import org.mockito.ArgumentCaptor; + +class GenericInferredCaptorCreation { + + void noHighlights() { + ArgumentCaptor aCaptor = ArgumentCaptor.captor(); + } + + void highlights() { + ArgumentCaptor aCaptor = ArgumentCaptor.captor("string"); + ArgumentCaptor anotherCaptor = ArgumentCaptor.captor("some", "string"); + } +} diff --git a/src/test/testData/inspection/ParameterlessMockCreation.java b/src/test/testData/inspection/GenericInferredMockCreation.java similarity index 98% rename from src/test/testData/inspection/ParameterlessMockCreation.java rename to src/test/testData/inspection/GenericInferredMockCreation.java index 94e18e1..66af343 100644 --- a/src/test/testData/inspection/ParameterlessMockCreation.java +++ b/src/test/testData/inspection/GenericInferredMockCreation.java @@ -3,7 +3,7 @@ import org.mockito.Spy; import org.mockito.Answers; -class ClasslessMockCreation { +class GenericInferredMockCreation { void noHighlights() { MockObject mock = Mockito.mock(); From b4c7855b4cb56d2e5150681cb0b87b808ed64d3a Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 20:02:56 +0200 Subject: [PATCH 18/24] 55: Add inspection to report explicit initialization of '@Mock' and '@InjectMocks' annotated fields --- CHANGELOG.md | 1 + docs/mock_creation.md | 26 +++++++ .../CaptorFieldInitializationInspection.java | 2 +- .../MockFieldInitializationInspection.java | 67 +++++++++++++++++++ src/main/resources/META-INF/plugin.xml | 5 ++ .../MockFieldInitialization.html | 10 +++ .../messages/MockitoolsBundle.properties | 4 +- ...MockFieldInitializationInspectionTest.java | 28 ++++++++ .../testData/inspection/MockFieldInit.java | 33 +++++++++ .../MockFieldInitReplaceTest.after.java | 10 +++ .../inspection/MockFieldInitReplaceTest.java | 10 +++ 11 files changed, 194 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspection.java create mode 100644 src/main/resources/inspectionDescriptions/MockFieldInitialization.html create mode 100644 src/test/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspectionTest.java create mode 100644 src/test/testData/inspection/MockFieldInit.java create mode 100644 src/test/testData/inspection/MockFieldInitReplaceTest.after.java create mode 100644 src/test/testData/inspection/MockFieldInitReplaceTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 789ab17..166a514 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ either with `Mockito.mock()` or `Mockito.spy()`. as well as `equals()` and `hashCode()`. - [63](https://github.com/picimako/mockitools/issues/63): Added an inspection to report `ArgumentCaptor.captor()` calls when they are passed in at least one argument. This method is not designed to accept any argument. +- [55](https://github.com/picimako/mockitools/issues/55): Added an inspection to report explicit initialization of `@Mock` and `@InjectMocks` annotated fields. ### Changed - Applied a couple of code simplifications for easier maintenance. diff --git a/docs/mock_creation.md b/docs/mock_creation.md index bec9e94..e6d3b7c 100644 --- a/docs/mock_creation.md +++ b/docs/mock_creation.md @@ -12,6 +12,7 @@ * [Convert Mockito.mock()/spy() calls to @Mock/@Spy fields](#convert-mockitomockspy-calls-to-mockspy-fields) * [Simplify mock creation](#simplify-mock-creation) * [Expand mock creation](#expand-mock-creation) +* [Explicit initialization of @Mock and @InjectMocks fields is not required](#explicit-initialization-of-mock-and-injectmocks-fields-is-not-required) ## Non-interface type(s) passed into extraInterfaces @@ -466,3 +467,28 @@ Mockito.mock(MockType.class, Answers.RETURNS_MOCKS) //to: Mockito.mock(MockType.class, withSettings().defaultAnswer(Answers.RETURNS_MOCKS)) ``` + +## Explicit initialization of @Mock and @InjectMocks fields is not required + +![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-1.3.0-blue) [![](https://img.shields.io/badge/implementation-MockFieldInitializationInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspection.java) + +Since `@Mock` and `@InjectMocks` annotated fields are initialized automagically by Mockito via `MockitoJUnitRunner`, `MockitoJUnit.rule()` or +`MockitoAnnotations.initMocks()/openMocks()`, there is no need to explicitly initialize them. + +This inspection reports `@Mock` and `@InjectMocks` fields that have an initializer specified. + +```java +class CaptorTest { + @Mock + public MockObject mock = Mockito.mock(); +} +``` + +You can also apply a quick fix (*Remove initializer*) on it, so that the initializer may be removed. The code will then become: + +```java +class CaptorTest { + @Mock + public MockObject mock; +} +``` diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java index 8bb0ea3..68a6158 100644 --- a/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/captor/CaptorFieldInitializationInspection.java @@ -53,7 +53,7 @@ private static final class RemoveArgumentCaptorInitQuickFix extends InspectionGa @Override public @IntentionName @NotNull String getName() { - return MockitoolsBundle.message("quick.fix.captor.field.remove.init"); + return MockitoolsBundle.message("quick.fix.field.remove.init"); } @Override diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspection.java new file mode 100644 index 0000000..b40081f --- /dev/null +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspection.java @@ -0,0 +1,67 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.mocking; + +import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_INJECT_MOCKS; +import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCK; +import static com.picimako.mockitools.util.UnitTestPsiUtil.isInTestSourceContent; + +import com.intellij.codeInspection.LocalInspectionToolSession; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.codeInspection.util.IntentionFamilyName; +import com.intellij.codeInspection.util.IntentionName; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiField; +import com.picimako.mockitools.inspection.MockitoolsBaseInspection; +import com.picimako.mockitools.resources.MockitoolsBundle; +import com.siyeh.ig.InspectionGadgetsFix; +import org.jetbrains.annotations.NotNull; + +/** + * Since {@code @Mock} and {@code InjectMocks} annotated fields are initialized automagically by Mockito via {@code MockitoJUnitRunner}, {@code MockitoJUnit.rule()} or + * {@code MockitoAnnotations.initMocks()} / {@code MockitoAnnotations.openMocks()}, there is no need for explicit initialization of them. + *

    + * Explicit initializer is reported only when the field is annotated as either {@code @Mock} or {@code InjectMocks}. + *

    + * It also provides a quick fix to remove the field initializer. + * + * @see @Mock annotation + * @see @InjectMocks annotation + * @see Baeldung - Mockito Annotations + * @since 1.3.0 + */ +final class MockFieldInitializationInspection extends MockitoolsBaseInspection { + + @Override + public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly, @NotNull LocalInspectionToolSession session) { + return isInTestSourceContent(session.getFile()) ? fieldVisitor(holder) : PsiElementVisitor.EMPTY_VISITOR; + } + + @Override + protected void checkField(PsiField field, @NotNull ProblemsHolder holder) { + if ((field.hasAnnotation(ORG_MOCKITO_MOCK) || field.hasAnnotation(ORG_MOCKITO_INJECT_MOCKS)) && field.hasInitializer()) { + holder.registerProblem(field.getInitializer(), MockitoolsBundle.message("inspection.mock.field.init.not.required"), + new RemoveFieldInitQuickFix()); + } + } + + private static final class RemoveFieldInitQuickFix extends InspectionGadgetsFix { + + @Override + public @IntentionName @NotNull String getName() { + return MockitoolsBundle.message("quick.fix.field.remove.init"); + } + + @Override + public @IntentionFamilyName @NotNull String getFamilyName() { + return MockitoolsBundle.message("quick.fix.mock.field.family.name"); + } + + @Override + protected void doFix(@NotNull Project project, ProblemDescriptor descriptor) { + descriptor.getPsiElement().delete(); + } + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 9ccf736..daebe3a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -47,6 +47,11 @@ id="mockitools.extraInterfaces" language="JAVA" displayName="@Mock#extraInterfaces and MockSettings.extraInterfaces() validations" groupPath="Java" groupName="Mockito" enabledByDefault="true" level="ERROR"/> + + +Since @Mock and @InjectMocks annotated fields are initialized automagically by Mockito via +MockitoJUnitRunner, MockitoJUnit.rule or MockitoAnnotations.initMocks() / +MockitoAnnotations.openMocks(), there is no need for explicit initialization of them. + +

    Explicit initializer is reported only when the field is annotated as either @Mock or + @InjectMocks + + diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index 9f92676..de6865a 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -6,8 +6,10 @@ inspection.timeout.max.threshold.config.title=Mockito.timeout() max threshold inspection.captor.field.must.be.argument.captor=A @Captor field must be of the type ArgumentCaptor. inspection.captor.field.init.not.required=Explicit initialization of a @Captor field can be omitted. quick.fix.captor.field.family.name=@Captor fixes -quick.fix.captor.field.remove.init=Remove initializer quick.fix.captor.field.convert.to.argumentcaptor=Convert field type to ArgumentCaptor<> +quick.fix.field.remove.init=Remove initializer +inspection.mock.field.init.not.required=Explicit initialization of a @Mock or @InjectMocks field can be omitted. +quick.fix.mock.field.family.name=@Mock and @InjectMocks fixes inspection.times.zero.can.be.replaced.with.never=This call can be replaced with Mockito.never(). inspection.times.one.can.be.omitted=This call can be omitted since 'times(1)' is the default behaviour. quick.fix.times.family.name=Mockito.times() fixes diff --git a/src/test/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspectionTest.java new file mode 100644 index 0000000..fb0e4d0 --- /dev/null +++ b/src/test/java/com/picimako/mockitools/inspection/mocking/MockFieldInitializationInspectionTest.java @@ -0,0 +1,28 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.mocking; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.picimako.mockitools.inspection.MockitoolsInspectionTestBase; +import org.junit.jupiter.api.Test; + +/** + * Functional test for {@link MockFieldInitializationInspection}. + */ +class MockFieldInitializationInspectionTest extends MockitoolsInspectionTestBase { + + @Override + protected InspectionProfileEntry getInspection() { + return new MockFieldInitializationInspection(); + } + + @Test + void testMockFieldInit() { + doJavaTest(); + } + + @Test + void testMockFieldInitReplaceTest() { + doQuickFixTest("Remove initializer"); + } +} diff --git a/src/test/testData/inspection/MockFieldInit.java b/src/test/testData/inspection/MockFieldInit.java new file mode 100644 index 0000000..f595c4f --- /dev/null +++ b/src/test/testData/inspection/MockFieldInit.java @@ -0,0 +1,33 @@ +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.InjectMocks; + +public class MockFieldInit { + + @Captor + public ArgumentCaptor stringCaptorNoInit; + + @Captor + public ArgumentCaptor stringCaptorInit = ArgumentCaptor.forClass(String.class); + + @Mock + public MockObject mock; + + @Mock + public MockObject mockInit = Mockito.mock(); + + @InjectMocks + public MockObject injectMocksNoInit; + + @InjectMocks + public MockObject injectMocksInit = mockInit; + + public MockObject nonMockNoInit; + + public MockObject nonMockInit = new MockObject(); + + public static class MockObject { + } +} diff --git a/src/test/testData/inspection/MockFieldInitReplaceTest.after.java b/src/test/testData/inspection/MockFieldInitReplaceTest.after.java new file mode 100644 index 0000000..34631d9 --- /dev/null +++ b/src/test/testData/inspection/MockFieldInitReplaceTest.after.java @@ -0,0 +1,10 @@ +import org.mockito.Mock; + +public class MockFieldInitReplaceTest { + + @Mock + public MockObject mock; + + public static class MockObject { + } +} diff --git a/src/test/testData/inspection/MockFieldInitReplaceTest.java b/src/test/testData/inspection/MockFieldInitReplaceTest.java new file mode 100644 index 0000000..ec70db8 --- /dev/null +++ b/src/test/testData/inspection/MockFieldInitReplaceTest.java @@ -0,0 +1,10 @@ +import org.mockito.Mock; + +public class MockFieldInitReplaceTest { + + @Mock + public MockObject mock = Mockito.mock(); + + public static class MockObject { + } +} From edaf73f1328595c92a7aa6b533ecd9d5eaf95e2c Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 06:59:53 +0200 Subject: [PATCH 19/24] Add support for generic inferred 'Mockito.mock()/spy()' calls when converting from those calls to @Mock and @Spy fields --- CHANGELOG.md | 1 + docs/mock_creation.md | 19 +++++- .../picimako/mockitools/dsl/MockObject.java | 5 +- .../ConvertCallToFieldIntentionBase.java | 30 ++++++++-- .../ConvertMockCallToFieldIntention.java | 27 +++++++-- .../ConvertSpyCallToFieldIntention.java | 49 ++++++++++------ .../mockitools/util/PsiClassUtil.java | 3 +- .../mockitools/util/PsiMethodUtil.java | 9 +++ .../ConvertMockCallToFieldIntentionTest.java | 50 ++++++++++++++++ .../ConvertSpyCallToFieldIntentionTest.java | 58 +++++++++++++++++++ 10 files changed, 214 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 166a514..04d4725 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ as well as `equals()` and `hashCode()`. - [63](https://github.com/picimako/mockitools/issues/63): Added an inspection to report `ArgumentCaptor.captor()` calls when they are passed in at least one argument. This method is not designed to accept any argument. - [55](https://github.com/picimako/mockitools/issues/55): Added an inspection to report explicit initialization of `@Mock` and `@InjectMocks` annotated fields. +- Added support for generic inferred `Mockito.mock()` and `Mockito.spy()` calls when converting from those calls to `@Mock` and `@Spy` fields, respectively. ### Changed - Applied a couple of code simplifications for easier maintenance. diff --git a/docs/mock_creation.md b/docs/mock_creation.md index e6d3b7c..b133a15 100644 --- a/docs/mock_creation.md +++ b/docs/mock_creation.md @@ -308,13 +308,17 @@ Just like `@Spy` and `@Mock` annotated fields can be converted to `Mockito.spy() ### Mockito.spy() This intention is available on `Mockito.spy()` calls, when the argument of the call is either a *new* expression (i.e. `new MockObject()`), -or a class object access expression (i.e. `MockObject.class`), but the argument is not an array creation. +or a class object access expression (i.e. `MockObject.class`), but the argument is not an array creation. The mock type must also be +mockable. -![convert mock() variable to @Mock field](assets/convert_mock_variable_to_field.gif) +It is also available when the mock type is generic inferred and there is no call argument, i.e. `MockObject spy = Mockito.spy();`. -### Examples +#### Examples ```java +from: Clazz spy = spy(); +to: @Spy Clazz spy; + from: spy(Clazz.class); to: @Spy Clazz clazz; @@ -354,7 +358,16 @@ the intention is available regardless. This is mainly to not confuse users when the intention is available and when it is not, and to draw attention to that the attribute values may need adjustment to be used in the @Mock annotation. +The mock type must also be mockable to be available, and it is also available when the mock type is generic inferred and there is no call argument, i.e. `MockObject mock = Mockito.mock();`. + +![convert mock() variable to @Mock field](assets/convert_mock_variable_to_field.gif) + +#### Examples + ```java +from: Clazz mock = mock(); +to: @Mock Clazz mock; + from: mock(Clazz.class) to: @Mock Clazz clazz; diff --git a/src/main/java/com/picimako/mockitools/dsl/MockObject.java b/src/main/java/com/picimako/mockitools/dsl/MockObject.java index 0d77a7b..edc1a26 100644 --- a/src/main/java/com/picimako/mockitools/dsl/MockObject.java +++ b/src/main/java/com/picimako/mockitools/dsl/MockObject.java @@ -42,8 +42,9 @@ public static String getMockAnnotationName(PsiField field) { } public static String getMockInitializerAsString(PsiLocalVariable localVariable) { - if (MockitoolsPsiUtil.isMockitoMock((PsiMethodCallExpression) localVariable.getInitializer())) return "mock()"; - if (MockitoolsPsiUtil.isMockitoSpy((PsiMethodCallExpression) localVariable.getInitializer())) return "spy()"; + var initializer = (PsiMethodCallExpression) localVariable.getInitializer(); + if (MockitoolsPsiUtil.isMockitoMock(initializer)) return "mock()"; + if (MockitoolsPsiUtil.isMockitoSpy(initializer)) return "spy()"; return ""; } diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java index 62c15f4..af00e0b 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java @@ -6,7 +6,7 @@ import static com.picimako.mockitools.util.ClassObjectAccessUtil.resolveOperandType; import static com.picimako.mockitools.util.ListPopupHelper.selectItemAndRun; import static com.picimako.mockitools.util.PsiClassUtil.getParentClasses; -import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; +import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgumentOrNull; import static com.picimako.mockitools.util.Ranges.endOffsetOf; import static java.util.stream.Collectors.joining; @@ -27,7 +27,6 @@ import com.intellij.psi.PsiClassObjectAccessExpression; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiField; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiJavaCodeReferenceElement; @@ -35,6 +34,7 @@ import com.intellij.psi.PsiMethodCallExpression; import com.intellij.psi.PsiNewExpression; import com.intellij.psi.PsiType; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.rename.inplace.MemberInplaceRenamer; import com.intellij.refactoring.rename.inplace.VariableInplaceRenamer; import com.intellij.util.Consumer; @@ -45,6 +45,7 @@ import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.List; @@ -97,11 +98,16 @@ else if (ctx.mockTypeOrObject instanceof PsiNewExpression) { project, editor, targetClass -> introduceFieldForNewExpression(ctx.targetClass(targetClass))); + } else if (ctx.mockTypeOrObject instanceof PsiLocalVariable) { + selectTargetClassAndIntroduceField(getParentClasses(ctx.mockTypeOrObject), + project, + editor, + targetClass -> introduceFieldForLocalVariableType(ctx.targetClass(targetClass))); } } /** - * Introduces the field taking into account that the Mockito.spy() or Mockito.mock() call's argument is a 'new' expression, so that the field type, name + * Introduces the field taking into account that the {@code Mockito.spy()} call's argument is a 'new' expression, so that the field type, name * and initializer are constructed properly. *

    * Applicable only to {@link ConvertSpyCallToFieldIntention}. @@ -111,7 +117,7 @@ protected void introduceFieldForNewExpression(ConversionContext ctx) { } /** - * Introduces the field taking into account that the Mockito.spy() or Mockito.mock() call's argument is a class object access expression, so that the field type and name + * Introduces the field taking into account that the {@code Mockito.spy()} or {@code Mockito.mock()} call's argument is a class object access expression, so that the field type and name * are constructed properly. */ protected void introduceFieldForClassObjectAccess(ConversionContext ctx) { @@ -120,6 +126,15 @@ protected void introduceFieldForClassObjectAccess(ConversionContext ctx) { NO_INITIALIZER); } + /** + * Introduces the field taking into account that the {@code Mockito.spy()} or {@code Mockito.mock()} call's type is generic inferred, + * and is determined by the local variable's type the call is assigned to. + */ + protected void introduceFieldForLocalVariableType(ConversionContext ctx) { + var localVar = (PsiLocalVariable) ctx.mockTypeOrObject; + introduceField(ctx, () -> Couple.of(localVar.getType().getPresentableText(), localVar.getName()), NO_INITIALIZER); + } + /** * If there is only one parent class, introduces the field there, otherwise lets the user choose the target parent class, and creates the field in that one. */ @@ -246,7 +261,8 @@ public boolean startInWriteAction() { protected static final class ConversionContext { final PsiMethodCallExpression spyOrMockCall; - final PsiExpression mockTypeOrObject; + @Nullable + final PsiElement mockTypeOrObject; final Editor editor; final Project project; @Accessors(fluent = true) @@ -255,7 +271,9 @@ protected static final class ConversionContext { ConversionContext(PsiMethodCallExpression spyOrMockCall, Editor editor, Project project) { this.spyOrMockCall = spyOrMockCall; - this.mockTypeOrObject = getFirstArgument(spyOrMockCall); + this.mockTypeOrObject = Optional.ofNullable(getFirstArgumentOrNull(spyOrMockCall)) + .map(PsiElement.class::cast) + .orElseGet(() -> PsiTreeUtil.getParentOfType(spyOrMockCall, PsiLocalVariable.class)); this.editor = editor; this.project = project; } diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java index 9e1f918..0011cbb 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java @@ -29,6 +29,7 @@ import static com.picimako.mockitools.util.PsiMethodUtil.get2ndArgument; import static com.picimako.mockitools.util.PsiMethodUtil.getArguments; import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; +import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgumentOrNull; import static com.picimako.mockitools.util.PsiMethodUtil.getMethodCallAtCaretOrEmpty; import static com.picimako.mockitools.util.PsiMethodUtil.hasOneArgument; import static com.picimako.mockitools.util.PsiMethodUtil.hasTwoArguments; @@ -46,9 +47,11 @@ import com.intellij.psi.PsiExpression; import com.intellij.psi.PsiField; import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiLocalVariable; import com.intellij.psi.PsiMethodCallExpression; import com.intellij.psi.PsiReferenceExpression; import com.intellij.psi.codeStyle.JavaCodeStyleManager; +import com.intellij.psi.util.PsiTreeUtil; import com.picimako.mockitools.MockitoMockMatchers; import com.picimako.mockitools.MockitoQualifiedNames; import com.picimako.mockitools.util.PsiClassUtil; @@ -124,12 +127,24 @@ public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file return getMethodCallAtCaretOrEmpty(file, editor) .filter(call -> MockitoQualifiedNames.MOCK.equals(getMethodName(call))) .map(call -> compute(() -> { - if (isMockableTypeInAnyWay(getOperandType(/*mockTypeArg*/getFirstArgument(call)))) { - if (MockitoMockMatchers.MOCK.matches(call)) return hasOneArgument(call); - if (MOCK_WITH_NAME.matches(call) || MOCK_WITH_ANSWER.matches(call)) - return hasTwoArguments(call); - if (MOCK_WITH_SETTINGS.matches(call)) - return hasTwoArguments(call) && isSettingsSupportedByMockAnnotation(get2ndArgument(call)); + var mockTypeArg = getFirstArgumentOrNull(call); + //Mockito.mock(, ...) + if (mockTypeArg != null) { + if (isMockableTypeInAnyWay(getOperandType(mockTypeArg))) { + if (MockitoMockMatchers.MOCK.matches(call)) return hasOneArgument(call); + if (MOCK_WITH_NAME.matches(call) || MOCK_WITH_ANSWER.matches(call)) + return hasTwoArguments(call); + if (MOCK_WITH_SETTINGS.matches(call)) + return hasTwoArguments(call) && isSettingsSupportedByMockAnnotation(get2ndArgument(call)); + } + } + //Generic inferred Mockito.mock() + else { + var parentVariable = PsiTreeUtil.getParentOfType(call, PsiLocalVariable.class); + return parentVariable != null + //SomeObject someVariable = ...; + && !parentVariable.getTypeElement().isInferredType() + && isMockableTypeInAnyWay(parentVariable.getType()); } return false; })) diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java index 8a33ebd..907a3b4 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java @@ -3,12 +3,11 @@ package com.picimako.mockitools.intention; import static com.intellij.openapi.application.ReadAction.compute; -import static com.picimako.mockitools.util.ClassObjectAccessUtil.getOperandType; import static com.picimako.mockitools.MockableTypesUtil.isMockableTypeInAnyWay; import static com.picimako.mockitools.MockitoQualifiedNames.SPY; import static com.picimako.mockitools.MockitoolsPsiUtil.isMockitoSpy; +import static com.picimako.mockitools.util.ClassObjectAccessUtil.getOperandType; import static com.picimako.mockitools.util.PsiMethodUtil.getMethodCallAtCaretOrEmpty; -import static com.picimako.mockitools.util.PsiMethodUtil.hasOneArgument; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; @@ -16,10 +15,12 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiLocalVariable; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiNewExpression; import com.intellij.psi.codeStyle.JavaCodeStyleManager; +import com.intellij.psi.util.PsiTreeUtil; import com.picimako.mockitools.MockitoQualifiedNames; import com.picimako.mockitools.util.PsiMethodUtil; import org.jetbrains.annotations.NotNull; @@ -34,8 +35,8 @@ * The intention is available *

      *
    • on Mockito.spy() calls,
    • - *
    • when the argument of the call is either a new expression, or a class object access expression,
    • - *
    • the argument is not an array creation,
    • + *
    • when the argument of the call is either a new expression, or a class object access expression, + * and it is not an array creation, or when the type is generic inferred and there is no call argument,
    • *
    • the type that is being mocked can actually be mocked (by Mockito's rules)/allowed to be mocked (by the @DoNotMock annotation)
    • *
    *

    @@ -62,7 +63,7 @@ *

    * If there is more than one parent class of the selected spy() call, a list is shown from which the class where the field will be introduced, can be selected. *

    - * NOTE: The format {@code spy(<reference to already created object>)} where the object passed in to the spy() call is created outside + * NOTE: The format {@code spy()} where the object passed in to the spy() call is created outside * the call is not yet supported. * * @see ConvertMockCallToFieldIntention @@ -70,26 +71,38 @@ * @since 0.2.0 */ final class ConvertSpyCallToFieldIntention extends ConvertCallToFieldIntentionBase { - + public ConvertSpyCallToFieldIntention() { super(SPY, "@Spy"); } //Availability - + @Override public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { - return getMethodCallAtCaretOrEmpty(file, editor) - .filter(call -> isMockitoSpy(call) && hasOneArgument(call)) - .map(PsiMethodUtil::getFirstArgument) - .map(spiedTypeOrInstance -> spiedTypeOrInstance instanceof PsiNewExpression newSpiedInstance - //e.g. Mockito.spy(new ObjectToSpy()) - ? compute(() -> !newSpiedInstance.isArrayCreation()) && isMockableTypeInAnyWay(spiedTypeOrInstance.getType()) - //e.g. Mockito.spy(ObjectToSpy.class) - : isMockableTypeInAnyWay(getOperandType(spiedTypeOrInstance))) - .orElse(false); + var methodCallAtCaret = getMethodCallAtCaretOrEmpty(file, editor); + if (methodCallAtCaret.isPresent() && isMockitoSpy(methodCallAtCaret.get())) { + return methodCallAtCaret + .filter(PsiMethodUtil::hasOneArgument) + .map(PsiMethodUtil::getFirstArgumentOrNull) + .map(spiedTypeOrInstance -> spiedTypeOrInstance instanceof PsiNewExpression newSpiedInstance + //e.g. Mockito.spy(new ObjectToSpy()) + ? compute(() -> !newSpiedInstance.isArrayCreation()) && isMockableTypeInAnyWay(spiedTypeOrInstance.getType()) + //e.g. Mockito.spy(ObjectToSpy.class) + : isMockableTypeInAnyWay(getOperandType(spiedTypeOrInstance))) + //Generic inferred Mockito.spy() + .orElseGet(() -> { + var parentVariable = PsiTreeUtil.getParentOfType(methodCallAtCaret.get(), PsiLocalVariable.class); + return parentVariable != null + //SomeObject someVariable = ...; + && !parentVariable.getTypeElement().isInferredType() + && isMockableTypeInAnyWay(compute(parentVariable::getType)); + }); + } + + return false; } - + //Conversion /** @@ -123,7 +136,7 @@ private static boolean isDefaultConstructor(@NotNull PsiNewExpression newExpress //new Clazz("") + Clazz() + Clazz(int) -> false if (constructor != null) { return compute(() -> constructor.getParameterList().isEmpty() - && (constructor.hasModifierProperty(PsiModifier.PUBLIC) || constructor.hasModifierProperty(PsiModifier.PACKAGE_LOCAL))); + && (constructor.hasModifierProperty(PsiModifier.PUBLIC) || constructor.hasModifierProperty(PsiModifier.PACKAGE_LOCAL))); } //new Clazz() + auto-gen Clazz() -> true //new Clazz() + Clazz(String) + Clazz(int) -> false diff --git a/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java b/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java index 98fb4e5..46c5039 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiClassUtil.java @@ -12,7 +12,6 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiExpression; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.introduceField.ElementToWorkOn; @@ -30,7 +29,7 @@ public final class PsiClassUtil { *

    * Based on {@link com.intellij.refactoring.introduceField.BaseExpressionToFieldHandler}. */ - public static List getParentClasses(@NotNull PsiExpression expression) { + public static List getParentClasses(@NotNull PsiElement expression) { var parentClasses = new SmartList(); PsiElement parent = Optional.ofNullable(expression.getUserData(ElementToWorkOn.PARENT)).orElseGet(expression::getParent); while (parent != null) { diff --git a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java index b9b126c..a580a78 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java @@ -123,6 +123,15 @@ public static PsiExpression getFirstArgument(@NotNull PsiMethodCallExpression me return getArguments(methodCall)[0]; } + /** + * Gets the first argument of the provided method call, or null if there is no argument specified. + */ + @Nullable("When the method call has no argument") + public static PsiExpression getFirstArgumentOrNull(@NotNull PsiMethodCallExpression methodCall) { + var arguments = getArguments(methodCall); + return arguments.length > 0 ? arguments[0] : null; + } + /** * Gets the 2nd argument of the provided method call, given that the argument list exists and is not null. */ diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java index 00c7a50..d3a8458 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntentionTest.java @@ -108,6 +108,32 @@ public void testMethod() { }"""); } + @Test + void testNotAvailableForGenericInferredMockitoMockWithVarKeyword() { + checkIntentionIsNotAvailable( + """ + import org.mockito.Mockito; + + public class NotAvailable { + public void testMethod() { + var mock = Mockito.mock(); + } + }"""); + } + + @Test + void testAvailableForGenericInferredMockitoMockWithExplicitType() { + checkIntentionIsAvailable( + """ + import org.mockito.Mockito; + + public class Available { + public void testMethod() { + Object mock = Mockito.mock(); + } + }"""); + } + @Test void testAvailableForMockitoMock() { checkIntentionIsAvailable( @@ -217,6 +243,30 @@ public void aMethod(Object object) { } }"""); } + @Test + void testConvertsGenericInferredMockitoMock() { + checkIntentionRun( + """ + import org.mockito.Mockito; + + public class ConversionTest { + public void testMethod() { + Object mock = Mockito.mock(); + } + }""", + """ + import org.mockito.Mock; + import org.mockito.Mockito; + + public class ConversionTest { + @Mock + Object mock; + + public void testMethod() { + } + }"""); + } + @Test void testConvertsMockitoMockFromVariable() { checkIntentionRun( diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java index b371c43..d8562f1 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntentionTest.java @@ -159,6 +159,34 @@ public static final class Mockable { } }"""); } + @Test + void testNotAvailableForGenericInferredMockitoSpyWithVarKeyword() { + checkIntentionIsNotAvailable( + """ + import org.mockito.Mockito; + + public class NotAvailable { + public void testMethod() { + var spy = Mockito.spy(); + } + }"""); + } + + @Test + void testAvailableForGenericInferredMockitoSpyWithExplicitType() { + checkIntentionIsAvailable( + """ + import org.mockito.Mockito; + + public class Available { + public void testMethod() { + Mockable spy = Mockito.spy(); + } + + public static final class Mockable { } + }"""); + } + //Conversion - standalone spy call + new expression @Test @@ -968,4 +996,34 @@ public void testMethod() { public static final class Mockable { } }"""); } + + //Conversion - generic inferred spy creation + + @Test + void testConvertsGenericInferredMockitoSpy() { + checkIntentionRun( + """ + import org.mockito.Mockito; + + public class ConversionTest { + public void testMethod() { + Mockable spy = Mockito.spy(); + } + + public static final class Mockable { } + }""", + """ + import org.mockito.Mockito; + import org.mockito.Spy; + + public class ConversionTest { + @Spy + Mockable spy; + + public void testMethod() { + } + + public static final class Mockable { } + }"""); + } } From f15590176cee5c3eb9fad72a3b1b772564359a6b Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 07:23:24 +0200 Subject: [PATCH 20/24] Fix some potential ArrayIndexOutOfBoundsExceptions --- CHANGELOG.md | 1 + .../intention/ConvertCallToFieldIntentionBase.java | 4 ++-- .../intention/ConvertMockCallToFieldIntention.java | 3 +-- .../intention/ConvertSpyCallToFieldIntention.java | 2 +- .../com/picimako/mockitools/util/PsiMethodUtil.java | 10 +--------- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04d4725..2ddedd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ This method is not designed to accept any argument. ### Fixed - Fixed the title of the list popup when selecting the target stubbing during conversion. - Fixed a threading related exception that occurred during converting `@Mock` or `@Spy` fields to their corresponding method call versions. +- Fixed some potential `ArrayIndexOutOfBoundsException`s. ## [1.2.0] ### Changed diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java index af00e0b..82df03f 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertCallToFieldIntentionBase.java @@ -6,7 +6,7 @@ import static com.picimako.mockitools.util.ClassObjectAccessUtil.resolveOperandType; import static com.picimako.mockitools.util.ListPopupHelper.selectItemAndRun; import static com.picimako.mockitools.util.PsiClassUtil.getParentClasses; -import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgumentOrNull; +import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; import static com.picimako.mockitools.util.Ranges.endOffsetOf; import static java.util.stream.Collectors.joining; @@ -271,7 +271,7 @@ protected static final class ConversionContext { ConversionContext(PsiMethodCallExpression spyOrMockCall, Editor editor, Project project) { this.spyOrMockCall = spyOrMockCall; - this.mockTypeOrObject = Optional.ofNullable(getFirstArgumentOrNull(spyOrMockCall)) + this.mockTypeOrObject = Optional.ofNullable(getFirstArgument(spyOrMockCall)) .map(PsiElement.class::cast) .orElseGet(() -> PsiTreeUtil.getParentOfType(spyOrMockCall, PsiLocalVariable.class)); this.editor = editor; diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java index 0011cbb..1ab4e6e 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java @@ -29,7 +29,6 @@ import static com.picimako.mockitools.util.PsiMethodUtil.get2ndArgument; import static com.picimako.mockitools.util.PsiMethodUtil.getArguments; import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; -import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgumentOrNull; import static com.picimako.mockitools.util.PsiMethodUtil.getMethodCallAtCaretOrEmpty; import static com.picimako.mockitools.util.PsiMethodUtil.hasOneArgument; import static com.picimako.mockitools.util.PsiMethodUtil.hasTwoArguments; @@ -127,7 +126,7 @@ public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file return getMethodCallAtCaretOrEmpty(file, editor) .filter(call -> MockitoQualifiedNames.MOCK.equals(getMethodName(call))) .map(call -> compute(() -> { - var mockTypeArg = getFirstArgumentOrNull(call); + var mockTypeArg = getFirstArgument(call); //Mockito.mock(, ...) if (mockTypeArg != null) { if (isMockableTypeInAnyWay(getOperandType(mockTypeArg))) { diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java index 907a3b4..eec6341 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertSpyCallToFieldIntention.java @@ -84,7 +84,7 @@ public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file if (methodCallAtCaret.isPresent() && isMockitoSpy(methodCallAtCaret.get())) { return methodCallAtCaret .filter(PsiMethodUtil::hasOneArgument) - .map(PsiMethodUtil::getFirstArgumentOrNull) + .map(PsiMethodUtil::getFirstArgument) .map(spiedTypeOrInstance -> spiedTypeOrInstance instanceof PsiNewExpression newSpiedInstance //e.g. Mockito.spy(new ObjectToSpy()) ? compute(() -> !newSpiedInstance.isArrayCreation()) && isMockableTypeInAnyWay(spiedTypeOrInstance.getType()) diff --git a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java index a580a78..abc19ed 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java @@ -116,18 +116,10 @@ public static PsiExpression[] getArguments(@NotNull PsiMethodCallExpression meth return compute(() -> methodCall.getArgumentList().getExpressions()); } - /** - * Gets the first argument of the provided method call, given that the argument list exists and is not null. - */ - public static PsiExpression getFirstArgument(@NotNull PsiMethodCallExpression methodCall) { - return getArguments(methodCall)[0]; - } - /** * Gets the first argument of the provided method call, or null if there is no argument specified. */ - @Nullable("When the method call has no argument") - public static PsiExpression getFirstArgumentOrNull(@NotNull PsiMethodCallExpression methodCall) { + public static PsiExpression getFirstArgument(@NotNull PsiMethodCallExpression methodCall) { var arguments = getArguments(methodCall); return arguments.length > 0 ? arguments[0] : null; } From 86b78638011542f3fd6f4b5d3d1072a8289c53d6 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 07:24:38 +0200 Subject: [PATCH 21/24] Delete unused imports --- .../consecutive/MergeConsecutiveStubbingCallsQuickFix.java | 1 - .../verification/TimesVerificationModeInspection.java | 2 -- .../mockitools/intention/convert/ConversionIntentionBase.java | 1 - .../intention/convert/stub/ConvertStubbingAction.java | 1 - 4 files changed, 5 deletions(-) diff --git a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java index ee3a4ff..16bf5b3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java +++ b/src/main/java/com/picimako/mockitools/inspection/consecutive/MergeConsecutiveStubbingCallsQuickFix.java @@ -7,7 +7,6 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.util.IntentionFamilyName; import com.intellij.codeInspection.util.IntentionName; -import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; import com.siyeh.ig.InspectionGadgetsFix; diff --git a/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java b/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java index 829d9a3..ede5642 100644 --- a/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/verification/TimesVerificationModeInspection.java @@ -35,9 +35,7 @@ import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.callMatcher.CallMatcher; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import javax.swing.*; import java.util.Collections; import java.util.List; import java.util.Objects; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java index 18a9a7d..f6181a6 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/ConversionIntentionBase.java @@ -31,7 +31,6 @@ import com.intellij.util.IncorrectOperationException; import com.picimako.mockitools.util.ListPopupHelper; import com.picimako.mockitools.intention.convert.verification.NoActionAvailableAction; -import com.picimako.mockitools.resources.MockitoolsBundle; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java index 7bf274c..42cfb91 100644 --- a/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java +++ b/src/main/java/com/picimako/mockitools/intention/convert/stub/ConvertStubbingAction.java @@ -25,7 +25,6 @@ import org.jetbrains.annotations.TestOnly; import java.util.List; -import java.util.Optional; /** * Action to convert between the different stubbing approaches. From 504025e41e7a93f5ff060ea6d0a9299b90d643dc Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 07:42:33 +0200 Subject: [PATCH 22/24] Simplify code by inlining data --- .../ConvertMockCallToFieldIntention.java | 10 ++-- .../mockitools/MockitoolsPsiUtilV3Test.java | 39 ++++++++++++++ .../mockitools/MockitoolsPsiUtilv3Test.java | 52 ------------------- .../MockCompletionContributorTest.java | 20 +++---- .../MockitoolsCodeCompletionTestBase.java | 5 +- 5 files changed, 55 insertions(+), 71 deletions(-) create mode 100644 src/test/java/com/picimako/mockitools/MockitoolsPsiUtilV3Test.java delete mode 100644 src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java index 1ab4e6e..12f72b7 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockCallToFieldIntention.java @@ -15,7 +15,6 @@ import static com.picimako.mockitools.MockitoQualifiedNames.LENIENT; import static com.picimako.mockitools.MockitoQualifiedNames.MOCK_MAKER; import static com.picimako.mockitools.MockitoQualifiedNames.NAME; -import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_ANSWERS; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCK; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCKITO; import static com.picimako.mockitools.MockitoQualifiedNames.ORG_MOCKITO_MOCK_SERIALIZABLE_MODE; @@ -234,14 +233,13 @@ private void configureFromMockSettings(MockSettingsBasedAnnotationConfigurer con * Returns whether the argument Answer expression is a reference to {@code org.mockito.Answers.RETURNS_DEFAULTS}. */ public static boolean isDefaultAnswer(PsiExpression answer) { - return answer instanceof PsiReferenceExpression answerExpr - && isEnumConstant(compute(answerExpr::resolve), ORG_MOCKITO_ANSWERS, "RETURNS_DEFAULTS"); + return answer instanceof PsiReferenceExpression answerExpr && isAnswersReturnDefaults(compute(answerExpr::resolve)); } - private static boolean isEnumConstant(PsiElement element, String enumClassName, String enumConstantName) { + private static boolean isAnswersReturnDefaults(PsiElement element) { return element instanceof PsiEnumConstant constant - && enumClassName.equals(constant.getContainingClass().getQualifiedName()) - && enumConstantName.equals(constant.getName()); + && MockitoQualifiedNames.ORG_MOCKITO_ANSWERS.equals(constant.getContainingClass().getQualifiedName()) + && "RETURNS_DEFAULTS".equals(constant.getName()); } /** diff --git a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilV3Test.java b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilV3Test.java new file mode 100644 index 0000000..246e56b --- /dev/null +++ b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilV3Test.java @@ -0,0 +1,39 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.intellij.openapi.application.ReadAction; +import com.intellij.psi.PsiMethodCallExpression; +import org.junit.jupiter.api.Test; + +/** + * Functional test for {@link MockitoolsPsiUtil}. Contains test cases specific to Mockito 3.x. + */ +class MockitoolsPsiUtilV3Test extends MockitoolsTestBase { + + public MockitoolsPsiUtilV3Test() { + super(ThirdPartyLibrary.MOCKITO_V3); + } + + @Test + void testIsASpecificMethod() { + getFixture().configureByText("IsMatchersTest.java", """ + import org.mockito.Matchers; + + public class IsMatchersTest { + public void testMethod() { + Matchers.anyString(); + } + }"""); + assertThat(MockitoolsPsiUtil.isMatchers(getMethodCall())) + .describedAs("Failed during the assertion of " + "IsMatchersTest.java") + .isTrue(); + } + + + private PsiMethodCallExpression getMethodCall() { + return (PsiMethodCallExpression) ReadAction.compute(() -> getFixture().getFile().findElementAt(getFixture().getCaretOffset()).getParent().getParent()); + } +} diff --git a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java b/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java deleted file mode 100644 index 7d3df78..0000000 --- a/src/test/java/com/picimako/mockitools/MockitoolsPsiUtilv3Test.java +++ /dev/null @@ -1,52 +0,0 @@ -//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - -package com.picimako.mockitools; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.intellij.openapi.application.ReadAction; -import com.intellij.psi.PsiMethodCallExpression; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.function.Supplier; -import java.util.stream.Stream; - -/** - * Functional test for {@link MockitoolsPsiUtil}. Contains test cases specific to Mockito 3.x. - */ -class MockitoolsPsiUtilv3Test extends MockitoolsTestBase { - - public MockitoolsPsiUtilv3Test() { - super(ThirdPartyLibrary.MOCKITO_V3); - } - - @ParameterizedTest - @MethodSource("specificMethodData") - void testIsASpecificMethod(TestData data) { - getFixture().configureByText(data.fileName, data.fileContent); - assertThat(data.isSpecificMethod.get()) - .describedAs("Failed during the assertion of " + data.fileName) - .isTrue(); - } - - private Stream specificMethodData() { - return Stream.of( - new TestData("IsMatchersTest.java", - """ - import org.mockito.Matchers; - - public class IsMatchersTest { - public void testMethod() { - Matchers.anyString(); - } - }""", () -> MockitoolsPsiUtil.isMatchers(getMethodCall()))); - } - - private PsiMethodCallExpression getMethodCall() { - return (PsiMethodCallExpression) ReadAction.compute(() -> getFixture().getFile().findElementAt(getFixture().getCaretOffset()).getParent().getParent()); - } - - private record TestData(String fileName, String fileContent, Supplier isSpecificMethod) { - } -} diff --git a/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java b/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java index 3222db1..bcfbcf2 100644 --- a/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java +++ b/src/test/java/com/picimako/mockitools/completion/MockCompletionContributorTest.java @@ -45,7 +45,7 @@ private static final class SomeMockType { @Test void shouldNotCompleteNonMockParameterHolder() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( """ import org.mockito.Mock; import org.mockito.Mockito; @@ -75,63 +75,63 @@ private static final class SomeMockType { @Test void shouldCompleteFirstArgumentInEmptyArgumentListT() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.reset();"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteFirstArgumentInNonEmptyArgumentListT() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.reset(someInjectMocks, );"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteFirstArgumentInEmptyArgumentListObject() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.verifyNoMoreInteractions();"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteFirstArgumentInNonEmptyArgumentListObject() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.verifyNoMoreInteractions(someInjectMocks, );"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteLastArgument() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.verifyNoMoreInteractions(someMock, someSpy, );"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteFirstArgumentInEmptyArgumentListObjectStaticImported() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("import static org.mockito.Mockito.verifyNoMoreInteractions;", "verifyNoMoreInteractions();"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteFirstArgumentInNonEmptyArgumentListObjectStaticImported() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("import static org.mockito.Mockito.verifyNoMoreInteractions;", "verifyNoMoreInteractions(someInjectMocks, );"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteLastArgumentStaticImported() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("import static org.mockito.Mockito.verifyNoMoreInteractions;", "verifyNoMoreInteractions(someMock, someSpy, );"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } @Test void shouldCompleteMiddleArgument() { - doTestCodeCompletionContains("CompletionTest.java", + doTestCodeCompletionContains( COMPLETION_TEST_CLASS.formatted("", "Mockito.clearInvocations(someMock, someSpy);"), "mock", "spy", "someInjectMocks", "someMock", "someSpy"); } diff --git a/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java b/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java index 3a40d85..4232e33 100644 --- a/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java +++ b/src/test/java/com/picimako/mockitools/completion/MockitoolsCodeCompletionTestBase.java @@ -15,14 +15,13 @@ public abstract class MockitoolsCodeCompletionTestBase extends MockitoolsTestBas * Tests basic code completion in the provided file text at the marked caret position, * and validates if the completion contains exactly the expected items. * - * @param fileName the file name to configure the test data in * @param text the file text on which the code completion is invoked * @param completionItems the list of items that are expected to be in the displayed completion list */ - protected void doTestCodeCompletionContains(String fileName, String text, String... completionItems) { + protected void doTestCodeCompletionContains(String text, String... completionItems) { assertThat(text).withFailMessage("File text must contain to invoke code completion.").contains(""); - getFixture().configureByText(fileName, text); + getFixture().configureByText("CompletionTest.java", text); getFixture().complete(CompletionType.BASIC); assertThat(getFixture().getLookupElementStrings()).containsExactlyInAnyOrder(completionItems); From 8cc6feba34e2a371ebb154e5f630124cbcb0f5f6 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 07:42:53 +0200 Subject: [PATCH 23/24] Suppress a few violations --- .../migrationaids/v4/UsageOfAnyMatchersInspection.java | 1 + .../v4/UsageOfDeprecatedPluginClassesInspection.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java index c3b7d3d..48070f3 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfAnyMatchersInspection.java @@ -108,6 +108,7 @@ protected void doFix(@NotNull Project project, ProblemDescriptor descriptor) { private String getAnyX(String referenceName) { Matcher matcher = ANY_X_OF_PATTERN.matcher(referenceName); + //noinspection ResultOfMethodCallIgnored matcher.matches(); //no need to check if it matches. It already matches because of the initial CallMatcher. return matcher.group("anyX"); } diff --git a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java index f3a8c19..e80d105 100644 --- a/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/migrationaids/v4/UsageOfDeprecatedPluginClassesInspection.java @@ -39,6 +39,7 @@ final class UsageOfDeprecatedPluginClassesInspection extends MigrationAidBase.V2 @Override public void visitReferenceElement(@NotNull PsiJavaCodeReferenceElement reference) { if (ORG_MOCKITO_CONFIGURATION_ANNOTATION_ENGINE.equals(reference.getQualifiedName())) { + //noinspection DialogTitleCapitalization holder.registerProblem(reference, MockitoolsBundle.message("inspection.migration.aid.v4.plugin.configuration.annotation.engine"), new NameCollisionAwareReferenceReplacerQuickFix("quick.fix.migration.aid.v4.replace.with.org.mockito.plugins.AnnotationEngine", From 00f084541e6e491957b321b3369c7887b7da1279 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Tue, 10 Sep 2024 08:49:29 +0200 Subject: [PATCH 24/24] Perform some code changes found by SonarLint --- .../mockitools/inspection/mocking/SpyOnMockInspection.java | 6 ++---- .../intention/ConvertMockSpyFieldToCallAction.java | 4 ++-- .../java/com/picimako/mockitools/util/PointersUtil.java | 4 +--- .../java/com/picimako/mockitools/util/PsiMethodUtil.java | 3 +-- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java index 6f16841..dbd6007 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/SpyOnMockInspection.java @@ -48,10 +48,8 @@ else if (firstArgument instanceof PsiReferenceExpression variableRef) { if (field.hasAnnotation(ORG_MOCKITO_MOCK)) { holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); } - } else if (resolved instanceof PsiLocalVariable localVariable) { - if (MockObject.isAnyKindOfMock(localVariable)) { - holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); - } + } else if (resolved instanceof PsiLocalVariable localVariable && MockObject.isAnyKindOfMock(localVariable)) { + holder.registerProblem(firstArgument, MockitoolsBundle.message("inspection.spying.on.mock.is.not.allowed")); } } } diff --git a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallAction.java b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallAction.java index 4ff7b26..0d07707 100644 --- a/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallAction.java +++ b/src/main/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallAction.java @@ -28,7 +28,7 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.PlatformCoreDataKeys; +import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.Ref; import com.intellij.psi.JavaPsiFacade; @@ -108,7 +108,7 @@ else if (TEST_ANNOTATIONS.stream().anyMatch(method::hasAnnotation)) @Override public void actionPerformed(@NotNull AnActionEvent e) { - introduceMockitoMockingCall(fieldToConvert, method, e.getData(PlatformCoreDataKeys.PSI_FILE)); + introduceMockitoMockingCall(fieldToConvert, method, e.getData(CommonDataKeys.PSI_FILE)); } /** diff --git a/src/main/java/com/picimako/mockitools/util/PointersUtil.java b/src/main/java/com/picimako/mockitools/util/PointersUtil.java index 6700a7a..a2916ce 100644 --- a/src/main/java/com/picimako/mockitools/util/PointersUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PointersUtil.java @@ -2,8 +2,6 @@ package com.picimako.mockitools.util; -import static java.util.stream.Collectors.toList; - import com.intellij.psi.PsiElement; import com.intellij.psi.SmartPointerManager; import com.intellij.psi.SmartPsiElementPointer; @@ -17,7 +15,7 @@ public final class PointersUtil { public static List> toPointers(List calls) { - return calls.stream().map(PointersUtil::toPointer).collect(toList()); + return calls.stream().map(PointersUtil::toPointer).toList(); } @NotNull diff --git a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java index abc19ed..ec9b6b5 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java @@ -4,7 +4,6 @@ import static com.intellij.openapi.application.ReadAction.compute; import static com.siyeh.ig.psiutils.MethodCallUtils.getMethodName; -import static java.util.stream.Collectors.toList; import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiElement; @@ -228,7 +227,7 @@ public static List collectCallsInChainFromLast(@NotNull current = previousCall; } else break; } - return calls.stream().map(PsiMethodCallExpression.class::cast).collect(toList()); + return calls.stream().map(PsiMethodCallExpression.class::cast).toList(); } public static List collectCallsInChainFromFirst(PsiExpression expression, boolean includeMySelf) {

    - * Hooks and test methods are displayed with dedicated icons to better distinguish them visually. - */ - static final class ClassMethodCellRenderer extends MethodCellRenderer { - ClassMethodCellRenderer() { - super(true); - } - - @Override - public String getContainerText(PsiMethod element, String name) { - //No container text is displayed - return null; - } - - @Override - public String getElementText(PsiMethod element) { - //The element text is always method name and the parameter list, e.g. 'testMethod(String)' - return PsiFormatUtil.formatMethod(element, PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS, PsiFormatUtilBase.SHOW_TYPE); - } - - @Override - protected Icon getIcon(PsiElement element) { - if (BEFORE_ANNOTATIONS.stream().anyMatch(ann -> ((PsiMethod) element).hasAnnotation(ann))) - return AllIcons.Gutter.ExtAnnotation; - else if (TEST_ANNOTATIONS.stream().anyMatch(ann -> ((PsiMethod) element).hasAnnotation(ann))) - return AllIcons.Actions.Execute; - return super.getIcon(element); - } - } } diff --git a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java index 8db7eb9..e974ad3 100644 --- a/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java +++ b/src/test/java/com/picimako/mockitools/intention/ConvertMockSpyFieldToCallIntentionTest.java @@ -31,7 +31,7 @@ void testIntentionIsNotAvailableWhenTheParentClassHasNoMethod() { checkIntentionIsNotAvailable( """ import org.mockito.Mock; - + public class NotAvailable { @Mock Object mock; @@ -44,7 +44,7 @@ void testIntentionIsNotAvailableWhenBothMockAndSpyAnnotationsAreOnField() { """ import org.mockito.Mock; import org.mockito.Spy; - + public class NotAvailable { @Mock @Spy @@ -57,11 +57,11 @@ void testIntentionIsAvailableOnMockField() { checkIntentionIsAvailable( """ import org.mockito.Mock; - + public class Available { @Mock Object mock; - + public void method() {} }"""); } @@ -71,11 +71,11 @@ void testIntentionIsAvailableOnSpyField() { checkIntentionIsAvailable( """ import org.mockito.Spy; - + public class Available { @Spy Object mock; - + public void method() {} }"""); } @@ -87,11 +87,11 @@ void testConvertsMockFieldToMockCallFirstInCodeBlockOfManyStatements() { checkIntentionRun( """ import org.mockito.Mock; - + public class ConversionTest { @Mock Object mock; - + public void method() { int number = 10; } @@ -99,9 +99,9 @@ public void method() { """ import org.mockito.Mock; import org.mockito.Mockito; - + public class ConversionTest { - + public void method() { Object mock = Mockito.mock(Object.class); int number = 10; @@ -114,19 +114,19 @@ void testConvertsMockFieldToMockCallFirstInCodeBlockOfNoStatement() { checkIntentionRun( """ import org.mockito.Mock; - + public class ConversionTest { @Mock Object mock; - + public void method() {} }""", """ import org.mockito.Mock; import org.mockito.Mockito; - + public class ConversionTest { - + public void method() { Object mock = Mockito.mock(Object.class); } @@ -135,30 +135,30 @@ public void method() { @Test void testConvertsMockFieldToMockCallIntoSelectedMethod() { - checkIntentionRun( + checkIntentionRunOnEdt( """ import org.mockito.Mock; - + public class ConversionTest { @Mock Object mock; - + public void method() { } - + public void anotherMethod() { } }""", """ import org.mockito.Mock; import org.mockito.Mockito; - + public class ConversionTest { - + public void method() { Object mock = Mockito.mock(Object.class); } - + public void anotherMethod() { } }"""); @@ -171,11 +171,11 @@ void testConvertsSpyFieldToSpyCallFirstInCodeBlockOfManyStatements() { checkIntentionRun( """ import org.mockito.Spy; - + public class ConversionTest { @Spy Object mock; - + public void method() { int number = 10; } @@ -183,9 +183,9 @@ public void method() { """ import org.mockito.Mockito; import org.mockito.Spy; - + public class ConversionTest { - + public void method() { Object mock = Mockito.spy(Object.class); int number = 10; @@ -198,19 +198,19 @@ void testConvertsSpyFieldToSpyCallFirstInCodeBlockOfNoStatement() { checkIntentionRun( """ import org.mockito.Spy; - + public class ConversionTest { @Spy Object mock; - + public void method() {} }""", """ import org.mockito.Mockito; import org.mockito.Spy; - + public class ConversionTest { - + public void method() { Object mock = Mockito.spy(Object.class); } @@ -219,30 +219,30 @@ public void method() { @Test void testConvertsSpyFieldToSpyCallIntoSelectedMethod() { - checkIntentionRun( + checkIntentionRunOnEdt( """ import org.mockito.Spy; - + public class ConversionTest { @Spy Object mock; - + public void method() { } - + public void anotherMethod() { } }""", """ import org.mockito.Mockito; import org.mockito.Spy; - + public class ConversionTest { - + public void method() { Object mock = Mockito.spy(Object.class); } - + public void anotherMethod() { } }"""); @@ -255,26 +255,26 @@ void testConvertsSpyFieldWithGenericsToSpyCall() { checkIntentionRun( """ import org.mockito.Spy; - + public class ConversionTest { @Spy MockObject mock; - + public void method() { } - + public static final class MockObject { } }""", """ import org.mockito.Mockito; import org.mockito.Spy; - + public class ConversionTest { - + public void method() { MockObject mock = Mockito.spy(MockObject.class); } - + public static final class MockObject { } }"""); } @@ -284,26 +284,26 @@ void testConvertsMockFieldWithGenericsToMockCall() { checkIntentionRun( """ import org.mockito.Mock; - + public class ConversionTest { @Mock MockObject mock; - + public void method() { } - + public static final class MockObject { } }""", """ import org.mockito.Mock; import org.mockito.Mockito; - + public class ConversionTest { - + public void method() { MockObject mock = Mockito.mock(MockObject.class); } - + public static final class MockObject { } }"""); } diff --git a/src/test/java/com/picimako/mockitools/intention/MockitoolsIntentionTestBase.java b/src/test/java/com/picimako/mockitools/intention/MockitoolsIntentionTestBase.java index 10de0a3..c7c547c 100644 --- a/src/test/java/com/picimako/mockitools/intention/MockitoolsIntentionTestBase.java +++ b/src/test/java/com/picimako/mockitools/intention/MockitoolsIntentionTestBase.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.psi.PsiFile; import com.picimako.mockitools.MockitoolsTestBase; @@ -42,4 +43,14 @@ protected void checkIntentionRun(String beforeText, String afterText) { getIntention().invoke(getFixture().getProject(), getFixture().getEditor(), psiFile); getFixture().checkResult(afterText); } + + /** + * Invokes the intention on EDT when e.g. a list popup is displayed during the intention actions behaviour + * that requires that thread as a caller. + */ + protected void checkIntentionRunOnEdt(String beforeText, String afterText) { + PsiFile psiFile = getFixture().configureByText("ConversionTest.java", beforeText); + ApplicationManager.getApplication().invokeAndWait(() -> getIntention().invoke(getFixture().getProject(), getFixture().getEditor(), psiFile)); + getFixture().checkResult(afterText); + } } From a7f6f1e14104fa5fafce89dcbf4d4e777452aa08 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 13:22:24 +0200 Subject: [PATCH 15/24] Update changelog with recent modifications --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34428af..e7e1db8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ - The inspection reporting spy creation on a mock object now also recognizes passed in mock objects when they are created either with `Mockito.mock()` or `Mockito.spy()`. +### Changed +- Applied a couple of code simplifications for easier maintenance. +- Improved the documentation, in many cases by replacing textual code examples with screenshots and gifs. + +### Fixed +- Fixed the title of the list popup when selecting the target stubbing during conversion. +- Fixed a threading related exception that occurred during converting `@Mock` or `@Spy` fields to their corresponding method call versions. + ## [1.2.0] ### Changed - New support range of IDEs: 2023.3-2024.2-EAP. From 0fb39baa1f5af7ba53d14d72e8a6aa9d54960154 Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 16:57:14 +0200 Subject: [PATCH 16/24] 66: Add inspection to report stubbing of private, native, equals() and hashCode() methods --- CHANGELOG.md | 2 + docs/assets/stubbing_private_method.png | Bin 0 -> 20324 bytes docs/stubbing.md | 13 +++ .../stubbing/CannotStubMethodInspection.java | 65 +++++++++++++++ .../mockitools/util/PsiMethodUtil.java | 2 +- src/main/resources/META-INF/plugin.xml | 5 ++ .../CannotStubMethod.html | 6 ++ .../messages/MockitoolsBundle.properties | 3 + .../CannotStubMethodInspectionTest.java | 23 ++++++ .../inspection/NonStubbableMethodsTest.java | 78 ++++++++++++++++++ 10 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 docs/assets/stubbing_private_method.png create mode 100644 src/main/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspection.java create mode 100644 src/main/resources/inspectionDescriptions/CannotStubMethod.html create mode 100644 src/test/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspectionTest.java create mode 100644 src/test/testData/inspection/NonStubbableMethodsTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index e7e1db8..e1db644 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ ### Added - The inspection reporting spy creation on a mock object now also recognizes passed in mock objects when they are created either with `Mockito.mock()` or `Mockito.spy()`. +- [66](https://github.com/picimako/mockitools/issues/66): Added an inspection that can report the stubbing of private and native methods, +as well as `equals()` and `hashCode()`. ### Changed - Applied a couple of code simplifications for easier maintenance. diff --git a/docs/assets/stubbing_private_method.png b/docs/assets/stubbing_private_method.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b6c1b9df733616a5e81521b65d0ebb8c45dc8e GIT binary patch literal 20324 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 literal 0 HcmV?d00001 diff --git a/docs/stubbing.md b/docs/stubbing.md index 1c66138..b64156c 100644 --- a/docs/stubbing.md +++ b/docs/stubbing.md @@ -6,6 +6,7 @@ * [Stubbing calls and method return type mismatch](#stubbing-calls-and-method-return-type-mismatch) * [Convert arguments of `*Throw()` stubbing methods](#convert-arguments-of-throw-stubbing-methods) * [Convert between various stubbing approaches](#convert-between-various-stubbing-approaches) +* [Cannot stub certain methods](#cannot-stub-certain-methods) ## Invalid checked exception is passed into *Throw() methods @@ -266,3 +267,15 @@ Selections are between [\[ and ]]. BDDMockito.given(mock.doSomething()).willReturn(30); BDDMockito.given(mock.doSomethingElse()).willThrow(IllegalArgumentException.class); ``` + +## Cannot stub certain methods + +![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-1.3.0-blue) [![](https://img.shields.io/badge/implementation-CannotStubMethodInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/CannotStubMethodInspection.java) + +Mockito, based on [Reporter.missingMethodInvocation()](https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/exceptions/Reporter.java#L118), +cannot mock private, native, `equals()` and `hashCode()` methods. + +This inspection reports stubbing method calls on such methods. It supports all `Mockito` and `BDDMockito`-based stubbing, +but not `MockedStatic`. + +![stubbing a private method](assets/stubbing_private_method.png) diff --git a/src/main/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspection.java b/src/main/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspection.java new file mode 100644 index 0000000..82d714d --- /dev/null +++ b/src/main/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspection.java @@ -0,0 +1,65 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.stubbing; + +import static com.picimako.mockitools.resources.MockitoolsBundle.message; +import static com.picimako.mockitools.util.PsiMethodUtil.getFirstArgument; +import static com.picimako.mockitools.util.PsiMethodUtil.getSubsequentMethodCall; + +import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethodCallExpression; +import com.intellij.psi.PsiModifier; +import com.picimako.mockitools.StubbingApproach; +import com.picimako.mockitools.inspection.MockitoolsBaseInspection; +import com.picimako.mockitools.util.PsiMethodUtil; +import com.siyeh.ig.psiutils.MethodUtils; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +/** + * Reports stubbing of private, native, {@code equals()} and {@code hashCode()} methods. + * + * @see Reporter.missingMethodInvocation() + * @see Add native method to exception message + * @since 1.3.0 + */ +final class CannotStubMethodInspection extends MockitoolsBaseInspection { + + @Override + protected void checkMethodCallExpression(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { + //Validates the first argument of the method call to the stubbed method: + // - Mockito.when() + // - BDDMockito.given() + if (StubbingApproach.MOCKITO_WHEN.isStubbedBy(expression) || StubbingApproach.BDDMOCKITO_GIVEN.isStubbedBy(expression)) { + if (getFirstArgument(expression) instanceof PsiMethodCallExpression callToStubbedMethod) { + checkCallToStubbedMethod(holder, callToStubbedMethod, () -> callToStubbedMethod); + } + } + //Validates the method call to the stubbed method after the current stubber method: + // - Mockito.do*().when().() + // - BDDMockito.will*().given().() + else if (StubbingApproach.MOCKITO_DO_X.isStubbedBy(expression) || StubbingApproach.BDDMOCKITO_WILL_X.isStubbedBy(expression)) { + var callToStubbedMethod = getSubsequentMethodCall(expression); + if (callToStubbedMethod != null) + checkCallToStubbedMethod(holder, callToStubbedMethod, () -> PsiMethodUtil.getReferenceNameElement(callToStubbedMethod)); + } + } + + @SuppressWarnings("DialogTitleCapitalization") + private static void checkCallToStubbedMethod(@NotNull ProblemsHolder holder, PsiMethodCallExpression callToStubbedMethod, Supplier elementToRegister) { + var stubbedMethod = callToStubbedMethod.resolveMethod(); + if (stubbedMethod != null) { + //'hashCode()' is checked before native/private, so that, because hashCode() is native, + // the inspection message will say hashCode() instead of native method. + if (MethodUtils.isHashCode(stubbedMethod) || MethodUtils.isEquals(stubbedMethod)) { + holder.registerProblem(elementToRegister.get(), message("inspection.equals.and.hashcode.cant.be.stubbed")); + } + //'final' is not checked because there are ways to stub final methods + else if (stubbedMethod.hasModifierProperty(PsiModifier.PRIVATE) || stubbedMethod.hasModifierProperty(PsiModifier.NATIVE)) { + holder.registerProblem(elementToRegister.get(), message("inspection.private.and.native.methods.cant.be.stubbed")); + } + } + } +} diff --git a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java index 8dbdcb1..b9b126c 100644 --- a/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java +++ b/src/main/java/com/picimako/mockitools/util/PsiMethodUtil.java @@ -99,7 +99,7 @@ public static boolean hasSubsequentMethodCall(@NotNull PsiMethodCallExpression m * @return the next method call, or null if the starting call is null, or if it has no subsequent call * @since 0.3.0 */ - @Nullable + @Nullable("When either the method argument is null, or it has no subsequent call.") public static PsiMethodCallExpression getSubsequentMethodCall(@Nullable PsiMethodCallExpression methodCall) { if (methodCall == null) return null; diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index ca6ce31..7e5b127 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -77,6 +77,11 @@ id="mockitools.simplifyConsecutiveThrowStubbingCalls" language="JAVA" displayName="Consecutive *Throw() stubbing calls can be simplified" groupPath="Java" groupName="Mockito" enabledByDefault="true" level="WARNING"/> + + + +Reports stubbing of private, native, equals() and hashCode() methods. + + \ No newline at end of file diff --git a/src/main/resources/messages/MockitoolsBundle.properties b/src/main/resources/messages/MockitoolsBundle.properties index e992e38..711058a 100644 --- a/src/main/resources/messages/MockitoolsBundle.properties +++ b/src/main/resources/messages/MockitoolsBundle.properties @@ -46,6 +46,9 @@ inspection.mock.type.spied.instance.type.mismatch=The mocked type doesn't match inspection.mock.creation.with.settings.can.be.simplified=Mock creation can be simplified with calling {0}. quick.fix.replace.mock.creation.with.simpler.variant=Simplify mock creation +inspection.private.and.native.methods.cant.be.stubbed=private/native methods cannot be stubbed by Mockito. +inspection.equals.and.hashcode.cant.be.stubbed=equals()/hashCode() cannot be stubbed by Mockito. + # Framework integration inspection.class.extends.not.extensible=This class extends a class annotated as @NotExtensible. inspection.interface.extends.not.extensible=This interface extends another interface annotated as @NotExtensible. diff --git a/src/test/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspectionTest.java b/src/test/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspectionTest.java new file mode 100644 index 0000000..4a5bfa1 --- /dev/null +++ b/src/test/java/com/picimako/mockitools/inspection/stubbing/CannotStubMethodInspectionTest.java @@ -0,0 +1,23 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.stubbing; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.picimako.mockitools.inspection.MockitoolsInspectionTestBase; +import org.junit.jupiter.api.Test; + +/** + * Integration test for {@link CannotStubMethodInspection}. + */ +final class CannotStubMethodInspectionTest extends MockitoolsInspectionTestBase { + + @Override + protected InspectionProfileEntry getInspection() { + return new CannotStubMethodInspection(); + } + + @Test + void testNonStubbableMethodsTest() { + doJavaTest(); + } +} diff --git a/src/test/testData/inspection/NonStubbableMethodsTest.java b/src/test/testData/inspection/NonStubbableMethodsTest.java new file mode 100644 index 0000000..53db8b1 --- /dev/null +++ b/src/test/testData/inspection/NonStubbableMethodsTest.java @@ -0,0 +1,78 @@ +import org.mockito.Mockito; +import org.mockito.BDDMockito; + +class NonStubbableMethodsTest { + + void aTestMethod() { + MockObject mock = Mockito.mock(); + SubMockObject subMock = Mockito.mock(); + SubMockObject m = Mockito.mock(); + + //final method + Mockito.when(mock.aFinalMethod()).thenReturn(10); + Mockito.doReturn(10).when(mock).aFinalMethod(); + BDDMockito.given(mock.aFinalMethod()).willReturn(10); + BDDMockito.willReturn(10).given(mock).aFinalMethod(); + + //private method + Mockito.when(mock.aPrivateMethod()).thenReturn(10); + Mockito.doReturn(10).when(mock).aPrivateMethod(); + BDDMockito.given(mock.aPrivateMethod()).willReturn(10); + BDDMockito.willReturn(10).given(mock).aPrivateMethod(); + + //native method + Mockito.when(mock.aNativeMethod()).thenReturn(10); + Mockito.doReturn(10).when(mock).aNativeMethod(); + BDDMockito.given(mock.aNativeMethod()).willReturn(10); + BDDMockito.willReturn(10).given(mock).aNativeMethod(); + + //equals() + Mockito.when(mock.equals(m)).thenReturn(false); + Mockito.doReturn(false).when(mock).equals(m); + BDDMockito.given(mock.equals(m)).willReturn(false); + BDDMockito.willReturn(false).given(mock).equals(m); + + //Overridden equals() + Mockito.when(subMock.equals(m)).thenReturn(false); + Mockito.doReturn(false).when(subMock).equals(m); + BDDMockito.given(subMock.equals(m)).willReturn(false); + BDDMockito.willReturn(false).given(subMock).equals(m); + + //native hashCode() + Mockito.when(mock.hashCode()).thenReturn(10); + Mockito.doReturn(10).when(mock).hashCode(); + BDDMockito.given(mock.hashCode()).willReturn(10); + BDDMockito.willReturn(10).given(mock).hashCode(); + + //Overridden hashCode() + Mockito.when(subMock.hashCode()).thenReturn(10); + Mockito.doReturn(10).when(subMock).hashCode(); + BDDMockito.given(subMock.hashCode()).willReturn(10); + BDDMockito.willReturn(10).given(subMock).hashCode(); + } + + public static class SubMockObject { + @Override + public int hashCode() { + return 100; + } + + @Override + public boolean equals(Object obj) { + return true; + } + } + + public static class MockObject { + + final int aFinalMethod() { + return 1; + } + + private int aPrivateMethod() { + return 1; + } + + native int aNativeMethod(); + } +} From 718e9616062466e4af05ed882a68468062173e0a Mon Sep 17 00:00:00 2001 From: Tamas Balog Date: Mon, 9 Sep 2024 17:49:14 +0200 Subject: [PATCH 17/24] 63: Add inspection to report 'Argument.captor()' when having passed in an argument --- CHANGELOG.md | 2 + docs/argument_matching_capture.md | 14 ++++++ .../generic_inferred_captor_creation.png | Bin 0 -> 20966 bytes ...inferred_mock_creation_with_arguments.png} | Bin docs/mock_creation.md | 4 +- .../mockitools/MockitoMockMatchers.java | 16 ++++--- ...nericInferredCaptorCreationInspection.java | 43 ++++++++++++++++++ ...InferredMockAndSpyCreationInspection.java} | 29 ++++++------ src/main/resources/META-INF/plugin.xml | 11 +++-- .../GenericInferredCaptorCreation.html | 14 ++++++ ...=> GenericInferredMockAndSpyCreation.html} | 0 .../messages/MockitoolsBundle.properties | 4 +- ...cInferredCaptorCreationInspectionTest.java | 23 ++++++++++ ...rredMockAndSpyCreationInspectionTest.java} | 8 ++-- .../GenericInferredCaptorCreation.java | 13 ++++++ ....java => GenericInferredMockCreation.java} | 2 +- 16 files changed, 153 insertions(+), 30 deletions(-) create mode 100644 docs/assets/generic_inferred_captor_creation.png rename docs/assets/{reified_mock_creation_with_arguments.png => generic_inferred_mock_creation_with_arguments.png} (100%) create mode 100644 src/main/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspection.java rename src/main/java/com/picimako/mockitools/inspection/mocking/{ParameterlessMockAndSpyCreationInspection.java => GenericInferredMockAndSpyCreationInspection.java} (60%) create mode 100644 src/main/resources/inspectionDescriptions/GenericInferredCaptorCreation.html rename src/main/resources/inspectionDescriptions/{ParameterlessMockAndSpyCreation.html => GenericInferredMockAndSpyCreation.html} (100%) create mode 100644 src/test/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspectionTest.java rename src/test/java/com/picimako/mockitools/inspection/mocking/{ParameterlessMockAndSpyCreationInspectionTest.java => GenericInferredMockAndSpyCreationInspectionTest.java} (62%) create mode 100644 src/test/testData/inspection/GenericInferredCaptorCreation.java rename src/test/testData/inspection/{ParameterlessMockCreation.java => GenericInferredMockCreation.java} (98%) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1db644..789ab17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ either with `Mockito.mock()` or `Mockito.spy()`. - [66](https://github.com/picimako/mockitools/issues/66): Added an inspection that can report the stubbing of private and native methods, as well as `equals()` and `hashCode()`. +- [63](https://github.com/picimako/mockitools/issues/63): Added an inspection to report `ArgumentCaptor.captor()` calls when they are passed in at least one argument. +This method is not designed to accept any argument. ### Changed - Applied a couple of code simplifications for easier maintenance. diff --git a/docs/argument_matching_capture.md b/docs/argument_matching_capture.md index 66bf302..a801500 100644 --- a/docs/argument_matching_capture.md +++ b/docs/argument_matching_capture.md @@ -4,6 +4,7 @@ * [Inconsistent argument matcher usage](#inconsistent-argument-matcher-usage) * [Explicit initialization of @Captor field is not required](#explicit-initialization-of-captor-field-is-not-required) * [@Captor field must be of the type ArgumentCaptor](#captor-field-must-be-of-the-type-argumentcaptor) +* [Generic inferred ArgumentCaptor creation](#generic-inferred-argumentcaptor-creation) ## Inconsistent argument matcher usage @@ -98,3 +99,16 @@ List> captor; //before @Captor ArgumentCaptor>> captor; //after ``` + +---- + +## Generic inferred ArgumentCaptor creation + +![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-1.3.0-blue) [![](https://img.shields.io/badge/implementation-GenericInferredCaptorCreationInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspection.java) + +[Mockito 5.7.0](https://github.com/mockito/mockito/pull/3144) introduced the `ArgumentCaptor.captor()` method +for captor creation, so that the captor type is not determined by the class passed in at creation, instead by the type of the variable/field it is assigned to. + +This method throws an exception if objects are passed in, thus this inspection reports calls to this method when it finds at least one such argument. + +![generic inferred captor creation](assets/generic_inferred_captor_creation.png) diff --git a/docs/assets/generic_inferred_captor_creation.png b/docs/assets/generic_inferred_captor_creation.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb759ad0cfe7721a37edecec6d588c750e9ad3c GIT binary patch literal 20966 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 literal 0 HcmV?d00001 diff --git a/docs/assets/reified_mock_creation_with_arguments.png b/docs/assets/generic_inferred_mock_creation_with_arguments.png similarity index 100% rename from docs/assets/reified_mock_creation_with_arguments.png rename to docs/assets/generic_inferred_mock_creation_with_arguments.png diff --git a/docs/mock_creation.md b/docs/mock_creation.md index 084911e..bec9e94 100644 --- a/docs/mock_creation.md +++ b/docs/mock_creation.md @@ -94,7 +94,7 @@ and validates test code regardless of the Mockito version. ## Mock/Spy creation without specifying class -![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-0.11.0-blue) [![](https://img.shields.io/badge/implementation-ClasslessMockAndSpyCreationInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/ClasslessMockAndSpyCreationInspection.java) +![](https://img.shields.io/badge/inspection-orange) ![](https://img.shields.io/badge/since-0.11.0-blue) [![](https://img.shields.io/badge/implementation-GenericInferredMockAndSpyCreationInspection-blue)](../src/main/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspection.java) [Mockito 4.9.0](https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#mock_without_class) introduced an enhancement to `Mockito.mock()` and `Mockito.spy()` based mock/spy creation, so that the mock type is not determined by the class passed in, instead by the type of the variable/field it is assigned to. @@ -102,7 +102,7 @@ based mock/spy creation, so that the mock type is not determined by the class pa These variants of `mock()` and `spy()` throw an exception if objects other than configuration are passed in, thus this inspection reports these calls when it finds at least one such argument. -![reified mock creation with arguments passed in](assets/reified_mock_creation_with_arguments.png) +![generic inferred mock creation with arguments passed in](assets/generic_inferred_mock_creation_with_arguments.png) ---- diff --git a/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java b/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java index 7b9e9a8..e2781f5 100644 --- a/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java +++ b/src/main/java/com/picimako/mockitools/MockitoMockMatchers.java @@ -32,12 +32,16 @@ public final class MockitoMockMatchers { //Since Mockito 4.9.0 - public static final CallMatcher MOCK_REIFIED = MOCKITO_MOCK.parameterTypes("T..."); - public static final CallMatcher SPY_REIFIED = staticCall(ORG_MOCKITO_MOCKITO, SPY).parameterTypes("T..."); - private static final CallMatcher MOCK_WITH_NAME_REIFIED = MOCKITO_MOCK.parameterTypes(CommonClassNames.JAVA_LANG_STRING, "T..."); - private static final CallMatcher MOCK_WITH_ANSWER_REIFIED = MOCKITO_MOCK.parameterTypes(ORG_MOCKITO_ANSWER, "T..."); - private static final CallMatcher MOCK_WITH_SETTINGS_REIFIED = MOCKITO_MOCK.parameterTypes(ORG_MOCKITO_MOCK_SETTINGS, "T..."); - public static final CallMatcher MOCKS_REIFIED_WITH_CONFIG = anyOf(MOCK_WITH_NAME_REIFIED, MOCK_WITH_ANSWER_REIFIED, MOCK_WITH_SETTINGS_REIFIED); + public static final CallMatcher MOCK_GENERIC_INFERRED = MOCKITO_MOCK.parameterTypes("T..."); + public static final CallMatcher SPY_GENERIC_INFERRED = staticCall(ORG_MOCKITO_MOCKITO, SPY).parameterTypes("T..."); + private static final CallMatcher MOCK_WITH_NAME_GENERIC_INFERRED = MOCKITO_MOCK.parameterTypes(CommonClassNames.JAVA_LANG_STRING, "T..."); + private static final CallMatcher MOCK_WITH_ANSWER_GENERIC_INFERRED = MOCKITO_MOCK.parameterTypes(ORG_MOCKITO_ANSWER, "T..."); + private static final CallMatcher MOCK_WITH_SETTINGS_GENERIC_INFERRED = MOCKITO_MOCK.parameterTypes(ORG_MOCKITO_MOCK_SETTINGS, "T..."); + public static final CallMatcher MOCKS_GENERIC_INFERRED_WITH_CONFIG = anyOf(MOCK_WITH_NAME_GENERIC_INFERRED, MOCK_WITH_ANSWER_GENERIC_INFERRED, MOCK_WITH_SETTINGS_GENERIC_INFERRED); + + //Since Mockito 5.7.0 + + public static final CallMatcher CAPTOR_GENERIC_INFERRED = CallMatcher.staticCall(MockitoQualifiedNames.ORG_MOCKITO_ARGUMENT_CAPTOR, "captor").parameterTypes("U..."); //Other diff --git a/src/main/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspection.java b/src/main/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspection.java new file mode 100644 index 0000000..9362fe4 --- /dev/null +++ b/src/main/java/com/picimako/mockitools/inspection/captor/GenericInferredCaptorCreationInspection.java @@ -0,0 +1,43 @@ +//Copyright 2024 Tamás Balog. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. + +package com.picimako.mockitools.inspection.captor; + +import static com.intellij.util.ArrayUtil.getLastElement; +import static com.picimako.mockitools.MockitoMockMatchers.CAPTOR_GENERIC_INFERRED; +import static com.picimako.mockitools.util.PsiMethodUtil.hasArgument; +import static com.picimako.mockitools.util.Ranges.endOffsetOf; + +import com.intellij.codeInspection.ProblemsHolder; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiMethodCallExpression; +import com.picimako.mockitools.inspection.MockitoolsBaseInspection; +import com.picimako.mockitools.resources.MockitoolsBundle; +import org.jetbrains.annotations.NotNull; + +/** + * This inspection reports arguments passed into {@code ArgumentCaptor.captor()} which is designed to determine the mock type based on + * the variable's type the call is assigned to, and not by the type passed into them. + * + * @see com.picimako.mockitools.inspection.mocking.GenericInferredMockAndSpyCreationInspection + * @since 1.3.0 + */ +final class GenericInferredCaptorCreationInspection extends MockitoolsBaseInspection { + + @Override + protected void checkMethodCallExpression(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { + if (CAPTOR_GENERIC_INFERRED.matches(expression) && hasArgument(expression)) registerProblem(expression, holder); + } + + /** + * Calculates the text range for the arguments passed into the {@code reified} parameter of {@code ArgumentCaptor.captor}. + */ + private void registerProblem(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { + var argumentList = expression.getArgumentList(); + var arguments = argumentList.getExpressions(); + var textRange = TextRange.create( + arguments[0].getTextOffset() - argumentList.getTextOffset(), + endOffsetOf(getLastElement(arguments)) - argumentList.getTextOffset()); + + holder.registerProblem(argumentList, textRange, MockitoolsBundle.message("inspection.argument.in.generic.inferred.captor.creation")); + } +} diff --git a/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java b/src/main/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspection.java similarity index 60% rename from src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java rename to src/main/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspection.java index 7517a3d..35df4be 100644 --- a/src/main/java/com/picimako/mockitools/inspection/mocking/ParameterlessMockAndSpyCreationInspection.java +++ b/src/main/java/com/picimako/mockitools/inspection/mocking/GenericInferredMockAndSpyCreationInspection.java @@ -2,6 +2,13 @@ package com.picimako.mockitools.inspection.mocking; +import static com.intellij.util.ArrayUtil.getLastElement; +import static com.picimako.mockitools.MockitoMockMatchers.MOCKS_GENERIC_INFERRED_WITH_CONFIG; +import static com.picimako.mockitools.MockitoMockMatchers.MOCK_GENERIC_INFERRED; +import static com.picimako.mockitools.MockitoMockMatchers.SPY_GENERIC_INFERRED; +import static com.picimako.mockitools.util.PsiMethodUtil.hasArgument; +import static com.picimako.mockitools.util.Ranges.endOffsetOf; + import com.intellij.codeInspection.ProblemsHolder; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiMethodCallExpression; @@ -10,40 +17,36 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Range; -import static com.intellij.util.ArrayUtil.getLastElement; -import static com.picimako.mockitools.MockitoMockMatchers.*; -import static com.picimako.mockitools.util.PsiMethodUtil.hasArgument; -import static com.picimako.mockitools.util.Ranges.endOffsetOf; - /** * This inspection reports arguments passed into {@code Mockito.mock()} and {@code Mockito.spy()} which are designed to determine the mock type based on * the variable's type they are assigned to, and not by the type passed into them. * * @see Mocking/Spying without specifying class + * @see com.picimako.mockitools.inspection.captor.GenericInferredCaptorCreationInspection * @since 0.11.0 */ -final class ParameterlessMockAndSpyCreationInspection extends MockitoolsBaseInspection { +final class GenericInferredMockAndSpyCreationInspection extends MockitoolsBaseInspection { @Override protected void checkMethodCallExpression(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder) { - if (MOCK_REIFIED.matches(expression) || SPY_REIFIED.matches(expression)) { + if (MOCK_GENERIC_INFERRED.matches(expression) || SPY_GENERIC_INFERRED.matches(expression)) { if (hasArgument(expression)) registerProblem(expression, holder, 0); - } else if (MOCKS_REIFIED_WITH_CONFIG.matches(expression) && expression.getArgumentList().getExpressionCount() > 1) { + } else if (MOCKS_GENERIC_INFERRED_WITH_CONFIG.matches(expression) && expression.getArgumentList().getExpressionCount() > 1) { registerProblem(expression, holder, 1); } } /** - * Calculate the text range for the arguments passed into the 'reified' parameter of 'Mockito.mock()/spy()'. - * Depending on the signature of 'Mockito.mock()/spy()', it starts from the 0th or 1st argument, and ends at the last argument's end offset. + * Calculates the text range for the arguments passed into the {@code reified} parameter of {@code Mockito.mock()/spy()}. + * Depending on the signature of {@code Mockito.mock()/spy()}, it starts from the 0th or 1st argument, and ends at the last argument's end offset. */ private void registerProblem(PsiMethodCallExpression expression, @NotNull ProblemsHolder holder, @Range(from = 0, to = 1) int startArgumentIndex) { var argumentList = expression.getArgumentList(); var arguments = argumentList.getExpressions(); var textRange = TextRange.create( - arguments[startArgumentIndex].getTextOffset() - argumentList.getTextOffset(), - endOffsetOf(getLastElement(arguments)) - argumentList.getTextOffset()); + arguments[startArgumentIndex].getTextOffset() - argumentList.getTextOffset(), + endOffsetOf(getLastElement(arguments)) - argumentList.getTextOffset()); - holder.registerProblem(argumentList, textRange, MockitoolsBundle.message("inspection.argument.in.classless.mock.spy.creation")); + holder.registerProblem(argumentList, textRange, MockitoolsBundle.message("inspection.argument.in.generic.inferred.mock.spy.creation")); } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 7e5b127..9ccf736 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -118,9 +118,14 @@ displayName="Spying on mock objects" groupPath="Java" groupName="Mockito" enabledByDefault="true" level="ERROR"/> + + + +This inspection reports arguments passed into ArgumentCaptor.captor() which is designed to determine the mock type based on +the variable's type the call is assigned to, and not by the type passed into them. +