Skip to content

Enlarge the set of cases when we try to create parametrized tests #678

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import org.utbot.framework.UtSettings
* Runs [block] with [UtSettings.substituteStaticsWithSymbolicVariable] value
* modified in accordance with given [condition].
*/
inline fun <T> withSubstitutionCondition(condition: Boolean, block: () -> T) {
inline fun <T> withStaticsSubstitutionRequired(condition: Boolean, block: () -> T) {
val standardSubstitutionSetting = UtSettings.substituteStaticsWithSymbolicVariable
UtSettings.substituteStaticsWithSymbolicVariable = standardSubstitutionSetting && condition
try {
Expand Down
8 changes: 7 additions & 1 deletion utbot-framework/src/main/kotlin/org/utbot/engine/Mocks.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -171,17 +170,14 @@ 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

val searchDirectory = ReadAction
.nonBlocking<Path> { 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) {
Expand Down