diff options
| -rw-r--r-- | android/license_kind.go | 31 | ||||
| -rw-r--r-- | bp2build/Android.bp | 1 | ||||
| -rw-r--r-- | bp2build/license_kind_conversion_test.go | 69 |
3 files changed, 100 insertions, 1 deletions
diff --git a/android/license_kind.go b/android/license_kind.go index 838deddd2..24b91e4c2 100644 --- a/android/license_kind.go +++ b/android/license_kind.go @@ -14,6 +14,8 @@ package android +import "android/soong/bazel" + func init() { RegisterLicenseKindBuildComponents(InitRegistrationContext) } @@ -32,13 +34,39 @@ type licenseKindProperties struct { Visibility []string } +var _ Bazelable = &licenseKindModule{} + type licenseKindModule struct { ModuleBase DefaultableModuleBase + BazelModuleBase properties licenseKindProperties } +type bazelLicenseKindAttributes struct { + Conditions []string + Url string + Visibility []string +} + +func (m *licenseKindModule) ConvertWithBp2build(ctx TopDownMutatorContext) { + attrs := &bazelLicenseKindAttributes{ + Conditions: m.properties.Conditions, + Url: m.properties.Url, + Visibility: m.properties.Visibility, + } + ctx.CreateBazelTargetModule( + bazel.BazelTargetModuleProperties{ + Rule_class: "license_kind", + Bzl_load_location: "@rules_license//rules:license_kind.bzl", + }, + CommonAttributes{ + Name: m.Name(), + }, + attrs) +} + func (m *licenseKindModule) DepsMutator(ctx BottomUpMutatorContext) { // Nothing to do. } @@ -51,13 +79,14 @@ func LicenseKindFactory() Module { module := &licenseKindModule{} base := module.base() - module.AddProperties(&base.nameProperties, &module.properties) + module.AddProperties(&base.nameProperties, &module.properties, &base.commonProperties.BazelConversionStatus) // The visibility property needs to be checked and parsed by the visibility module. setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility) initAndroidModuleBase(module) InitDefaultableModule(module) + InitBazelModule(module) return module } diff --git a/bp2build/Android.bp b/bp2build/Android.bp index 8aef66f59..a3f618ef7 100644 --- a/bp2build/Android.bp +++ b/bp2build/Android.bp @@ -64,6 +64,7 @@ bootstrap_go_package { "java_plugin_conversion_test.go", "java_proto_conversion_test.go", "license_conversion_test.go", + "license_kind_conversion_test.go", "linker_config_conversion_test.go", "ndk_headers_conversion_test.go", "performance_test.go", diff --git a/bp2build/license_kind_conversion_test.go b/bp2build/license_kind_conversion_test.go new file mode 100644 index 000000000..eda116c5a --- /dev/null +++ b/bp2build/license_kind_conversion_test.go @@ -0,0 +1,69 @@ +// Copyright 2022 Google Inc. 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. + +package bp2build + +import ( + "android/soong/android" + "testing" +) + +func registerLicenseKindModuleTypes(_ android.RegistrationContext) {} + +func TestLicenseKindBp2Build(t *testing.T) { + tests := []struct { + description string + module string + expected ExpectedRuleTarget + }{ + { + description: "license_kind", + module: ` +license_kind { + name: "my_license", + conditions: [ + "by_exception_only", + "not_allowed", + ], + url: "https://spdx.org/licenses/0BSD", + visibility: ["//visibility:public"], +}`, + expected: ExpectedRuleTarget{ + "license_kind", + "my_license", + AttrNameToString{ + "conditions": `[ + "by_exception_only", + "not_allowed", + ]`, + "url": `"https://spdx.org/licenses/0BSD"`, + "visibility": `["//visibility:public"]`, + }, + android.HostAndDeviceDefault, + }, + }, + } + + for _, test := range tests { + RunBp2BuildTestCase(t, + registerLicenseKindModuleTypes, + Bp2buildTestCase{ + Description: test.description, + ModuleTypeUnderTest: "license_kind", + ModuleTypeUnderTestFactory: android.LicenseKindFactory, + Blueprint: test.module, + ExpectedBazelTargets: []string{test.expected.String()}, + }) + } +} |