package org.robolectric.internal; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.robolectric.annotation.Config; import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.FileFsFile; import org.robolectric.res.ResourcePath; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class BuckManifestFactoryTest { private Config.Builder configBuilder; private BuckManifestFactory buckManifestFactory; @Before public void setUp() throws Exception { configBuilder = Config.Builder.defaults().setPackageName("com.robolectric.buck"); System.setProperty("buck.robolectric_manifest", "buck/AndroidManifest.xml"); System.setProperty("buck.robolectric_res_directories", "buck/res1:buck/res2"); System.setProperty("buck.robolectric_assets_directories", "buck/assets"); buckManifestFactory = new BuckManifestFactory(); } @After public void tearDown() { System.clearProperty("buck.robolectric_manifest"); System.clearProperty("buck.robolectric_res_directories"); System.clearProperty("buck.robolectric_assets_directories"); } @Test public void identify() throws Exception { ManifestIdentifier manifestIdentifier = buckManifestFactory.identify(configBuilder.build()); assertThat(manifestIdentifier.getManifestFile()) .isEqualTo(FileFsFile.from("buck/AndroidManifest.xml")); assertThat(manifestIdentifier.getPackageName()) .isEqualTo("com.robolectric.buck"); } @Test public void multiple_res_dirs() throws Exception { ManifestIdentifier manifestIdentifier = buckManifestFactory.identify(configBuilder.build()); AndroidManifest manifest = buckManifestFactory.create(manifestIdentifier); assertThat(manifest.getResDirectory()) .isEqualTo(FileFsFile.from("buck/res2")); assertThat(manifest.getAssetsDirectory()) .isEqualTo(FileFsFile.from("buck/assets")); List<ResourcePath> resourcePathList = manifest.getIncludedResourcePaths(); assertThat(resourcePathList.size()).isEqualTo(2); assertThat(resourcePathList).containsExactly( new ResourcePath(manifest.getRClass(), FileFsFile.from("buck/res2"), FileFsFile.from("buck/assets")), new ResourcePath(manifest.getRClass(), FileFsFile.from("buck/res1"), FileFsFile.from("buck/assets")) ); } }