ManifestFactoryTest.java revision eb01f4f02fcd34067b8ff5e53bfeb9575b874e1f
1package org.robolectric; 2 3import static java.util.Arrays.asList; 4import static org.junit.Assert.assertEquals; 5import static org.robolectric.util.TestUtil.joinPath; 6import static org.robolectric.util.TestUtil.resourceFile; 7 8import org.junit.Test; 9import org.junit.runner.RunWith; 10import org.junit.runners.JUnit4; 11import org.robolectric.annotation.Config; 12import org.robolectric.manifest.AndroidManifest; 13import org.robolectric.res.ResourcePath; 14 15import java.util.ArrayList; 16import java.util.Collection; 17import java.util.List; 18import java.util.Properties; 19 20@RunWith(JUnit4.class) 21public class ManifestFactoryTest { 22 @Test 23 public void shouldLoadLibraryManifests() throws Exception { 24 Properties properties = new Properties(); 25 properties.setProperty("manifest", resourceFile("TestAndroidManifest.xml").toString()); 26 properties.setProperty("libraries", "lib1"); 27 Config config = Config.Implementation.fromProperties(properties); 28 ManifestFactory manifestFactory = new RobolectricTestRunner(ManifestFactoryTest.class).getManifestFactory(config); 29 AndroidManifest manifest = manifestFactory.create(manifestFactory.identify(config)); 30 31 List<AndroidManifest> libraryManifests = manifest.getLibraryManifests(); 32 assertEquals(1, libraryManifests.size()); 33 assertEquals("org.robolectric.lib1", libraryManifests.get(0).getPackageName()); 34 } 35 36 @Test 37 public void shouldLoadAllResourcesForExistingLibraries() throws Exception { 38 Properties properties = new Properties(); 39 properties.setProperty("manifest", resourceFile("TestAndroidManifest.xml").toString()); 40 properties.setProperty("resourceDir", "res"); 41 properties.setProperty("assetDir", "assets"); 42 Config config = Config.Implementation.fromProperties(properties); 43 ManifestFactory manifestFactory = new RobolectricTestRunner(ManifestFactoryTest.class).getManifestFactory(config); 44 AndroidManifest appManifest = manifestFactory.create(manifestFactory.identify(config)); 45 46 // This intentionally loads from the non standard resources/project.properties 47 List<String> resourcePaths = stringify(appManifest.getIncludedResourcePaths()); 48 assertEquals(asList( 49 joinPath(".", "src", "test", "resources", "res"), 50 joinPath(".", "src", "test", "resources", "lib1", "res"), 51 joinPath(".", "src", "test", "resources", "lib1", "..", "lib3", "res"), 52 joinPath(".", "src", "test", "resources", "lib1", "..", "lib2", "res")), 53 resourcePaths); 54 } 55 56 private List<String> stringify(Collection<ResourcePath> resourcePaths) { 57 List<String> resourcePathBases = new ArrayList<>(); 58 for (ResourcePath resourcePath : resourcePaths) { 59 resourcePathBases.add(resourcePath.getResourceBase().toString()); 60 } 61 return resourcePathBases; 62 } 63} 64