@@ -24,14 +24,17 @@ fun checkFrameworkDependencies(dependencyPaths: String?) {
24
24
// TODO: JIRA:1659
25
25
// check (somehow) that [UtExecutionInstrumentation] is in dependency path: in one of jars or folders
26
26
27
- val dependencyNames = dependencyPaths
28
- .splitToSequence(File .pathSeparatorChar)
27
+ val dependencyPathsSequence = dependencyPaths.splitToSequence(File .pathSeparatorChar)
28
+
29
+ val dependencyNames = dependencyPathsSequence
29
30
.mapNotNull { findDependencyName(it) }
30
31
.map { it.toLowerCase() }
31
32
.toSet()
32
33
33
34
val testFrameworkPatterns = TestFramework .allItems.map { it.patterns() }
34
- val testFrameworkFound = dependencyNames.matchesAnyOf(testFrameworkPatterns)
35
+ val testFrameworkFound = dependencyNames.matchesAnyOf(testFrameworkPatterns) ||
36
+ dependencyPathsSequence.any { checkDependencyIsFatJar(it) }
37
+
35
38
if (! testFrameworkFound) {
36
39
error("""
37
40
Test frameworks are not found in dependency path $dependencyPaths , dependency names are:
@@ -41,7 +44,9 @@ fun checkFrameworkDependencies(dependencyPaths: String?) {
41
44
}
42
45
43
46
val mockFrameworkPatterns = MockFramework .allItems.map { it.patterns() }
44
- val mockFrameworkFound = dependencyNames.matchesAnyOf(mockFrameworkPatterns)
47
+ val mockFrameworkFound = dependencyNames.matchesAnyOf(mockFrameworkPatterns) ||
48
+ dependencyPathsSequence.any { checkDependencyIsFatJar(it) }
49
+
45
50
if (! mockFrameworkFound) {
46
51
error("""
47
52
Mock frameworks are not found in dependency path $dependencyPaths , dependency names are:
@@ -75,4 +80,18 @@ private fun findDependencyName(jarPath: String): String? {
75
80
}
76
81
77
82
return null
78
- }
83
+ }
84
+
85
+ // We consider Fat JARs contain test frameworks and mock frameworks in the dependencies.
86
+ private fun checkDependencyIsFatJar (jarPath : String ): Boolean {
87
+ try {
88
+ val attributes = JarFile (jarPath).manifest.mainAttributes
89
+ val jarType = attributes.getValue(" JAR-Type" )
90
+
91
+ return jarType == " Fat JAR"
92
+ } catch (e: Exception ) {
93
+ logger.warn { " Unexpected error during parsing $jarPath manifest file $e " }
94
+ }
95
+
96
+ return false
97
+ }
0 commit comments