Skip to content

Commit de26a4b

Browse files
assertArrayEquals overload is not found, tests doesn't compile #135
1 parent 9a3acb6 commit de26a4b

File tree

4 files changed

+39
-10
lines changed

4 files changed

+39
-10
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/util/DependencyPatterns.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,10 @@ fun MockFramework.patterns(): Patterns {
3737
return Patterns(moduleLibraryPatterns, libraryPatterns)
3838
}
3939

40-
val JUNIT_4_JAR_PATTERN = Regex("junit-4(\\.[0-9]+){1,2}")
41-
val JUNIT_4_MVN_PATTERN = Regex("junit:junit:4(\\.[0-9]+){1,2}")
42-
val JUNIT_4_BASIC_PATTERN = Regex("JUnit4")
43-
val junit4Patterns = listOf(JUNIT_4_JAR_PATTERN, JUNIT_4_MVN_PATTERN, JUNIT_4_BASIC_PATTERN)
44-
45-
val JUNIT4_BASIC_MODULE_PATTERN = Regex("junit$")
46-
val junit4ModulePatterns = listOf(JUNIT4_BASIC_MODULE_PATTERN)
40+
val JUNIT_4_JAR_PATTERN = Regex("junit-4(\\.1[2-9])(\\.[0-9]+)?")
41+
val JUNIT_4_MVN_PATTERN = Regex("junit:junit:4(\\.1[2-9])(\\.[0-9]+)?")
42+
val junit4Patterns = listOf(JUNIT_4_JAR_PATTERN, JUNIT_4_MVN_PATTERN)
43+
val junit4ModulePatterns = listOf(JUNIT_4_JAR_PATTERN, JUNIT_4_MVN_PATTERN)
4744

4845
val JUNIT_5_JAR_PATTERN = Regex("junit-jupiter-5(\\.[0-9]+){1,2}")
4946
val JUNIT_5_MVN_PATTERN = Regex("org\\.junit\\.jupiter:junit-jupiter-api:5(\\.[0-9]+){1,2}")

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ import com.intellij.openapi.project.Project
55
import com.intellij.openapi.roots.DependencyScope
66
import com.intellij.openapi.roots.ExternalLibraryDescriptor
77
import com.intellij.openapi.roots.JavaProjectModelModificationService
8+
import com.intellij.openapi.roots.LibraryOrderEntry
9+
import com.intellij.openapi.roots.ModifiableRootModel
10+
import com.intellij.openapi.roots.ModuleRootModificationUtil
11+
import com.intellij.openapi.roots.ModuleSourceOrderEntry
812
import com.intellij.openapi.ui.Messages
913
import org.jetbrains.concurrency.Promise
14+
import org.jetbrains.concurrency.thenRun
1015
import org.utbot.framework.plugin.api.MockFramework
1116
import org.utbot.intellij.plugin.ui.utils.LibrarySearchScope
17+
import org.utbot.intellij.plugin.ui.utils.allLibraries
1218
import org.utbot.intellij.plugin.ui.utils.findFrameworkLibrary
1319
import org.utbot.intellij.plugin.ui.utils.parseVersion
1420

@@ -40,8 +46,28 @@ fun configureMockFramework(project: Project, module: Module) {
4046
* Otherwise latest release version will be installed.
4147
*/
4248
fun addDependency(project: Project, module: Module, libraryDescriptor: ExternalLibraryDescriptor): Promise<Void> {
43-
return JavaProjectModelModificationService
49+
val promise = JavaProjectModelModificationService
4450
.getInstance(project)
4551
//this method returns JetBrains internal Promise that is difficult to deal with, but it is our way
4652
.addDependency(module, libraryDescriptor, DependencyScope.TEST)
53+
promise.thenRun {
54+
module.allLibraries()
55+
.firstOrNull { library -> library.libraryName == libraryDescriptor.presentableName }?.let {
56+
ModuleRootModificationUtil.updateModel(module) { model -> placeEntryToCorrectPlace(model, it) }
57+
}
58+
}
59+
return promise
60+
}
61+
62+
fun placeEntryToCorrectPlace(model: ModifiableRootModel, addedEntry: LibraryOrderEntry) {
63+
val order = model.orderEntries
64+
val lastEntry = order.last()
65+
if (lastEntry is LibraryOrderEntry && lastEntry.library == addedEntry.library) {
66+
val insertionPoint = order.indexOfFirst { it is ModuleSourceOrderEntry } + 1
67+
if (insertionPoint > 0) {
68+
System.arraycopy(order, insertionPoint, order, insertionPoint + 1, order.size - 1 - insertionPoint)
69+
order[insertionPoint] = lastEntry
70+
model.rearrangeOrderEntries(order)
71+
}
72+
}
4773
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.intellij.openapi.roots.ExternalLibraryDescriptor
44

55
//TODO: think about using JUnitExternalLibraryDescriptor from intellij-community sources (difficult to install)
66
fun jUnit4LibraryDescriptor(versionInProject: String?) =
7-
ExternalLibraryDescriptor("junit", "junit", "4.0", null, versionInProject ?: "4.13.2")
7+
ExternalLibraryDescriptor("junit", "junit", "4.12", null, versionInProject ?: "4.13.2")
88

99
fun jUnit5LibraryDescriptor(versionInProject: String?) =
1010
ExternalLibraryDescriptor("org.junit.jupiter", "junit-jupiter", "5.8.1", null, versionInProject ?: "5.8.1")

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.intellij.openapi.project.Project
55
import com.intellij.openapi.roots.LibraryOrderEntry
66
import com.intellij.openapi.roots.ModuleRootManager
77
import com.intellij.openapi.roots.OrderEnumerator
8+
import com.intellij.openapi.roots.OrderRootType
89
import com.intellij.openapi.roots.ProjectRootManager
910

1011
/**
@@ -41,7 +42,12 @@ fun String.parseVersion(): String? {
4142
fun List<LibraryOrderEntry>.matchesAnyOf(patterns: List<Regex>): LibraryOrderEntry? =
4243
firstOrNull { entry ->
4344
patterns.any { pattern ->
44-
entry.libraryName?.let { pattern.containsMatchIn(it) } ?: false
45+
entry.libraryName?.let {
46+
if (pattern.containsMatchIn(it)) return@any true
47+
}
48+
//Fallback to filenames in case library has no name at all, or the name is too generic (e.g. 'JUnit' or 'JUnit4')
49+
return@any entry.library?.getFiles(OrderRootType.CLASSES)
50+
?.any { virtualFile -> pattern.containsMatchIn(virtualFile.name) } ?: false
4551
}
4652
}
4753

0 commit comments

Comments
 (0)