Add support for databinding in android_local_test.

Note that Android tests can successfully depend on libraries that have databinding enabled, but they seem to miss top-level generated files such as androidx.databinding.DataBinderMapperImpl which seems to only be generated in terminal/binary nodes in the build graph. This updates android_local_test to behave more like android_binary.

Much of the code added to AndroidLocalTestBase is copied from AndroidCommon since it doesn't rely on AndroidCommon like AndroidLibrary, AndroidBinary, and AndroidTest do.

Note that from what I can tell, this doesn't actually use the test-based parameters for the databinding tools and instead treats the build like android_binary. That seems to be consistent with android_test.

Finally, this will introduce an incompatibility with kt_android_library: if the test itself wants to do any databinding generation, it won't work without a package change since the Kotlin code needs to be compiled in a separate library (which would need databinding enabled).

The new test is mainly verifying that databinding properties are correctly being passed for android_local_test. The new databinding-specific test was verified as failing without the AndroidLocalTestBase changes.

RELNOTES: Fix data-binding generation for android_local_test.
PiperOrigin-RevId: 339386521
3 files changed
tree: b3ccb4ba6d9cd8072ed955c22c17c8734257f93e
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEBASE.md
  15. CODEOWNERS
  16. combine_distfiles.py
  17. combine_distfiles_to_tar.sh
  18. compile.sh
  19. CONTRIBUTING.md
  20. CONTRIBUTORS
  21. distdir.bzl
  22. ISSUE_TEMPLATE.md
  23. LICENSE
  24. README.md
  25. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.

  • One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.

  • Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.

  • Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status