Skip to content

Commit fc590f7

Browse files
author
Ivan Volkov
committed
Added generateForSyntheticMethods option to UtSettings
1 parent 051b9c5 commit fc590f7

File tree

6 files changed

+18
-7
lines changed

6 files changed

+18
-7
lines changed

utbot-cli/src/main/kotlin/org/utbot/cli/GenerateTestsCommand.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import java.nio.file.Paths
2121
import java.time.temporal.ChronoUnit
2222
import kotlin.reflect.KClass
2323
import mu.KotlinLogging
24+
import org.utbot.framework.UtSettings
2425
import org.utbot.framework.util.isSynthetic
2526

2627

@@ -92,7 +93,9 @@ class GenerateTestsCommand :
9293
logger.debug { "Classpath to be used: ${newline()} $classPath ${newline()}" }
9394

9495
val classUnderTest: KClass<*> = loadClassBySpecifiedFqn(targetClassFqn)
95-
val targetMethods = classUnderTest.targetMethods().filterNot { it.isSynthetic() }
96+
val targetMethods = classUnderTest.targetMethods().filter {
97+
UtSettings.generateForSyntheticMethods || isSynthetic(it)
98+
}
9699
initializeEngine(workingDirectory)
97100

98101
if (targetMethods.isEmpty()) {

utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,11 @@ object UtSettings {
375375
*/
376376
var singleSelector by getBooleanProperty(true)
377377

378+
/**
379+
* Flag that indicates whether tests for synthetic methods (values, valueOf in enums) should be generated, or not
380+
*/
381+
var generateForSyntheticMethods by getBooleanProperty(false)
382+
378383
override fun toString(): String =
379384
properties
380385
.entries

utbot-framework/src/main/kotlin/org/utbot/framework/util/SyntethicMethodsChecker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import org.utbot.engine.displayName
44
import org.utbot.framework.SyntheticMethods
55
import org.utbot.framework.plugin.api.UtMethod
66

7-
fun UtMethod<*>.isSynthetic(): Boolean =
8-
this.clazz.java.isEnum && this.displayName.substringBefore('(') in SyntheticMethods.enumSyntheticMethods
7+
fun isSynthetic(method: UtMethod<*>): Boolean =
8+
method.clazz.java.isEnum && method.displayName.substringBefore('(') in SyntheticMethods.enumSyntheticMethods

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
347347
val items: List<MemberInfo>
348348
if (srcClasses.size == 1) {
349349
items = TestIntegrationUtils.extractClassMethods(srcClasses.single(), false)
350-
.filter { it.member !is SyntheticElement }
350+
.filter { UtSettings.generateForSyntheticMethods || it.member !is SyntheticElement }
351351
updateMethodsTable(items)
352352
} else {
353353
items = srcClasses.map { MemberInfo(it) }

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/UtTestsDialogProcessor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,9 @@ object UtTestsDialogProcessor {
129129
val methods = ReadAction.nonBlocking<List<UtMethod<*>>> {
130130
val clazz = classLoader.loadClass(srcClass.qualifiedName).kotlin
131131
val srcMethods = model.selectedMethods?.toList() ?:
132-
TestIntegrationUtils.extractClassMethods(srcClass, false)
133-
.filter { it.member !is SyntheticElement }
132+
TestIntegrationUtils.extractClassMethods(srcClass, false).filter {
133+
UtSettings.generateForSyntheticMethods || it.member !is SyntheticElement
134+
}
134135
findMethodsInClassMatchingSelected(clazz, srcMethods)
135136
}.executeSynchronously()
136137

utbot-junit-contest/src/main/kotlin/org/utbot/contest/Contest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,9 @@ private fun prepareClass(kotlinClass: KClass<*>, methodNameFilter: String?): Lis
472472
.filter { methodNameFilter?.equals(it.callable.name) ?: true }
473473
.filterNot {
474474
it.isConstructor && (it.clazz.isAbstract || it.clazz.java.isEnum)
475-
}.filterNot { it.isSynthetic() }
475+
}.filter {
476+
UtSettings.generateForSyntheticMethods || !isSynthetic(it)
477+
}
476478
.toList()
477479

478480
return if (kotlinClass.nestedClasses.isEmpty()) {

0 commit comments

Comments
 (0)