Replace `createMock(JavaLibraryRule.class)` with `new FakeJavaLibraryRule()`. Summary: As promised, I am trying to address my abuse of mocks by replacing them with fakes. Test Plan: Sandcastle builds.
diff --git a/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java b/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java index 84e62f6..1d2a348 100644 --- a/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java +++ b/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
@@ -22,7 +22,7 @@ import static org.junit.Assert.assertTrue; import com.facebook.buck.java.AccumulateClassNames; -import com.facebook.buck.java.JavaLibraryRule; +import com.facebook.buck.java.FakeJavaLibraryRule; import com.facebook.buck.java.abi.AbiWriterProtocol; import com.facebook.buck.model.BuildTarget; import com.facebook.buck.rules.AbiRule; @@ -53,8 +53,8 @@ @Test public void testGetBuildStepsWhenThereAreClassesToDex() throws IOException { - JavaLibraryRule javaLibraryRule = createMock(JavaLibraryRule.class); - expect(javaLibraryRule.getPathToOutputFile()).andReturn("buck-out/gen/foo/bar.jar"); + FakeJavaLibraryRule javaLibraryRule = new FakeJavaLibraryRule(new BuildTarget("//foo", "bar")); + javaLibraryRule.setOutputFile("buck-out/gen/foo/bar.jar"); AccumulateClassNames accumulateClassNames = createMock(AccumulateClassNames.class); expect(accumulateClassNames.getClassNames()).andReturn( @@ -66,7 +66,7 @@ replayAll(); - BuildTarget buildTarget = new BuildTarget("//foo", "bar"); + BuildTarget buildTarget = new BuildTarget("//foo", "bar", "dex"); DexProducedFromJavaLibraryThatContainsClassFiles preDex = new DexProducedFromJavaLibraryThatContainsClassFiles(buildTarget, accumulateClassNames); List<Step> steps = preDex.getBuildSteps(context, buildableContext); @@ -80,8 +80,8 @@ ProjectFilesystem projectFilesystem = createMock(ProjectFilesystem.class); expect(projectFilesystem.resolve(Paths.get("buck-out/gen/foo"))) .andReturn(Paths.get("/home/user/buck-out/gen/foo")); - expect(projectFilesystem.resolve(Paths.get("buck-out/gen/foo/bar.dex.jar"))) - .andReturn(Paths.get("/home/user/buck-out/gen/foo/bar.dex.jar")); + expect(projectFilesystem.resolve(Paths.get("buck-out/gen/foo/bar#dex.dex.jar"))) + .andReturn(Paths.get("/home/user/buck-out/gen/foo/bar#dex.dex.jar")); expect(projectFilesystem.resolve(Paths.get("buck-out/gen/foo/bar.jar"))) .andReturn(Paths.get("/home/user/buck-out/gen/foo/bar.jar")); replayAll(); @@ -93,11 +93,11 @@ .build(); String expectedDxCommand = "/usr/bin/dx" + - " --dex --no-optimize --force-jumbo --output buck-out/gen/foo/bar.dex.jar " + + " --dex --no-optimize --force-jumbo --output buck-out/gen/foo/bar#dex.dex.jar " + "/home/user/buck-out/gen/foo/bar.jar"; MoreAsserts.assertSteps("Generate bar.dex.jar.", ImmutableList.of( - "rm -f /home/user/buck-out/gen/foo/bar.dex.jar", + "rm -f /home/user/buck-out/gen/foo/bar#dex.dex.jar", "mkdir -p /home/user/buck-out/gen/foo", expectedDxCommand, "record_dx_success"), @@ -115,7 +115,7 @@ int exitCode = recordArtifactAndMetadataStep.execute(executionContext); assertEquals(0, exitCode); assertTrue("The generated .dex.jar file should be in the set of recorded artifacts.", - buildableContext.getRecordedArtifacts().contains(Paths.get("bar.dex.jar"))); + buildableContext.getRecordedArtifacts().contains(Paths.get("bar#dex.dex.jar"))); buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA, abiKey.getHash()); buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
diff --git a/test/com/facebook/buck/cli/BUCK b/test/com/facebook/buck/cli/BUCK index 624c0f6..9995d00 100644 --- a/test/com/facebook/buck/cli/BUCK +++ b/test/com/facebook/buck/cli/BUCK
@@ -95,6 +95,7 @@ '//src/com/facebook/buck/util/environment:environment', '//src/com/facebook/buck/timing:timing', '//test/com/facebook/buck/event:testutil', + '//test/com/facebook/buck/java:fakes', '//test/com/facebook/buck/model:BuildTargetFactory', '//test/com/facebook/buck/parser:PartialGraphFactory', '//test/com/facebook/buck/rules:testutil',
diff --git a/test/com/facebook/buck/cli/TestCommandTest.java b/test/com/facebook/buck/cli/TestCommandTest.java index e50a7ae..219d1ed 100644 --- a/test/com/facebook/buck/cli/TestCommandTest.java +++ b/test/com/facebook/buck/cli/TestCommandTest.java
@@ -30,8 +30,10 @@ import com.facebook.buck.graph.MutableDirectedGraph; import com.facebook.buck.java.DefaultJavaPackageFinder; +import com.facebook.buck.java.FakeJavaLibraryRule; import com.facebook.buck.java.JavaLibraryRule; import com.facebook.buck.java.JavaTestRule; +import com.facebook.buck.model.BuildTarget; import com.facebook.buck.model.BuildTargetFactory; import com.facebook.buck.model.BuildTargetPattern; import com.facebook.buck.rules.BuildRule; @@ -95,17 +97,15 @@ assertTrue(JavaTestRule.isGeneratedFile(pathToGenFile)); ImmutableSortedSet<String> javaSrcs = ImmutableSortedSet.of(pathToGenFile); - - JavaLibraryRule javaLibraryRule = createMock(JavaLibraryRule.class); - expect(javaLibraryRule.getJavaSrcs()) - .andReturn(ImmutableSortedSet.copyOf(javaSrcs)); + JavaLibraryRule javaLibraryRule = new FakeJavaLibraryRule(new BuildTarget("//foo", "bar")) + .setJavaSrcs(javaSrcs); DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class); ProjectFilesystem projectFilesystem = createMock(ProjectFilesystem.class); - Object[] mocks = new Object[] {projectFilesystem, defaultJavaPackageFinder, javaLibraryRule}; + Object[] mocks = new Object[] {projectFilesystem, defaultJavaPackageFinder}; replay(mocks); ImmutableSet<String> result = TestCommand.getPathToSourceFolders( @@ -127,6 +127,8 @@ assertFalse(JavaTestRule.isGeneratedFile(pathToNonGenFile)); ImmutableSortedSet<String> javaSrcs = ImmutableSortedSet.of(pathToNonGenFile); + JavaLibraryRule javaLibraryRule = new FakeJavaLibraryRule(new BuildTarget("//foo", "bar")) + .setJavaSrcs(javaSrcs); File parentFile = createMock(File.class); expect(parentFile.getName()).andReturn("src"); @@ -144,16 +146,11 @@ expect(projectFilesystem.getFileForRelativePath(pathToNonGenFile)) .andReturn(sourceFile); - JavaLibraryRule javaLibraryRule = createMock(JavaLibraryRule.class); - expect(javaLibraryRule.getJavaSrcs()) - .andReturn(ImmutableSortedSet.copyOf(javaSrcs)); - Object[] mocks = new Object[] { parentFile, sourceFile, defaultJavaPackageFinder, - projectFilesystem, - javaLibraryRule}; + projectFilesystem}; replay(mocks); ImmutableSet<String> result = TestCommand.getPathToSourceFolders( @@ -175,6 +172,8 @@ assertFalse(JavaTestRule.isGeneratedFile(pathToNonGenFile)); ImmutableSortedSet<String> javaSrcs = ImmutableSortedSet.of(pathToNonGenFile); + JavaLibraryRule javaLibraryRule = new FakeJavaLibraryRule(new BuildTarget("//foo", "bar")) + .setJavaSrcs(javaSrcs); DefaultJavaPackageFinder defaultJavaPackageFinder = createMock(DefaultJavaPackageFinder.class); @@ -182,11 +181,7 @@ ProjectFilesystem projectFilesystem = createMock(ProjectFilesystem.class); - JavaLibraryRule javaLibraryRule = createMock(JavaLibraryRule.class); - expect(javaLibraryRule.getJavaSrcs()) - .andReturn(ImmutableSortedSet.copyOf(javaSrcs)); - - Object[] mocks = new Object[] {defaultJavaPackageFinder, projectFilesystem, javaLibraryRule}; + Object[] mocks = new Object[] {defaultJavaPackageFinder, projectFilesystem}; replay(mocks); ImmutableSet<String> result = TestCommand.getPathToSourceFolders( @@ -237,9 +232,8 @@ expect(projectFilesystem.getFileForRelativePath(pathToNonGenFile2)) .andReturn(sourceFile2); - JavaLibraryRule javaLibraryRule = createMock(JavaLibraryRule.class); - expect(javaLibraryRule.getJavaSrcs()) - .andReturn(ImmutableSortedSet.copyOf(javaSrcs)); + JavaLibraryRule javaLibraryRule = new FakeJavaLibraryRule(new BuildTarget("//foo", "bar")) + .setJavaSrcs(javaSrcs); Object[] mocks = new Object[] { parentFile1, @@ -247,8 +241,7 @@ parentFile2, sourceFile2, defaultJavaPackageFinder, - projectFilesystem, - javaLibraryRule}; + projectFilesystem}; replay(mocks); ImmutableSet<String> result = TestCommand.getPathToSourceFolders(
diff --git a/test/com/facebook/buck/java/AccumulateClassNamesTest.java b/test/com/facebook/buck/java/AccumulateClassNamesTest.java index 1a20f62..8354b73 100644 --- a/test/com/facebook/buck/java/AccumulateClassNamesTest.java +++ b/test/com/facebook/buck/java/AccumulateClassNamesTest.java
@@ -134,12 +134,9 @@ @Test public void testInitializeFromDisk() throws IOException { BuildTarget buildTarget = new BuildTarget("//foo", "bar"); - JavaLibraryRule javaRule = createMock(JavaLibraryRule.class); + JavaLibraryRule javaRule = new FakeJavaLibraryRule(buildTarget); - replayAll(); AccumulateClassNames accumulateClassNames = new AccumulateClassNames(buildTarget, javaRule); - verifyAll(); - resetAll(); OnDiskBuildInfo onDiskBuildInfo = createMock(OnDiskBuildInfo.class); List<String> lines = ImmutableList.of(
diff --git a/test/com/facebook/buck/java/FakeJavaLibraryRule.java b/test/com/facebook/buck/java/FakeJavaLibraryRule.java index 4a337a0..ef57e17 100644 --- a/test/com/facebook/buck/java/FakeJavaLibraryRule.java +++ b/test/com/facebook/buck/java/FakeJavaLibraryRule.java
@@ -26,6 +26,7 @@ import com.facebook.buck.rules.BuildableProperties; import com.facebook.buck.rules.FakeBuildRule; import com.facebook.buck.rules.Sha1HashCode; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.ImmutableSortedSet; @@ -34,6 +35,8 @@ private final static BuildableProperties OUTPUT_TYPE = new BuildableProperties(LIBRARY); + private ImmutableSortedSet<String> srcs = ImmutableSortedSet.of(); + public FakeJavaLibraryRule( BuildRuleType type, BuildTarget target, @@ -42,6 +45,10 @@ super(type, target, deps, visibilityPatterns); } + public FakeJavaLibraryRule(BuildTarget target) { + super(BuildRuleType.JAVA_LIBRARY, target); + } + @Override public BuildableProperties getProperties() { return OUTPUT_TYPE; @@ -64,7 +71,12 @@ @Override public ImmutableSortedSet<String> getJavaSrcs() { - return ImmutableSortedSet.of(); + return srcs; + } + + public FakeJavaLibraryRule setJavaSrcs(ImmutableSortedSet<String> srcs) { + this.srcs = Preconditions.checkNotNull(srcs); + return this; } @Override