@Test public void testLibraryHeaderGroups() throws NoSuchBuildTargetException { NewNativeTargetProjectMutator mutator = mutatorWithCommonDefaults(); SourcePath foo = new FakeSourcePath("HeaderGroup1/foo.h"); SourcePath bar = new FakeSourcePath("HeaderGroup1/bar.h"); SourcePath baz = new FakeSourcePath("HeaderGroup2/baz.h"); mutator.setPublicHeaders(ImmutableSet.of(bar, baz)); mutator.setPrivateHeaders(ImmutableSet.of(foo)); NewNativeTargetProjectMutator.Result result = mutator.buildTargetAndAddToProject(generatedProject); PBXGroup sourcesGroup = result.targetGroup.getOrCreateChildGroupByName("Sources"); assertThat(sourcesGroup.getChildren(), hasSize(2)); PBXGroup group1 = (PBXGroup) Iterables.get(sourcesGroup.getChildren(), 0); assertEquals("HeaderGroup1", group1.getName()); assertThat(group1.getChildren(), hasSize(2)); PBXFileReference fileRefBar = (PBXFileReference) Iterables.get(group1.getChildren(), 0); assertEquals("bar.h", fileRefBar.getName()); PBXFileReference fileRefFoo = (PBXFileReference) Iterables.get(group1.getChildren(), 1); assertEquals("foo.h", fileRefFoo.getName()); PBXGroup group2 = (PBXGroup) Iterables.get(sourcesGroup.getChildren(), 1); assertEquals("HeaderGroup2", group2.getName()); assertThat(group2.getChildren(), hasSize(1)); PBXFileReference fileRefBaz = (PBXFileReference) Iterables.get(group2.getChildren(), 0); assertEquals("baz.h", fileRefBaz.getName()); }
@Test public void testPrefixHeaderInSourceGroup() throws NoSuchBuildTargetException { NewNativeTargetProjectMutator mutator = mutatorWithCommonDefaults(); SourcePath prefixHeader = new FakeSourcePath("Group1/prefix.pch"); mutator.setPrefixHeader(Optional.of(prefixHeader)); NewNativeTargetProjectMutator.Result result = mutator.buildTargetAndAddToProject(generatedProject); // No matter where the prefixHeader file is it should always be directly inside Sources PBXGroup sourcesGroup = result.targetGroup.getOrCreateChildGroupByName("Sources"); assertThat(sourcesGroup.getChildren(), hasSize(1)); PBXFileReference fileRef = (PBXFileReference) Iterables.get(sourcesGroup.getChildren(), 0); assertEquals("prefix.pch", fileRef.getName()); }
private static PBXGroup assertHasSubgroupAndReturnIt(PBXGroup group, final String subgroupName) { ImmutableList<PBXGroup> candidates = FluentIterable.from(group.getChildren()) .filter( new Predicate<PBXReference>() { @Override public boolean apply(PBXReference input) { return input.getName().equals(subgroupName); } }) .filter(PBXGroup.class) .toList(); if (candidates.size() != 1) { fail("Could not find a unique subgroup by its name"); } return candidates.get(0); }