aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-03-09 11:21:33 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-09 11:23:09 -0800
commit05b41a0aeb342c7cfc77f9affbf0f3b4fafcb7d6 (patch)
tree572679a6017b7a5734811d6750c343ecf70e8fab /src/test/java/com
parenta8b5ec677dd49cfff25d0439edbcc742e3e32017 (diff)
Add the ability to reconstruct a BuildOptions from the diff with another BuildOptions. Motivation is that the diffs are likely to be much smaller than the actual BuildOptions objects themselves, so in places we need a BuildOptions (I'm looking at you, BuildConfigurationValue.Key), we can instead store a diff, reconstructing the BuildOptions object itself on demand when needed.
PiperOrigin-RevId: 188511251
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
index 433d8cdce6..9c796eff51 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java
@@ -98,7 +98,23 @@ public class BuildOptionsTest {
OptionsDiff diff = BuildOptions.diff(one, two);
assertThat(diff.areSame()).isFalse();
- assertThat(diff.getExtraFirstFragments()).containsExactly(CppOptions.class);
- assertThat(diff.getExtraSecondFragments()).isEqualTo(TEST_OPTIONS);
+ assertThat(diff.getExtraFirstFragmentClasses()).containsExactly(CppOptions.class);
+ assertThat(diff.getExtraSecondFragmentClasses()).containsExactlyElementsIn(TEST_OPTIONS);
+ }
+
+ @Test
+ public void applyDiff() throws Exception {
+ BuildOptions one = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=opt", "cpu=k8");
+ BuildOptions two = BuildOptions.of(TEST_OPTIONS, "--compilation_mode=dbg", "cpu=k8");
+ BuildOptions reconstructedTwo = one.applyDiff(BuildOptions.diffForReconstruction(one, two));
+ assertThat(reconstructedTwo).isEqualTo(two);
+ assertThat(reconstructedTwo).isNotSameAs(two);
+ BuildOptions reconstructedOne = one.applyDiff(BuildOptions.diffForReconstruction(one, one));
+ assertThat(reconstructedOne).isSameAs(one);
+ BuildOptions otherFragment = BuildOptions.of(ImmutableList.of(CppOptions.class));
+ assertThat(one.applyDiff(BuildOptions.diffForReconstruction(one, otherFragment)))
+ .isEqualTo(otherFragment);
+ assertThat(otherFragment.applyDiff(BuildOptions.diffForReconstruction(otherFragment, one)))
+ .isEqualTo(one);
}
}