aboutsummaryrefslogtreecommitdiff
path: root/junit
diff options
context:
space:
mode:
authorJames Lemieux <jplemieux@google.com>2018-10-10 12:57:30 -0700
committerJames Lemieux <jplemieux@google.com>2018-10-29 15:08:53 -0700
commit0ea9560b50dd9f4175385e0d940137d7c0e370ab (patch)
treede5c1db136408d5ade461f9e39cc61c42ccadae8 /junit
parentd3f11d59d47cf01f341c534d852d01774ed90c93 (diff)
downloadrobolectric-shadows-0ea9560b50dd9f4175385e0d940137d7c0e370ab.tar.gz
Merge robolectric/master up to commit a2fed5d
Bug: 116278591 Test: make -j56 Run_all_robolectric_tests Change-Id: Ibf9466c62716eb64ab93b1aebd9db8e91230cf84
Diffstat (limited to 'junit')
-rw-r--r--junit/Android.mk2
-rw-r--r--junit/src/main/java/org/robolectric/internal/SandboxTestRunner.java35
2 files changed, 24 insertions, 13 deletions
diff --git a/junit/Android.mk b/junit/Android.mk
index 9953fef81..4df650633 100644
--- a/junit/Android.mk
+++ b/junit/Android.mk
@@ -12,11 +12,11 @@ LOCAL_JAVA_LIBRARIES := \
Robolectric_sandbox \
Robolectric_utils \
robolectric-asm-commons-6.0 \
+ robolectric-guava-25.1-jre \
robolectric-asm-tree-6.0 \
robolectric-hamcrest-core-1.3 \
robolectric-junit-4.12 \
robolectric-asm-6.0 \
- robolectric-guava-20.0 \
jsr305
LOCAL_SRC_FILES := $(call all-java-files-under, src/main/java)
diff --git a/junit/src/main/java/org/robolectric/internal/SandboxTestRunner.java b/junit/src/main/java/org/robolectric/internal/SandboxTestRunner.java
index 46ef19f1a..7f629a016 100644
--- a/junit/src/main/java/org/robolectric/internal/SandboxTestRunner.java
+++ b/junit/src/main/java/org/robolectric/internal/SandboxTestRunner.java
@@ -4,7 +4,6 @@ import static java.util.Arrays.asList;
import com.google.common.collect.Lists;
import java.lang.reflect.Method;
-import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -31,6 +30,7 @@ import org.robolectric.internal.bytecode.Interceptors;
import org.robolectric.internal.bytecode.Sandbox;
import org.robolectric.internal.bytecode.SandboxClassLoader;
import org.robolectric.internal.bytecode.SandboxConfig;
+import org.robolectric.internal.bytecode.ShadowInfo;
import org.robolectric.internal.bytecode.ShadowMap;
import org.robolectric.internal.bytecode.ShadowWrangler;
import org.robolectric.util.PerfStatsCollector;
@@ -41,6 +41,13 @@ import org.robolectric.util.PerfStatsReporter;
public class SandboxTestRunner extends BlockJUnit4ClassRunner {
+ private static final ShadowMap BASE_SHADOW_MAP;
+
+ static {
+ ServiceLoader<ShadowProvider> shadowProviders = ServiceLoader.load(ShadowProvider.class);
+ BASE_SHADOW_MAP = ShadowMap.createFromShadowProviders(shadowProviders);
+ }
+
private final Interceptors interceptors;
private final List<PerfStatsReporter> perfStatsReporters;
private final HashSet<Class<?>> loadedTestClasses = new HashSet<>();
@@ -134,11 +141,8 @@ public class SandboxTestRunner extends BlockJUnit4ClassRunner {
@Nonnull
protected Sandbox getSandbox(FrameworkMethod method) {
InstrumentationConfiguration instrumentationConfiguration = createClassLoaderConfig(method);
- ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
- ClassLoader sandboxClassLoader = new SandboxClassLoader(systemClassLoader, instrumentationConfiguration);
- Sandbox sandbox = new Sandbox(sandboxClassLoader);
- configureShadows(method, sandbox);
- return sandbox;
+ ClassLoader sandboxClassLoader = new SandboxClassLoader(ClassLoader.getSystemClassLoader(), instrumentationConfiguration);
+ return new Sandbox(sandboxClassLoader);
}
/**
@@ -159,9 +163,16 @@ public class SandboxTestRunner extends BlockJUnit4ClassRunner {
.doNotAcquirePackage("org.robolectric.util.")
.doNotAcquirePackage("org.junit.");
+ String customPackages = System.getProperty("org.robolectric.packagesToNotAcquire", "");
+ for (String pkg : customPackages.split(",")) {
+ if (!pkg.isEmpty()) {
+ builder.doNotAcquirePackage(pkg);
+ }
+ }
+
for (Class<?> shadowClass : getExtraShadows(method)) {
- ShadowMap.ShadowInfo shadowInfo = ShadowMap.getShadowInfo(shadowClass);
- builder.addInstrumentedClass(shadowInfo.getShadowedClassName());
+ ShadowInfo shadowInfo = ShadowMap.obtainShadowInfo(shadowClass);
+ builder.addInstrumentedClass(shadowInfo.shadowedClassName);
}
addInstrumentedPackages(method, builder);
@@ -185,7 +196,7 @@ public class SandboxTestRunner extends BlockJUnit4ClassRunner {
}
}
- protected void configureShadows(FrameworkMethod method, Sandbox sandbox) {
+ protected void configureSandbox(Sandbox sandbox, FrameworkMethod method) {
ShadowMap.Builder builder = createShadowMap().newBuilder();
// Configure shadows *BEFORE* setting the ClassLoader. This is necessary because
@@ -213,10 +224,10 @@ public class SandboxTestRunner extends BlockJUnit4ClassRunner {
Sandbox sandbox = getSandbox(method);
- // Configure shadows *BEFORE* setting the ClassLoader. This is necessary because
+ // Configure sandbox *BEFORE* setting the ClassLoader. This is necessary because
// creating the ShadowMap loads all ShadowProviders via ServiceLoader and this is
// not available once we install the Robolectric class loader.
- configureShadows(method, sandbox);
+ configureSandbox(sandbox, method);
final ClassLoader priorContextClassLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(sandbox.getRobolectricClassLoader());
@@ -324,7 +335,7 @@ public class SandboxTestRunner extends BlockJUnit4ClassRunner {
}
protected ShadowMap createShadowMap() {
- return ShadowMap.EMPTY;
+ return BASE_SHADOW_MAP;
}
@Nonnull