use of com.facebook.buck.jvm.java.DefaultJavaPackageFinder in project buck by facebook.
the class DefaultJavaPackageFinderTest method testOverlappingPathsFromRoot.
@Test
public void testOverlappingPathsFromRoot() {
DefaultJavaPackageFinder javaPackageFinder = DefaultJavaPackageFinder.createDefaultJavaPackageFinder(ImmutableList.of("/java", "/java/more/specific", "/javatests"));
assertEquals(Paths.get("com/example/base/"), javaPackageFinder.findJavaPackageFolder(Paths.get("java/com/example/base/Base.java")));
assertEquals(Paths.get("base/"), javaPackageFinder.findJavaPackageFolder(Paths.get("java/more/specific/base/Base.java")));
assertEquals(Paths.get("com/example/base/"), javaPackageFinder.findJavaPackageFolder(Paths.get("javatests/com/example/base/BaseTest.java")));
}
use of com.facebook.buck.jvm.java.DefaultJavaPackageFinder in project buck by facebook.
the class JavaPackageFinderSerializerTest method testSerializingAndDeserializing.
@Test
public void testSerializingAndDeserializing() throws Exception {
DefaultJavaPackageFinder defaultFinder = new DefaultJavaPackageFinder(ImmutableSortedSet.of("paths", "from", "root"), ImmutableSet.of("path", "elements"));
ResourcesRootPackageFinder resourcesRootFinder = new ResourcesRootPackageFinder(Paths.get("/path/to/res/root"), defaultFinder);
Map<String, Object> data = JavaPackageFinderSerializer.serialize(resourcesRootFinder);
JavaPackageFinder result = JavaPackageFinderSerializer.deserialize(data);
assertThat(result, Matchers.instanceOf(ResourcesRootPackageFinder.class));
ResourcesRootPackageFinder outResFinder = (ResourcesRootPackageFinder) result;
assertThat(outResFinder.getResourcesRoot(), Matchers.equalToObject(resourcesRootFinder.getResourcesRoot()));
JavaPackageFinder chainedFinder = outResFinder.getFallbackFinder();
assertThat(chainedFinder, Matchers.instanceOf(DefaultJavaPackageFinder.class));
DefaultJavaPackageFinder outDefFinder = (DefaultJavaPackageFinder) chainedFinder;
assertThat(outDefFinder.getPathElements(), Matchers.equalToObject(defaultFinder.getPathElements()));
assertThat(outDefFinder.getPathsFromRoot(), Matchers.equalToObject(defaultFinder.getPathsFromRoot()));
}
use of com.facebook.buck.jvm.java.DefaultJavaPackageFinder in project buck by facebook.
the class TestRunningTest method testNonGeneratedSourceFileWithoutPathElements.
@Test
public void testNonGeneratedSourceFileWithoutPathElements() throws Exception {
Path pathToNonGenFile = Paths.get("package/src/SourceFile1.java");
BuildTarget javaLibraryTarget = BuildTargetFactory.newInstance("//foo:bar");
TargetNode<JavaLibraryDescription.Arg, JavaLibraryDescription> javaLibraryNode = JavaLibraryBuilder.createBuilder(javaLibraryTarget).addSrc(pathToNonGenFile).build();
TargetGraph targetGraph = TargetGraphFactory.newInstance(javaLibraryNode);
BuildRuleResolver ruleResolver = new BuildRuleResolver(targetGraph, new DefaultTargetNodeToBuildRuleTransformer());
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(ruleResolver);
SourcePathResolver resolver = new SourcePathResolver(ruleFinder);
JavaLibrary javaLibrary = (JavaLibrary) ruleResolver.requireRule(javaLibraryTarget);
DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class);
expect(defaultJavaPackageFinder.getPathsFromRoot()).andReturn(pathsFromRoot);
expect(defaultJavaPackageFinder.getPathElements()).andReturn(ImmutableSet.of("/"));
replay(defaultJavaPackageFinder);
TestRunning.getPathToSourceFolders(javaLibrary, resolver, ruleFinder, defaultJavaPackageFinder);
verify(defaultJavaPackageFinder);
}
use of com.facebook.buck.jvm.java.DefaultJavaPackageFinder in project buck by facebook.
the class TestRunningTest method testNonGeneratedSourceFile.
/**
* If the source paths specified are all for non-generated files then we should return
* the correct source tmp corresponding to a non-generated source path.
*/
@Test
public void testNonGeneratedSourceFile() throws Exception {
Path pathToNonGenFile = Paths.get("package/src/SourceFile1.java");
BuildTarget javaLibraryTarget = BuildTargetFactory.newInstance("//foo:bar");
TargetNode<JavaLibraryDescription.Arg, JavaLibraryDescription> javaLibraryNode = JavaLibraryBuilder.createBuilder(javaLibraryTarget).addSrc(pathToNonGenFile).build();
TargetGraph targetGraph = TargetGraphFactory.newInstance(javaLibraryNode);
BuildRuleResolver ruleResolver = new BuildRuleResolver(targetGraph, new DefaultTargetNodeToBuildRuleTransformer());
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(ruleResolver);
SourcePathResolver resolver = new SourcePathResolver(ruleFinder);
JavaLibrary javaLibrary = (JavaLibrary) ruleResolver.requireRule(javaLibraryTarget);
DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class);
expect(defaultJavaPackageFinder.getPathsFromRoot()).andReturn(pathsFromRoot);
expect(defaultJavaPackageFinder.getPathElements()).andReturn(pathElements);
replay(defaultJavaPackageFinder);
ImmutableSet<String> result = TestRunning.getPathToSourceFolders(javaLibrary, resolver, ruleFinder, defaultJavaPackageFinder);
String expected = javaLibrary.getProjectFilesystem().getRootPath().resolve("package/src") + "/";
assertEquals("All non-generated source files are under one source tmp.", ImmutableSet.of(expected), result);
verify(defaultJavaPackageFinder);
}
use of com.facebook.buck.jvm.java.DefaultJavaPackageFinder in project buck by facebook.
the class TestRunningTest method testGeneratedSourceFile.
/**
* If the source paths specified are all generated files, then our path to source tmp
* should be absent.
*/
@Test
public void testGeneratedSourceFile() throws Exception {
BuildTarget genSrcTarget = BuildTargetFactory.newInstance("//:gensrc");
TargetNode<GenruleDescription.Arg, GenruleDescription> sourceGenerator = GenruleBuilder.newGenruleBuilder(genSrcTarget).setOut("com/facebook/GeneratedFile.java").build();
BuildTarget javaLibraryTarget = BuildTargetFactory.newInstance("//:lib");
TargetNode<JavaLibraryDescription.Arg, JavaLibraryDescription> javaLibraryNode = JavaLibraryBuilder.createBuilder(javaLibraryTarget).addSrcTarget(genSrcTarget).build();
TargetGraph targetGraph = TargetGraphFactory.newInstance(sourceGenerator, javaLibraryNode);
BuildRuleResolver ruleResolver = new BuildRuleResolver(targetGraph, new DefaultTargetNodeToBuildRuleTransformer());
SourcePathRuleFinder ruleFinder = new SourcePathRuleFinder(ruleResolver);
SourcePathResolver resolver = new SourcePathResolver(ruleFinder);
JavaLibrary javaLibrary = (JavaLibrary) ruleResolver.requireRule(javaLibraryTarget);
DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class);
Object[] mocks = new Object[] { defaultJavaPackageFinder };
replay(mocks);
ImmutableSet<String> result = TestRunning.getPathToSourceFolders(javaLibrary, resolver, ruleFinder, defaultJavaPackageFinder);
assertThat("No path should be returned if the library contains only generated files.", result, Matchers.empty());
verify(mocks);
}
Aggregations