From 0ea9560b50dd9f4175385e0d940137d7c0e370ab Mon Sep 17 00:00:00 2001 From: James Lemieux Date: Wed, 10 Oct 2018 12:57:30 -0700 Subject: Merge robolectric/master up to commit a2fed5d Bug: 116278591 Test: make -j56 Run_all_robolectric_tests Change-Id: Ibf9466c62716eb64ab93b1aebd9db8e91230cf84 --- junit/Android.mk | 2 +- .../robolectric/internal/SandboxTestRunner.java | 35 ++++++++++++++-------- 2 files changed, 24 insertions(+), 13 deletions(-) (limited to 'junit') 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 shadowProviders = ServiceLoader.load(ShadowProvider.class); + BASE_SHADOW_MAP = ShadowMap.createFromShadowProviders(shadowProviders); + } + private final Interceptors interceptors; private final List perfStatsReporters; private final HashSet> 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 -- cgit v1.2.3