diff options
author | 2017-06-23 23:58:36 +0200 | |
---|---|---|
committer | 2017-06-26 18:35:16 +0200 | |
commit | aacacfa05038884e2b13898c8152d7d4c12d4e03 (patch) | |
tree | 14d1819bf29758a5a43ebeeefb5bc043dc016d01 /src/test/java/com/google/devtools/build/lib | |
parent | 43a8a9d8085a61662e4201b6b59b0b14b3bf07a3 (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.java | 27 |
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(); + } } |