aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/android/AndroidDataMergerTest.java
diff options
context:
space:
mode:
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.java106
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(