use of org.robolectric.res.FsFile in project robolectric by robolectric.
the class GradleManifestFactory method create.
@Override
public AndroidManifest create(ManifestIdentifier manifestIdentifier) {
FsFile manifestFile = manifestIdentifier.getManifestFile();
FsFile resDir = manifestIdentifier.getResDir();
FsFile assetDir = manifestIdentifier.getAssetDir();
final String packageName = manifestIdentifier.getPackageName();
Logger.debug("Robolectric assets directory: " + assetDir.getPath());
Logger.debug(" Robolectric res directory: " + resDir.getPath());
Logger.debug(" Robolectric manifest path: " + manifestFile.getPath());
Logger.debug(" Robolectric package name: " + packageName);
return new AndroidManifest(manifestFile, resDir, assetDir, packageName);
}
use of org.robolectric.res.FsFile in project robolectric by robolectric.
the class MavenManifestFactory method create.
@Override
public AndroidManifest create(ManifestIdentifier manifestIdentifier) {
AndroidManifest appManifest;
FsFile manifestFile = manifestIdentifier.getManifestFile();
if (manifestFile == null) {
appManifest = createDummyManifest(manifestIdentifier.getPackageName());
} else if (!manifestFile.exists()) {
System.out.println("WARNING: No manifest file found at " + manifestFile.getPath() + ".");
System.out.println("Falling back to the Android OS resources only.");
System.out.println("To remove this warning, annotate your test class with @Config(manifest=Config.NONE).");
appManifest = createDummyManifest(manifestIdentifier.getPackageName());
} else {
FsFile resDir = manifestIdentifier.getResDir();
FsFile assetDir = manifestIdentifier.getAssetDir();
String packageName = manifestIdentifier.getPackageName();
Logger.debug("Robolectric assets directory: " + assetDir.getPath());
Logger.debug(" Robolectric res directory: " + resDir.getPath());
Logger.debug(" Robolectric manifest path: " + manifestFile.getPath());
Logger.debug(" Robolectric package name: " + packageName);
appManifest = new AndroidManifest(manifestFile, resDir, assetDir, packageName);
}
List<FsFile> libraryDirs = manifestIdentifier.getLibraryDirs();
appManifest.setLibraryManifests(createLibraryManifests(appManifest, libraryDirs));
return appManifest;
}
use of org.robolectric.res.FsFile in project robolectric by robolectric.
the class MavenManifestFactory method createLibraryManifests.
/**
* Search through an AndroidManifest's library directories to load library AppManifest files.
* For testing, allow a parameter override of the library directories.
* @param androidManifest The main AppManifest which may have library resources.
* @param libraryDirectories If not null, override the libraries in androidManifest.
* @return A list of AndroidManifest objects, one for each library found.
*/
private static List<AndroidManifest> createLibraryManifests(AndroidManifest androidManifest, List<FsFile> libraryDirectories) {
List<AndroidManifest> libraryManifests = new ArrayList<>();
if (androidManifest != null) {
// If there is no library override, look through subdirectories.
if (libraryDirectories == null) {
libraryDirectories = findLibraries(androidManifest);
}
for (FsFile libraryBaseDir : libraryDirectories) {
AndroidManifest libraryManifest = createLibraryAndroidManifest(libraryBaseDir);
libraryManifest.setLibraryManifests(createLibraryManifests(libraryManifest, null));
libraryManifests.add(libraryManifest);
}
}
return libraryManifests;
}
use of org.robolectric.res.FsFile in project robolectric by robolectric.
the class RobolectricTestRunner method getJarResolver.
protected DependencyResolver getJarResolver() {
if (dependencyResolver == null) {
if (Boolean.getBoolean("robolectric.offline")) {
String dependencyDir = System.getProperty("robolectric.dependency.dir", ".");
dependencyResolver = new LocalDependencyResolver(new File(dependencyDir));
} else {
File cacheDir = new File(new File(System.getProperty("java.io.tmpdir")), "robolectric");
if (cacheDir.exists() || cacheDir.mkdir()) {
Logger.info("Dependency cache location: %s", cacheDir.getAbsolutePath());
dependencyResolver = new CachedDependencyResolver(new MavenDependencyResolver(), cacheDir, 60 * 60 * 24 * 1000);
} else {
dependencyResolver = new MavenDependencyResolver();
}
}
URL buildPathPropertiesUrl = getClass().getClassLoader().getResource("robolectric-deps.properties");
if (buildPathPropertiesUrl != null) {
Logger.info("Using Robolectric classes from %s", buildPathPropertiesUrl.getPath());
FsFile propertiesFile = Fs.fileFromPath(buildPathPropertiesUrl.getFile());
try {
dependencyResolver = new PropertiesDependencyResolver(propertiesFile, dependencyResolver);
} catch (IOException e) {
throw new RuntimeException("couldn't read " + buildPathPropertiesUrl, e);
}
}
}
return dependencyResolver;
}
use of org.robolectric.res.FsFile in project robolectric by robolectric.
the class MavenManifestFactory method identify.
@Override
public ManifestIdentifier identify(Config config) {
if (config.manifest().equals(Config.NONE)) {
return new ManifestIdentifier(null, null, null, null, null);
}
FsFile manifestFile = getBaseDir().join(config.manifest());
FsFile baseDir = manifestFile.getParent();
FsFile resDir = baseDir.join(config.resourceDir());
FsFile assetDir = baseDir.join(config.assetDir());
List<FsFile> libraryDirs = null;
if (config.libraries().length > 0) {
libraryDirs = new ArrayList<>();
for (String libraryDirName : config.libraries()) {
libraryDirs.add(baseDir.join(libraryDirName));
}
}
return new ManifestIdentifier(manifestFile, resDir, assetDir, config.packageName(), libraryDirs);
}
Aggregations