/** * If the source paths specified contains one source path to a non-generated file then we should * return the correct source tmp corresponding to that non-generated source path. Especially when * the generated file comes first in the ordered set. */ @Test public void testMixedSourceFile() { Path pathToGenFile = GEN_PATH.resolve("com/facebook/GeneratedFile.java"); Path pathToNonGenFile1 = Paths.get("package/src/SourceFile1.java"); Path pathToNonGenFile2 = Paths.get("package/src-gen/SourceFile2.java"); ImmutableSortedSet<Path> javaSrcs = ImmutableSortedSet.of(pathToGenFile, pathToNonGenFile1, pathToNonGenFile2); DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class); expect(defaultJavaPackageFinder.getPathsFromRoot()).andReturn(pathsFromRoot).times(2); expect(defaultJavaPackageFinder.getPathElements()).andReturn(pathElements).times(2); JavaLibrary javaLibrary = new FakeJavaLibrary( BuildTarget.builder("//foo", "bar").build(), new SourcePathResolver(new BuildRuleResolver())) .setJavaSrcs(javaSrcs); replay(defaultJavaPackageFinder); ImmutableSet<String> result = TestRunning.getPathToSourceFolders( javaLibrary, Optional.of(defaultJavaPackageFinder), new FakeProjectFilesystem()); assertEquals( "The non-generated source files are under two different source folders.", ImmutableSet.of("./package/src-gen/", "./package/src/"), result); verify(defaultJavaPackageFinder); }
/** * If the source paths specified are all generated files, then our path to source tmp should be * absent. */ @Test public void testGeneratedSourceFile() { Path pathToGenFile = GEN_PATH.resolve("GeneratedFile.java"); assertTrue(MorePaths.isGeneratedFile(pathToGenFile)); ImmutableSortedSet<Path> javaSrcs = ImmutableSortedSet.of(pathToGenFile); JavaLibrary javaLibrary = new FakeJavaLibrary( BuildTarget.builder("//foo", "bar").build(), new SourcePathResolver(new BuildRuleResolver())) .setJavaSrcs(javaSrcs); DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class); Object[] mocks = new Object[] {defaultJavaPackageFinder}; replay(mocks); ImmutableSet<String> result = TestRunning.getPathToSourceFolders( javaLibrary, Optional.of(defaultJavaPackageFinder), new FakeProjectFilesystem()); assertTrue( "No path should be returned if the library contains only generated files.", result.isEmpty()); verify(mocks); }