package com.richardradics.cleanaa.util; import org.junit.runners.model.InitializationError; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.FileFsFile; import org.robolectric.res.FsFile; /** * Created by radicsrichard on 15. 05. 15.. */ public class AppRobolectricRunner extends RobolectricGradleTestRunner { public AppRobolectricRunner(Class<?> klass) throws InitializationError { super(klass); } protected AndroidManifest getAppManifest(Config config) { AndroidManifest appManifest = super.getAppManifest(config); FsFile androidManifestFile = appManifest.getAndroidManifestFile(); if (androidManifestFile.exists()) { return appManifest; } else { String moduleRoot = getModuleRootPath(config); androidManifestFile = FileFsFile.from(moduleRoot, appManifest.getAndroidManifestFile().getPath().replace("bundles", "manifests/full")); FsFile resDirectory = FileFsFile.from(moduleRoot, appManifest.getResDirectory().getPath()); FsFile assetsDirectory = FileFsFile.from(moduleRoot, appManifest.getAssetsDirectory().getPath()); return new AndroidManifest(androidManifestFile, resDirectory, assetsDirectory); } } private String getModuleRootPath(Config config) { String moduleRoot = config.constants().getResource("").toString().replace("file:", ""); return moduleRoot.substring(0, moduleRoot.indexOf("/build")); } }