@@ -24,14 +24,17 @@ fun checkFrameworkDependencies(dependencyPaths: String?) {
2424 // TODO: JIRA:1659
2525 // check (somehow) that [UtExecutionInstrumentation] is in dependency path: in one of jars or folders
2626
27- val dependencyNames = dependencyPaths
28- .splitToSequence(File .pathSeparatorChar)
27+ val dependencyPathsSequence = dependencyPaths.splitToSequence(File .pathSeparatorChar)
28+
29+ val dependencyNames = dependencyPathsSequence
2930 .mapNotNull { findDependencyName(it) }
3031 .map { it.toLowerCase() }
3132 .toSet()
3233
3334 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+
3538 if (! testFrameworkFound) {
3639 error("""
3740 Test frameworks are not found in dependency path $dependencyPaths , dependency names are:
@@ -41,7 +44,9 @@ fun checkFrameworkDependencies(dependencyPaths: String?) {
4144 }
4245
4346 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+
4550 if (! mockFrameworkFound) {
4651 error("""
4752 Mock frameworks are not found in dependency path $dependencyPaths , dependency names are:
@@ -75,4 +80,18 @@ private fun findDependencyName(jarPath: String): String? {
7580 }
7681
7782 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