Skip to content

Commit 9c8d0e0

Browse files
authored
Test report for multiple classes #551 (#553)
* Test report for multiple classes (#551) Merge test reports into single one. Refactor conflict triggers (force mocking, test framework conflict...) for GenerateTestsModel.
1 parent a8885c2 commit 9c8d0e0

File tree

9 files changed

+160
-97
lines changed

9 files changed

+160
-97
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/UtContext.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,4 @@ class UtContext(val classLoader: ClassLoader) : ThreadContextElement<UtContext?>
7070
}
7171
}
7272

73-
inline fun <T> withUtContext(context: UtContext, block: () -> T): T = setUtContext(context).use { block() }
73+
inline fun <T> withUtContext(context: UtContext, block: () -> T): T = setUtContext(context).use { block() }

utbot-framework/src/main/kotlin/org/utbot/engine/util/mockListeners/ForceMockListener.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ package org.utbot.engine.util.mockListeners
22
import org.utbot.engine.EngineController
33
import org.utbot.engine.MockStrategy
44
import org.utbot.engine.UtMockInfo
5+
import org.utbot.framework.util.Conflict
6+
import org.utbot.framework.util.ConflictTriggers
57

68
/**
79
* Listener for mocker events in [org.utbot.engine.UtBotSymbolicEngine].
810
* If forced mock happened, cancels the engine job.
911
*
1012
* Supposed to be created only if Mockito is not installed.
1113
*/
12-
class ForceMockListener: MockListener {
13-
var forceMockHappened = false
14-
private set
15-
14+
class ForceMockListener(triggers: ConflictTriggers): MockListener(triggers) {
1615
override fun onShouldMock(controller: EngineController, strategy: MockStrategy, mockInfo: UtMockInfo) {
1716
// If force mocking happened -- сancel engine job
1817
controller.job?.cancel(ForceMockCancellationException())
19-
forceMockHappened = true
18+
19+
triggers[Conflict.ForceMockHappened] = true
2020
}
2121
}

utbot-framework/src/main/kotlin/org/utbot/engine/util/mockListeners/ForceStaticMockListener.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,24 @@ import org.utbot.engine.UtMockInfo
66
import org.utbot.engine.UtNewInstanceMockInfo
77
import org.utbot.engine.UtStaticMethodMockInfo
88
import org.utbot.engine.UtStaticObjectMockInfo
9+
import org.utbot.framework.util.Conflict
10+
import org.utbot.framework.util.ConflictTriggers
911

1012
/**
1113
* Listener for mocker events in [org.utbot.engine.UtBotSymbolicEngine].
1214
* If forced static mock happened, cancels the engine job.
1315
*
1416
* Supposed to be created only if Mockito inline is not installed.
1517
*/
16-
class ForceStaticMockListener: MockListener {
17-
var forceStaticMockHappened = false
18-
private set
19-
18+
class ForceStaticMockListener(triggers: ConflictTriggers): MockListener(triggers) {
2019
override fun onShouldMock(controller: EngineController, strategy: MockStrategy, mockInfo: UtMockInfo) {
2120
if (mockInfo is UtNewInstanceMockInfo
2221
|| mockInfo is UtStaticMethodMockInfo
2322
|| mockInfo is UtStaticObjectMockInfo) {
2423
// If force static mocking happened -- сancel engine job
2524
controller.job?.cancel(ForceStaticMockCancellationException())
26-
forceStaticMockHappened = true
25+
26+
triggers[Conflict.ForceStaticMockHappened] = true
2727
}
2828
}
2929
}

utbot-framework/src/main/kotlin/org/utbot/engine/util/mockListeners/MockListener.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ package org.utbot.engine.util.mockListeners
33
import org.utbot.engine.EngineController
44
import org.utbot.engine.MockStrategy
55
import org.utbot.engine.UtMockInfo
6+
import org.utbot.framework.util.ConflictTriggers
67

78
/**
89
* Listener that can be attached using [MockListenerController] to mocker in [org.utbot.engine.UtBotSymbolicEngine].
910
*/
10-
interface MockListener {
11-
fun onShouldMock(controller: EngineController, strategy: MockStrategy, mockInfo: UtMockInfo)
11+
abstract class MockListener(
12+
val triggers: ConflictTriggers
13+
) {
14+
abstract fun onShouldMock(controller: EngineController, strategy: MockStrategy, mockInfo: UtMockInfo)
1215
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import java.io.File
1111
import java.net.URLClassLoader
1212
import java.nio.file.Files
1313
import java.nio.file.Paths
14+
import java.util.*
1415
import java.util.concurrent.TimeUnit
1516

1617
fun List<UtInstrumentation>.singleStaticMethod(methodName: String) =
@@ -139,4 +140,17 @@ fun compileClassFile(className: String, snippet: Snippet): File {
139140
require(javacFinished) { "Javac can't complete in $timeout sec" }
140141

141142
return File(workdir.toFile(), "${sourceCodeFile.nameWithoutExtension}.class")
143+
}
144+
145+
enum class Conflict {
146+
ForceMockHappened,
147+
ForceStaticMockHappened,
148+
TestFrameworkConflict,
149+
}
150+
151+
class ConflictTriggers(
152+
private val triggers: MutableMap<Conflict, Boolean> = EnumMap<Conflict, Boolean>(Conflict::class.java).withDefault { false }
153+
): MutableMap<Conflict, Boolean> by triggers {
154+
val triggered: Boolean
155+
get() = triggers.values.any { it }
142156
}

0 commit comments

Comments
 (0)