use of com.facebook.buck.rules.FakeBuildableContext in project buck by facebook.
the class HeaderSymlinkTreeWithHeaderMapTest method testSymlinkTreeBuildSteps.
@Test
public void testSymlinkTreeBuildSteps() throws IOException {
BuildContext buildContext = FakeBuildContext.withSourcePathResolver(resolver);
ProjectFilesystem filesystem = new FakeProjectFilesystem();
FakeBuildableContext buildableContext = new FakeBuildableContext();
ImmutableList<Step> expectedBuildSteps = ImmutableList.of(new MakeCleanDirectoryStep(filesystem, symlinkTreeRoot), new SymlinkTreeStep(filesystem, symlinkTreeRoot, resolver.getMappedPaths(links)), new HeaderMapStep(filesystem, HeaderSymlinkTreeWithHeaderMap.getPath(filesystem, buildTarget), ImmutableMap.of(Paths.get("file"), filesystem.getBuckPaths().getBuckOut().relativize(symlinkTreeRoot).resolve("file"), Paths.get("directory/then/file"), filesystem.getBuckPaths().getBuckOut().relativize(symlinkTreeRoot).resolve("directory/then/file"))));
ImmutableList<Step> actualBuildSteps = symlinkTreeBuildRule.getBuildSteps(buildContext, buildableContext);
assertEquals(expectedBuildSteps, actualBuildSteps.subList(1, actualBuildSteps.size()));
}
use of com.facebook.buck.rules.FakeBuildableContext in project buck by facebook.
the class DefaultJavaLibraryTest method testBuildInternalWithAndroidBootclasspath.
/** Make sure that when isAndroidLibrary is true, that the Android bootclasspath is used. */
@Test
@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
public void testBuildInternalWithAndroidBootclasspath() throws Exception {
String folder = "android/java/src/com/facebook";
tmp.newFolder(folder.split("/"));
BuildTarget buildTarget = BuildTargetFactory.newInstance("//" + folder + ":fb");
Path src = Paths.get(folder, "Main.java");
tmp.newFile(src.toString());
BuildRule libraryRule = AndroidLibraryBuilder.createBuilder(buildTarget).addSrc(src).build(ruleResolver);
DefaultJavaLibrary javaLibrary = (DefaultJavaLibrary) libraryRule;
String bootclasspath = "effects.jar" + File.pathSeparator + "maps.jar" + File.pathSeparator + "usb.jar" + File.pathSeparator;
BuildContext context = createBuildContext(libraryRule, bootclasspath);
List<Step> steps = javaLibrary.getBuildSteps(context, new FakeBuildableContext());
// Find the JavacStep and verify its bootclasspath.
Step step = Iterables.find(steps, command -> command instanceof JavacStep);
assertNotNull("Expected a JavacStep in the steplist.", step);
JavacStep javac = (JavacStep) step;
assertEquals("Should compile Main.java rather than generated R.java.", ImmutableSet.of(src), javac.getSrcs());
}
use of com.facebook.buck.rules.FakeBuildableContext in project buck by facebook.
the class DefaultJavaLibraryTest method testClasspathForJavacCommand.
@Test
public void testClasspathForJavacCommand() throws Exception {
// libraryOne responds like an ordinary prebuilt_jar with no dependencies. We have to use a
// FakeJavaLibraryRule so that we can override the behavior of getAbiKey().
BuildTarget libraryOneTarget = BuildTargetFactory.newInstance("//:libone");
SourcePathResolver resolver = new SourcePathResolver(new SourcePathRuleFinder(ruleResolver));
FakeJavaLibrary libraryOne = new FakeJavaLibrary(libraryOneTarget, resolver) {
@Override
public Optional<BuildTarget> getAbiJar() {
return Optional.empty();
}
@Override
public ImmutableSet<SourcePath> getOutputClasspaths() {
return ImmutableSet.of(new FakeSourcePath("java/src/com/libone/bar.jar"));
}
@Override
public ImmutableSet<SourcePath> getTransitiveClasspaths() {
return ImmutableSet.of();
}
@Override
public ImmutableSet<JavaLibrary> getTransitiveClasspathDeps() {
return ImmutableSet.of();
}
};
ruleResolver.addToIndex(libraryOne);
BuildTarget libraryTwoTarget = BuildTargetFactory.newInstance("//:libtwo");
BuildRule libraryTwo = JavaLibraryBuilder.createBuilder(libraryTwoTarget).addSrc(Paths.get("java/src/com/libtwo/Foo.java")).addDep(libraryOne.getBuildTarget()).build(ruleResolver);
List<Step> steps = libraryTwo.getBuildSteps(FakeBuildContext.withSourcePathResolver(resolver), new FakeBuildableContext());
ImmutableList<JavacStep> javacSteps = FluentIterable.from(steps).filter(JavacStep.class).toList();
assertEquals("There should be only one javac step.", 1, javacSteps.size());
JavacStep javacStep = javacSteps.get(0);
assertEquals("The classpath for the javac step to compile //:libtwo should contain only bar.jar.", ImmutableSet.of(libraryOne.getProjectFilesystem().resolve("java/src/com/libone/bar.jar")), javacStep.getClasspathEntries());
}
use of com.facebook.buck.rules.FakeBuildableContext in project buck by facebook.
the class DefaultJavaLibraryTest method testJavacDirectToJarStepIsNotPresentWhenPostprocessClassesCommandsPresent.
@Test
public void testJavacDirectToJarStepIsNotPresentWhenPostprocessClassesCommandsPresent() {
BuildTarget buildTarget = BuildTargetFactory.newInstance("//:lib");
BuildRule javaLibraryBuildRule = createDefaultJavaLibraryRuleWithAbiKey(buildTarget, /* srcs */
ImmutableSortedSet.of("foo/Bar.java"), /* deps */
ImmutableSortedSet.of(), /* exportedDeps */
ImmutableSortedSet.of(), Optional.of(AbstractJavacOptions.SpoolMode.DIRECT_TO_JAR), /* postprocessClassesCommands */
ImmutableList.of("process_class_files.py"));
BuildContext buildContext = createBuildContext(javaLibraryBuildRule, /* bootclasspath */
null);
ImmutableList<Step> steps = javaLibraryBuildRule.getBuildSteps(buildContext, new FakeBuildableContext());
assertThat(steps, Matchers.not(Matchers.hasItem(Matchers.instanceOf(JavacDirectToJarStep.class))));
assertThat(steps, Matchers.hasItem(Matchers.instanceOf(JavacStep.class)));
assertThat(steps, Matchers.hasItem(Matchers.instanceOf(JarDirectoryStep.class)));
}
use of com.facebook.buck.rules.FakeBuildableContext in project buck by facebook.
the class DefaultJavaLibraryTest method testWhenNoJavacIsProvidedAJavacInMemoryStepIsAdded.
@Test
public void testWhenNoJavacIsProvidedAJavacInMemoryStepIsAdded() throws Exception {
BuildTarget libraryOneTarget = BuildTargetFactory.newInstance("//:libone");
BuildRule rule = JavaLibraryBuilder.createBuilder(libraryOneTarget).addSrc(Paths.get("java/src/com/libone/Bar.java")).build(ruleResolver);
DefaultJavaLibrary buildRule = (DefaultJavaLibrary) rule;
ImmutableList<Step> steps = buildRule.getBuildSteps(FakeBuildContext.withSourcePathResolver(new SourcePathResolver(new SourcePathRuleFinder(ruleResolver))), new FakeBuildableContext());
assertEquals(10, steps.size());
assertTrue(((JavacStep) steps.get(6)).getJavac() instanceof Jsr199Javac);
}
Aggregations