Replace `createMock(BuildableContext.class)` with `new FakeBuildableContext()`.
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 4d2f5bf..84e62f6 100644
--- a/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
+++ b/test/com/facebook/buck/android/DexProducedFromJavaLibraryThatContainsClassFilesTest.java
@@ -27,7 +27,7 @@
import com.facebook.buck.model.BuildTarget;
import com.facebook.buck.rules.AbiRule;
import com.facebook.buck.rules.BuildContext;
-import com.facebook.buck.rules.BuildableContext;
+import com.facebook.buck.rules.FakeBuildableContext;
import com.facebook.buck.rules.Sha1HashCode;
import com.facebook.buck.step.ExecutionContext;
import com.facebook.buck.step.Step;
@@ -62,7 +62,7 @@
expect(accumulateClassNames.getJavaLibraryRule()).andReturn(javaLibraryRule);
BuildContext context = createMock(BuildContext.class);
- BuildableContext buildableContext = createMock(BuildableContext.class);
+ FakeBuildableContext buildableContext = new FakeBuildableContext();
replayAll();
@@ -107,16 +107,19 @@
verifyAll();
resetAll();
- buildableContext.recordArtifact(Paths.get("bar.dex.jar"));
Sha1HashCode abiKey = new Sha1HashCode("f7f34ed13b881c6c6f663533cde4a436ea84435e");
expect(accumulateClassNames.getAbiKey()).andReturn(abiKey);
- buildableContext.addMetadata(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA, abiKey.getHash());
- buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, abiKey.getHash());
replayAll();
Step recordArtifactAndMetadataStep = steps.get(3);
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.assertContainsMetadataMapping(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA,
+ abiKey.getHash());
+ buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+ abiKey.getHash());
verifyAll();
}
@@ -128,7 +131,7 @@
ImmutableSortedMap.<String, HashCode>of());
BuildContext context = createMock(BuildContext.class);
- BuildableContext buildableContext = createMock(BuildableContext.class);
+ FakeBuildableContext buildableContext = new FakeBuildableContext();
replayAll();
@@ -165,13 +168,15 @@
Sha1HashCode abiKey = new Sha1HashCode(AbiWriterProtocol.EMPTY_ABI_KEY);
expect(accumulateClassNames.getAbiKey()).andReturn(abiKey);
- buildableContext.addMetadata(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA, abiKey.getHash());
- buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, abiKey.getHash());
replayAll();
Step recordArtifactAndMetadataStep = steps.get(2);
int exitCode = recordArtifactAndMetadataStep.execute(executionContext);
assertEquals(0, exitCode);
+ buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_FOR_DEPS_ON_DISK_METADATA,
+ abiKey.getHash());
+ buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+ abiKey.getHash());
verifyAll();
}
diff --git a/test/com/facebook/buck/java/AccumulateClassNamesTest.java b/test/com/facebook/buck/java/AccumulateClassNamesTest.java
index 9c1dbcf..1a20f62 100644
--- a/test/com/facebook/buck/java/AccumulateClassNamesTest.java
+++ b/test/com/facebook/buck/java/AccumulateClassNamesTest.java
@@ -28,8 +28,8 @@
import com.facebook.buck.rules.BuildRule;
import com.facebook.buck.rules.BuildRuleResolver;
import com.facebook.buck.rules.BuildRuleType;
-import com.facebook.buck.rules.BuildableContext;
import com.facebook.buck.rules.FakeAbstractBuildRuleBuilderParams;
+import com.facebook.buck.rules.FakeBuildableContext;
import com.facebook.buck.rules.OnDiskBuildInfo;
import com.facebook.buck.rules.Sha1HashCode;
import com.facebook.buck.step.ExecutionContext;
@@ -88,7 +88,7 @@
// Mock out objects so getBuildSteps() can be invoked.
BuildContext buildContext = createMock(BuildContext.class);
- BuildableContext buildableContext = createMock(BuildableContext.class);
+ FakeBuildableContext buildableContext = new FakeBuildableContext();
// Create the build steps.
replayAll();
@@ -119,20 +119,16 @@
ImmutableSortedMap<String, HashCode> classNames = ImmutableSortedMap.of();
accumulateClassNamesStep.setClassNamesForTesting(classNames);
- resetAll();
- String expectedAbiKey = AbiWriterProtocol.EMPTY_ABI_KEY;
- buildableContext.addMetadata(AbiRule.ABI_KEY_ON_DISK_METADATA, expectedAbiKey);
- replayAll();
-
// Invoke the recordAbiStep and ensure the correct data is recorded.
Step recordAbiStep = steps.get(3);
int exitCode = recordAbiStep.execute(context);
+ String expectedAbiKey = AbiWriterProtocol.EMPTY_ABI_KEY;
+ buildableContext.assertContainsMetadataMapping(AbiRule.ABI_KEY_ON_DISK_METADATA,
+ expectedAbiKey);
assertEquals(0, exitCode);
assertEquals("Should be the empty ABI key because the classNames map is empty.",
new Sha1HashCode(expectedAbiKey),
accumulateClassNames.getAbiKey());
-
- verifyAll();
}
@Test
diff --git a/test/com/facebook/buck/rules/BUCK b/test/com/facebook/buck/rules/BUCK
index 7ee4b12..160c7e5 100644
--- a/test/com/facebook/buck/rules/BUCK
+++ b/test/com/facebook/buck/rules/BUCK
@@ -14,6 +14,7 @@
deps = [
'//lib:guava',
'//lib:jsr305',
+ '//lib:junit',
'//src/com/facebook/buck/model:model',
'//src/com/facebook/buck/parser:rule_pattern',
'//src/com/facebook/buck/rules:build_rule',
diff --git a/test/com/facebook/buck/rules/FakeBuildableContext.java b/test/com/facebook/buck/rules/FakeBuildableContext.java
index 1a90c48..f932fbf 100644
--- a/test/com/facebook/buck/rules/FakeBuildableContext.java
+++ b/test/com/facebook/buck/rules/FakeBuildableContext.java
@@ -16,6 +16,10 @@
package com.facebook.buck.rules;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
@@ -58,4 +62,11 @@
public ImmutableSet<Path> getRecordedArtifacts() {
return ImmutableSet.copyOf(artifacts);
}
+
+ public void assertContainsMetadataMapping(String key, String value) {
+ assertNotNull(key);
+ assertNotNull(value);
+ assertTrue(metadata.containsKey(key));
+ assertEquals(value, metadata.get(key));
+ }
}