diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt index 7c45335439..b424be40ca 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt @@ -212,8 +212,6 @@ object UtSettings { /** * Activate or deactivate substituting static fields values set in static initializer * with symbolic variable to try to set them another value than in initializer. - * - * We should not try to substitute in parametrized tests, for example */ var substituteStaticsWithSymbolicVariable by getBooleanProperty(true) diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/UtSettingsUtil.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/UtSettingsUtil.kt index c6e4f928b7..2c3117d81d 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/UtSettingsUtil.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/UtSettingsUtil.kt @@ -6,7 +6,7 @@ import org.utbot.framework.UtSettings * Runs [block] with [UtSettings.substituteStaticsWithSymbolicVariable] value * modified in accordance with given [condition]. */ -inline fun withSubstitutionCondition(condition: Boolean, block: () -> T) { +inline fun withStaticsSubstitutionRequired(condition: Boolean, block: () -> T) { val standardSubstitutionSetting = UtSettings.substituteStaticsWithSymbolicVariable UtSettings.substituteStaticsWithSymbolicVariable = standardSubstitutionSetting && condition try { diff --git a/utbot-framework/src/main/kotlin/org/utbot/engine/Mocks.kt b/utbot-framework/src/main/kotlin/org/utbot/engine/Mocks.kt index 52e3d98037..7fd0f2252e 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/engine/Mocks.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/engine/Mocks.kt @@ -168,7 +168,13 @@ class Mocker( fun shouldMock( type: RefType, mockInfo: UtMockInfo, - ): Boolean = checkIfShouldMock(type, mockInfo).also { if (it) mockListenerController?.onShouldMock(strategy, mockInfo) } + ): Boolean = checkIfShouldMock(type, mockInfo).also { + //[utbotSuperClasses] are not involved in code generation, so + //we shouldn't listen events that such mocks happened + if (it && type.id !in utbotSuperClasses.map { it.id }) { + mockListenerController?.onShouldMock(strategy, mockInfo) + } + } private fun checkIfShouldMock( type: RefType, diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt index ddff6e931a..f63e58217d 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt @@ -19,7 +19,6 @@ import com.intellij.openapi.ui.Messages import com.intellij.openapi.util.Computable import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiClass -import com.intellij.psi.PsiModifier import com.intellij.psi.SyntheticElement import com.intellij.refactoring.util.classMembers.MemberInfo import com.intellij.testIntegration.TestIntegrationUtils @@ -34,7 +33,7 @@ import org.utbot.framework.plugin.api.TestCaseGenerator import org.utbot.framework.plugin.api.UtMethod import org.utbot.framework.plugin.api.UtMethodTestSet import org.utbot.framework.plugin.api.util.UtContext -import org.utbot.framework.plugin.api.util.withSubstitutionCondition +import org.utbot.framework.plugin.api.util.withStaticsSubstitutionRequired import org.utbot.framework.plugin.api.util.withUtContext import org.utbot.intellij.plugin.generator.CodeGenerationController.generateTests import org.utbot.intellij.plugin.models.GenerateTestsModel @@ -171,9 +170,6 @@ object UtTestsDialogProcessor { indicator.fraction = indicator.fraction.coerceAtLeast(0.9 * processedClasses / totalClasses) } - //we should not substitute statics for parametrized tests - val shouldSubstituteStatics = - model.parametrizedTestSource != ParametrizedTestSource.PARAMETRIZE // set timeout for concrete execution and for generated tests UtSettings.concreteExecutionTimeoutInChildProcess = model.hangingTestsTimeout.timeoutMs @@ -181,7 +177,7 @@ object UtTestsDialogProcessor { .nonBlocking { project.basePath?.let { Paths.get(it) } ?: Paths.get(srcClass.containingFile.virtualFile.parent.path) } .executeSynchronously() - withSubstitutionCondition(shouldSubstituteStatics) { + withStaticsSubstitutionRequired(true) { val mockFrameworkInstalled = model.mockFramework?.isInstalled ?: true if (!mockFrameworkInstalled) {