diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/JUnit3RunnerWithInnersForGradle.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/JUnit3RunnerWithInnersForGradle.java index 1d84c64b4c5..57600ef8e09 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/JUnit3RunnerWithInnersForGradle.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/JUnit3RunnerWithInnersForGradle.java @@ -18,6 +18,7 @@ import org.junit.runner.notification.RunNotifier; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.List; import java.util.regex.Pattern; import static org.jetbrains.kotlin.test.JUnit3RunnerWithInners.isTestMethod; @@ -117,14 +118,30 @@ class JUnit3RunnerWithInnersForGradle extends Runner implements Filterable, Sort } includePatternsField.setAccessible(true); - @SuppressWarnings("unchecked") ArrayList includePatterns = - (ArrayList) includePatternsField.get(testSelectionMatcher); + @SuppressWarnings("unchecked") List includePatterns = + (ArrayList) includePatternsField.get(testSelectionMatcher); if (includePatterns.size() != 1) { return null; } - Pattern pattern = includePatterns.get(0); + Object patternStorage = includePatterns.get(0); + + Pattern pattern; + if (patternStorage instanceof Pattern) { + pattern = (Pattern) patternStorage; + } else { + try { + // TestSelectionMatcher.TestPattern is used since Gradle 4.7 + Field patternField = patternStorage.getClass().getDeclaredField("pattern"); + patternField.setAccessible(true); + pattern = (Pattern) patternField.get(patternStorage); + } + catch (NoSuchFieldException exception) { + return null; + } + } + String patternStr = pattern.pattern(); if (patternStr.endsWith("*")) {