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