Disable LeakCanary for Robolectric tests

See 'For Robolectric users:' https://github.com/square/leakcanary
This commit is contained in:
Yusuke Matsubara 2017-11-03 11:26:56 +09:00 committed by maskara
parent 3adb5d83ae
commit 0964b05eed
2 changed files with 21 additions and 6 deletions

View file

@ -17,6 +17,7 @@ import android.support.v4.util.LruCache;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.stetho.Stetho;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import org.acra.ACRA;
import org.acra.ReportingInteractionMode;
@ -117,12 +118,8 @@ public class CommonsApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
LeakCanary.install(this);
setupLeakCanary();
Timber.plant(new Timber.DebugTree());
@ -143,6 +140,13 @@ public class CommonsApplication extends Application {
cacheData = new CacheController();
}
protected RefWatcher setupLeakCanary() {
if (LeakCanary.isInAnalyzerProcess(this)) {
return RefWatcher.DISABLED;
}
return LeakCanary.install(this);
}
/**
* @return Account|null
*/

View file

@ -0,0 +1,11 @@
package fr.free.nrw.commons;
import com.squareup.leakcanary.RefWatcher;
// This class is automatically discovered by Robolectric
public class TestCommonsApplication extends CommonsApplication {
@Override protected RefWatcher setupLeakCanary() {
// No leakcanary in unit tests.
return RefWatcher.DISABLED;
}
}