aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-06-23 23:58:36 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-06-26 18:35:16 +0200
commitaacacfa05038884e2b13898c8152d7d4c12d4e03 (patch)
tree14d1819bf29758a5a43ebeeefb5bc043dc016d01 /src/test/java/com/google/devtools/build/lib
parent43a8a9d8085a61662e4201b6b59b0b14b3bf07a3 (diff)
Fix NullPointerException when enable_data_binding is omitted.
DataBinding.isEnabled has outdated logic that enabled data binding for a rule even if only its deps use data binding. It's now required for all rules up the dependency chain to explictily enable data binding. RELNOTES: None. PiperOrigin-RevId: 159998478
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java
index 7f51679603..93d5779c43 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidDataBindingTest.java
@@ -273,4 +273,31 @@ public class AndroidDataBindingTest extends AndroidBuildViewTestCase {
.contains("java/android/lib_no_resource_files/databinding/lib_no_resource_files/"
+ "DataBindingInfo.java");
}
+
+ @Test
+ public void missingDataBindingAttributeStillAnalyzes() throws Exception {
+ // When a library is missing enable_data_binding = 1, we expect it to fail in execution (because
+ // aapt doesn't know how to read the data binding expressions). But analysis should work.
+ scratch.file("java/android/library/BUILD",
+ "android_library(",
+ " name = 'lib_with_data_binding',",
+ " enable_data_binding = 1,",
+ " manifest = 'AndroidManifest.xml',",
+ " srcs = ['MyLib.java'],",
+ " resource_files = [],",
+ ")");
+ scratch.file("java/android/library/MyLib.java",
+ "package android.library; public class MyLib {};");
+ scratch.file("java/android/binary/BUILD",
+ "android_binary(",
+ " name = 'app',",
+ " enable_data_binding = 0,",
+ " manifest = 'AndroidManifest.xml',",
+ " srcs = ['MyApp.java'],",
+ " deps = ['//java/android/library:lib_with_data_binding'],",
+ ")");
+ scratch.file("java/android/binary/MyApp.java",
+ "package android.binary; public class MyApp {};");
+ assertThat(getConfiguredTarget("//java/android/binary:app")).isNotNull();
+ }
}