diff options
author | janakr <janakr@google.com> | 2018-03-09 11:21:33 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-09 11:23:09 -0800 |
commit | 05b41a0aeb342c7cfc77f9affbf0f3b4fafcb7d6 (patch) | |
tree | 572679a6017b7a5734811d6750c343ecf70e8fab /src/test/java/com/google/devtools/build | |
parent | a8b5ec677dd49cfff25d0439edbcc742e3e32017 (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/google/devtools/build')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/analysis/config/BuildOptionsTest.java | 20 |
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); } } |