diff options
author | Copybara-Service <copybara-worker@google.com> | 2023-09-29 17:32:43 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-09-29 17:32:43 -0700 |
commit | 0f1d00cffd3a7f5f6f61509e2df19ebc8552fb90 (patch) | |
tree | 6957bcdddb2546ebef61466a5f72a3b1eb3a8554 /test | |
parent | e43623ae35bbe9666636585436e4dff54630602c (diff) | |
parent | a9a202689aebd9f2a162588ce5356f8cdd49e5af (diff) | |
download | bazelbuild-rules_android-0f1d00cffd3a7f5f6f61509e2df19ebc8552fb90.tar.gz |
Merge pull request #95 from Bencodes:support-additional_providers-in-make_rule
PiperOrigin-RevId: 569628152
Change-Id: I4ecf2ba9b1fe425ca6c5c491394300de472a873d
Diffstat (limited to 'test')
3 files changed, 155 insertions, 0 deletions
diff --git a/test/rules/android_library_extensibility/BUILD b/test/rules/android_library_extensibility/BUILD new file mode 100644 index 0000000..99706ce --- /dev/null +++ b/test/rules/android_library_extensibility/BUILD @@ -0,0 +1,28 @@ +load(":custom_android_library.bzl", "custom_android_library") +load(":test.bzl", "custom_android_library_test") + +package( + default_applicable_licenses = ["//:license"], + default_visibility = + ["//:__subpackages__"], +) + +licenses(["notice"]) + +custom_android_library( + name = "custom_android_library", + testonly = True, + key = "test_key", +) + +custom_android_library_test( + name = "custom_android_library_test", + lib = ":custom_android_library", +) + +test_suite( + name = "integration_tests", + tests = [ + ":custom_android_library_test", + ], +) diff --git a/test/rules/android_library_extensibility/custom_android_library.bzl b/test/rules/android_library_extensibility/custom_android_library.bzl new file mode 100644 index 0000000..a58fd1e --- /dev/null +++ b/test/rules/android_library_extensibility/custom_android_library.bzl @@ -0,0 +1,86 @@ +# Copyright 2023 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Custom android_library for use in test.bzl""" + +load( + "//rules:attrs.bzl", + _attrs = "attrs", +) +load( + "//rules:java.bzl", + _java = "java", +) +load( + "//rules:processing_pipeline.bzl", + _ProviderInfo = "ProviderInfo", + _processing_pipeline = "processing_pipeline", +) +load( + "//rules/android_library:attrs.bzl", + _BASE_ATTRS = "ATTRS", +) +load( + "//rules/android_library:impl.bzl", + _BASE_PROCESSORS = "PROCESSORS", + _finalize = "finalize", +) +load( + "//rules/android_library:rule.bzl", + _make_rule = "make_rule", +) + +CustomProviderInfo = provider( + doc = "Custom provider to provide", + fields = dict( + key = "Some key to provide", + ), +) + +def _process_custom_provider(ctx, **_unused_sub_ctxs): + return _ProviderInfo( + name = "custom_provider_ctx", + value = struct( + providers = [ + CustomProviderInfo( + key = ctx.attr.key, + ), + ], + ), + ) + +PROCESSORS = _processing_pipeline.append( + _BASE_PROCESSORS, + CustomProviderInfoProcessor = _process_custom_provider, +) + +_PROCESSING_PIPELINE = _processing_pipeline.make_processing_pipeline( + processors = PROCESSORS, + finalize = _finalize, +) + +def _impl(ctx): + java_package = _java.resolve_package_from_label(ctx.label, ctx.attr.custom_package) + return _processing_pipeline.run(ctx, java_package, _PROCESSING_PIPELINE) + +custom_android_library = _make_rule( + implementation = _impl, + attrs = _attrs.add(_BASE_ATTRS, dict( + # Custom attribute to wrap in a provider + key = attr.string(), + )), + additional_providers = [ + CustomProviderInfo, + ], +) diff --git a/test/rules/android_library_extensibility/test.bzl b/test/rules/android_library_extensibility/test.bzl new file mode 100644 index 0000000..78aa9c1 --- /dev/null +++ b/test/rules/android_library_extensibility/test.bzl @@ -0,0 +1,41 @@ +# Copyright 2023 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tests for the extensibility functionality of android_library.""" + +load( + "//test/utils:lib.bzl", + "asserts", + "unittest", +) +load( + ":custom_android_library.bzl", + "CustomProviderInfo", +) + +def custom_android_library_test_impl(ctx): + env = unittest.begin(ctx) + + # Assert that the custom provider exists + asserts.true(env, CustomProviderInfo in ctx.attr.lib) + asserts.equals(env, ctx.attr.lib[CustomProviderInfo].key, "test_key") + + return unittest.end(env) + +custom_android_library_test = unittest.make( + impl = custom_android_library_test_impl, + attrs = { + "lib": attr.label(providers = [CustomProviderInfo]), + }, +) |