@Override protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = getJarResolver().getLocalArtifactUrls(sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls) { @Override protected byte[] getByteCode(String className) throws ClassNotFoundException { if (className.startsWith("com.github.stephanenicolas.injectview")) { try { CtClass dummyClass = ClassPool.getDefault().get(className); if (processor.shouldTransform(dummyClass)) { log.debug("Intercepting via InjectView " + className); processor.applyTransformations(dummyClass); byte[] bytes = dummyClass.toBytecode(); System.out.println("Size of weaved byte code :" + bytes.length); FileOutputStream fileOutputStream = new FileOutputStream("/tmp/" + className + ".class"); fileOutputStream.write(bytes); fileOutputStream.close(); return bytes; } } catch (Exception e) { throw new RuntimeException("Impossible to transform class " + className, e); } } return super.getByteCode(className); } }; }
@Override protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = getJarResolver().getLocalArtifactUrls(sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls) { @Override protected byte[] getByteCode(String className) throws ClassNotFoundException { if (className.startsWith("com.github.stephanenicolas.lxglifecycle")) { try { CtClass dummyClass = ClassPool.getDefault().get(className); if (processor.shouldTransform(dummyClass)) { log.debug("Intercepting via InjectExtra " + className); processor.applyTransformations(dummyClass); byte[] bytes = dummyClass.toBytecode(); System.out.println("Size of weaved byte code :" + bytes.length); FileOutputStream fileOutputStream = new FileOutputStream("/tmp/" + className + ".class"); fileOutputStream.write(bytes); fileOutputStream.close(); return bytes; } } catch (Exception e) { throw new RuntimeException("Impossible to transform class " + className, e); } } return super.getByteCode(className); } }; }
@Override public Setup createSetup() { return new Setup() { @Override public boolean shouldInstrument(ClassInfo classInfo) { return classInfo.getName().equals(AsyncTasks.class.getName()) || super.shouldInstrument(classInfo); } }; }
@Override public Setup createSetup() { return new Setup() { @Override public boolean shouldAcquire(String name) { if (name.equals(StateHolder.class.getName())) return false; return super.shouldAcquire(name); } }; }
@Override public Setup createSetup() { return new Setup() { @Override public boolean shouldInstrument(ClassInfo classInfo) { String name = classInfo.getName(); if (name.equals(AndroidTranslatorClassInstrumentedTest.CustomPaint.class.getName()) || name.equals(AndroidTranslatorClassInstrumentedTest.ClassWithPrivateConstructor.class.getName())) { return true; } return super.shouldInstrument(classInfo); } }; }
@Override public Setup createSetup() { return new Setup() { @Override public boolean shouldAcquire(String name) { // todo: whyyyyy!?!? if this isn't there, tests after TestRunnerSequenceTest start failing bad. if (name.startsWith("org.mockito.")) return false; return super.shouldAcquire(name); } }; }
@Override protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = getJarResolver().getLocalArtifactUrls(sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls) { @Override protected byte[] getByteCode(String className) throws ClassNotFoundException { if (className.startsWith("com.github.stephanenicolas.injectresource")) { try { CtClass dummyClass = ClassPool.getDefault().get(className); if (processor.shouldTransform(dummyClass)) { log.debug("Intercepting via InjectResource " + className); processor.applyTransformations(dummyClass); byte[] bytes = dummyClass.toBytecode(); System.out.println("Size of weaved byte code :" + bytes.length); FileOutputStream fileOutputStream = new FileOutputStream("/tmp/" + className + ".class"); fileOutputStream.write(bytes); fileOutputStream.close(); return bytes; } } catch (Exception e) { throw new RuntimeException("Impossible to transform class " + className, e); } } return super.getByteCode(className); } }; }
@Override protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = getJarResolver().getLocalArtifactUrls(sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls) { @Override protected byte[] getByteCode(String className) throws ClassNotFoundException { if (className.startsWith("com.github.stephanenicolas.injectextra")) { try { CtClass dummyClass = ClassPool.getDefault().get(className); if (processor.shouldTransform(dummyClass)) { log.debug("Intercepting via InjectExtra " + className); processor.applyTransformations(dummyClass); byte[] bytes = dummyClass.toBytecode(); System.out.println("Size of weaved byte code :" + bytes.length); FileOutputStream fileOutputStream = new FileOutputStream("/tmp/" + className + ".class"); fileOutputStream.write(bytes); fileOutputStream.close(); return bytes; } } catch (Exception e) { throw new RuntimeException("Impossible to transform class " + className, e); } } return super.getByteCode(className); } }; }
@Override protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = getJarResolver().getLocalArtifactUrls(sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls) { @Override protected byte[] getByteCode(String className) throws ClassNotFoundException { if (className.startsWith("com.github.stephanenicolas.loglifecycle")) { try { CtClass dummyClass = ClassPool.getDefault().get(className); if (processor.shouldTransform(dummyClass)) { log.debug("Intercepting via InjectExtra " + className); processor.applyTransformations(dummyClass); byte[] bytes = dummyClass.toBytecode(); System.out.println("Size of weaved byte code :" + bytes.length); FileOutputStream fileOutputStream = new FileOutputStream("/tmp/" + className + ".class"); fileOutputStream.write(bytes); fileOutputStream.close(); return bytes; } } catch (Exception e) { throw new RuntimeException("Impossible to transform class " + className, e); } } return super.getByteCode(className); } }; }
@Override public Setup createSetup() { return new Setup() { @Override public boolean isFromAndroidSdk(ClassInfo classInfo) { return super.isFromAndroidSdk(classInfo) || classInfo.getName().startsWith("com.google.ads.") || classInfo.getName().startsWith("com.google.analytics."); } }; }
public SdkEnvironment createSdkEnvironment(SdkConfig sdkConfig) { Setup setup = createSetup(); ClassLoader robolectricClassLoader = createRobolectricClassLoader(setup, sdkConfig); return new SdkEnvironment(sdkConfig, robolectricClassLoader); }
public Setup createSetup() { return new Setup(); }
protected ClassLoader createRobolectricClassLoader(Setup setup, SdkConfig sdkConfig) { URL[] urls = MAVEN_CENTRAL.getLocalArtifactUrls(this, sdkConfig.getSdkClasspathDependencies()); return new AsmInstrumentingClassLoader(setup, urls); }
/** * Replaces Robolectric {@link Setup} with {@link MapzenSetup} subclass. */ @Override public Setup createSetup() { return new MapzenSetup(); }