Run single test after Gradle 4.7 update

This commit is contained in:
Nikolay Krasko
2018-06-15 17:58:58 +03:00
parent 960fba3c4e
commit ea3c4fd451
@@ -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<Pattern> includePatterns =
(ArrayList<Pattern>) includePatternsField.get(testSelectionMatcher);
@SuppressWarnings("unchecked") List<Object> includePatterns =
(ArrayList<Object>) 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("*")) {