Commit 997af6ac authored by John Budorick's avatar John Budorick Committed by Commit Bot

android: Fix how incremental tests exclude net.bytebuddy from test discovery.

Bug: 857001
Change-Id: I89c070724cb540f2ea37fe1c34bfee27f2977549
Reviewed-on: https://chromium-review.googlesource.com/1117648Reviewed-by: default avataragrieve <agrieve@chromium.org>
Commit-Queue: John Budorick <jbudorick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571027}
parent 5955aebd
...@@ -29,7 +29,10 @@ import org.chromium.base.multidex.ChromiumMultiDexInstaller; ...@@ -29,7 +29,10 @@ import org.chromium.base.multidex.ChromiumMultiDexInstaller;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List;
/** /**
* A custom AndroidJUnitRunner that supports multidex installer and list out test information. * A custom AndroidJUnitRunner that supports multidex installer and list out test information.
...@@ -194,12 +197,20 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner { ...@@ -194,12 +197,20 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
* Wraps TestRequestBuilder to make it work with incremental install. * Wraps TestRequestBuilder to make it work with incremental install.
*/ */
private static class IncrementalInstallTestRequestBuilder extends TestRequestBuilder { private static class IncrementalInstallTestRequestBuilder extends TestRequestBuilder {
List<String> mExcludedPrefixes = new ArrayList<String>();
boolean mHasClassList; boolean mHasClassList;
public IncrementalInstallTestRequestBuilder(Instrumentation instr, Bundle bundle) { public IncrementalInstallTestRequestBuilder(Instrumentation instr, Bundle bundle) {
super(instr, bundle); super(instr, bundle);
} }
@Override
public TestRequestBuilder addFromRunnerArgs(RunnerArgs runnerArgs) {
mExcludedPrefixes.addAll(runnerArgs.notTestPackages);
runnerArgs.notTestPackages.clear();
return super.addFromRunnerArgs(runnerArgs);
}
@Override @Override
public TestRequestBuilder addTestClass(String className) { public TestRequestBuilder addTestClass(String className) {
mHasClassList = true; mHasClassList = true;
...@@ -244,7 +255,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner { ...@@ -244,7 +255,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
} }
} }
private boolean startsWithAny(String str, String[] prefixes) { private boolean startsWithAny(String str, List<String> prefixes) {
for (String prefix : prefixes) { for (String prefix : prefixes) {
if (str.startsWith(prefix)) { if (str.startsWith(prefix)) {
return true; return true;
...@@ -255,12 +266,11 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner { ...@@ -255,12 +266,11 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
private void addTestClasses(DexFile[] dexFiles, TestRequestBuilder builder) { private void addTestClasses(DexFile[] dexFiles, TestRequestBuilder builder) {
Log.i(TAG, "Scanning incremental classpath."); Log.i(TAG, "Scanning incremental classpath.");
String[] excludedPrefixes;
try { try {
Field excludedPackagesField = Field excludedPackagesField =
TestRequestBuilder.class.getDeclaredField("DEFAULT_EXCLUDED_PACKAGES"); TestRequestBuilder.class.getDeclaredField("DEFAULT_EXCLUDED_PACKAGES");
excludedPackagesField.setAccessible(true); excludedPackagesField.setAccessible(true);
excludedPrefixes = (String[]) excludedPackagesField.get(null); mExcludedPrefixes.addAll(Arrays.asList((String[]) excludedPackagesField.get(null)));
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -271,7 +281,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner { ...@@ -271,7 +281,7 @@ public class BaseChromiumAndroidJUnitRunner extends AndroidJUnitRunner {
Enumeration<String> classNames = dexFile.entries(); Enumeration<String> classNames = dexFile.entries();
while (classNames.hasMoreElements()) { while (classNames.hasMoreElements()) {
String className = classNames.nextElement(); String className = classNames.nextElement();
if (!className.contains("$") && !startsWithAny(className, excludedPrefixes) if (!className.contains("$") && !startsWithAny(className, mExcludedPrefixes)
&& loader.loadIfTest(className) != null) { && loader.loadIfTest(className) != null) {
addTestClass(className); addTestClass(className);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment