diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java | 106 |
1 files changed, 73 insertions, 33 deletions
diff --git a/src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java b/src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java index 1444b83fd6..e28d65ceb3 100644 --- a/src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java +++ b/src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java @@ -25,6 +25,7 @@ import com.google.common.jimfs.Jimfs; import com.google.common.truth.FailureStrategy; import com.google.common.truth.SubjectFactory; import com.google.devtools.build.android.AndroidDataBuilder.ResourceType; +import com.google.devtools.build.android.AndroidDataMerger.MergeConflictException; import com.google.devtools.build.android.AndroidDataMerger.SourceChecker; import com.google.devtools.build.android.xml.IdXmlResourceValue; import com.google.devtools.build.android.xml.PublicXmlResourceValue; @@ -102,7 +103,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -161,7 +162,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -226,7 +227,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData transitive = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -276,7 +277,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( @@ -325,7 +326,7 @@ public class AndroidDataMergerTest { }); assertAbout(unwrittenMergedAndroidData) - .that(merger.merge(transitiveDependency, directDependency, primary, false)) + .that(merger.merge(transitiveDependency, directDependency, primary, false, true)) .isEqualTo( UnwrittenMergedAndroidData.of( primary.getManifest(), @@ -367,7 +368,7 @@ public class AndroidDataMergerTest { .buildUnvalidated(); AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); assertThat(loggingHandler.warnings).isEmpty(); } @@ -402,7 +403,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, true); + merger.merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( primary.getManifest(), @@ -442,7 +443,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( @@ -489,7 +490,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, true); + merger.merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( primary.getManifest(), @@ -533,7 +534,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( @@ -578,23 +579,62 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); FullyQualifiedName fullyQualifiedName = fqnFactory.parse("string/exit"); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( - fullyQualifiedName, - DataResourceXml.createWithNoNamespace( - directRoot.resolve("res/values/strings.xml"), - SimpleXmlResourceValue.createWithValue(Type.STRING, "no way out")), - DataResourceXml.createWithNoNamespace( - transitiveRoot.resolve("res/values/strings.xml"), - SimpleXmlResourceValue.createWithValue(Type.STRING, "wrong way out"))) + fullyQualifiedName, + DataResourceXml.createWithNoNamespace( + directRoot.resolve("res/values/strings.xml"), + SimpleXmlResourceValue.createWithValue(Type.STRING, "no way out")), + DataResourceXml.createWithNoNamespace( + transitiveRoot.resolve("res/values/strings.xml"), + SimpleXmlResourceValue.createWithValue(Type.STRING, "wrong way out"))) .toConflictMessage()); } @Test + public void mergeDirectTransitivePrimaryConflictWithThrowOnConflict() throws Exception { + Path primaryRoot = fileSystem.getPath("primary"); + Path directRoot = fileSystem.getPath("direct"); + Path transitiveRoot = fileSystem.getPath("transitive"); + + ParsedAndroidData transitiveDependency = + ParsedAndroidDataBuilder.buildOn(transitiveRoot, fqnFactory) + .overwritable( + xml("string/exit") + .source("values/strings.xml") + .value(SimpleXmlResourceValue.createWithValue(Type.STRING, "no way out"))) + .build(); + + ParsedAndroidData directDependency = + ParsedAndroidDataBuilder.buildOn(directRoot, fqnFactory) + .overwritable( + xml("string/exit") + .source("values/strings.xml") + .value(SimpleXmlResourceValue.createWithValue(Type.STRING, "wrong way out"))) + .build(); + + UnvalidatedAndroidData primary = + AndroidDataBuilder.of(primaryRoot) + .createManifest("AndroidManifest.xml", "com.google.mergetest") + .addResource( + "values/strings.xml", ResourceType.VALUE, "<string name='exit'>way out</string>") + .buildUnvalidated(); + + AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); + + try { + merger.merge(transitiveDependency, directDependency, primary, false, true); + throw new Exception("Expected a MergeConflictException!"); + } catch (MergeConflictException e) { + return; + } + } + + @Test public void mergeDirectTransitivePrimaryConflictWithPrimaryOverride() throws Exception { Path primaryRoot = fileSystem.getPath("primary"); Path directRoot = fileSystem.getPath("direct"); @@ -629,7 +669,7 @@ public class AndroidDataMergerTest { UnwrittenMergedAndroidData data = AndroidDataMerger.createWithDefaults() - .merge(transitiveDependency, directDependency, primary, true); + .merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -667,7 +707,7 @@ public class AndroidDataMergerTest { .buildUnvalidated(); AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( @@ -699,7 +739,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -753,7 +793,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -816,7 +856,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -885,7 +925,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -948,7 +988,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -996,7 +1036,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( @@ -1034,7 +1074,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( @@ -1073,7 +1113,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, true); + merger.merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( primary.getManifest(), @@ -1109,7 +1149,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( @@ -1140,7 +1180,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); UnwrittenMergedAndroidData data = - merger.merge(transitiveDependency, directDependency, primary, true); + merger.merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( primary.getManifest(), @@ -1174,7 +1214,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( @@ -1209,7 +1249,7 @@ public class AndroidDataMergerTest { AndroidDataMerger merger = AndroidDataMerger.createWithDefaults(); - merger.merge(transitiveDependency, directDependency, primary, false); + merger.merge(transitiveDependency, directDependency, primary, false, false); assertThat(loggingHandler.warnings) .containsExactly( MergeConflict.of( @@ -1248,7 +1288,7 @@ public class AndroidDataMergerTest { UnwrittenMergedAndroidData data = AndroidDataMerger.createWithDefaults() - .merge(transitiveDependency, directDependency, primary, true); + .merge(transitiveDependency, directDependency, primary, true, true); UnwrittenMergedAndroidData expected = UnwrittenMergedAndroidData.of( |