Implement bp2build for the license_kind module

Bug: 190817312
Test: treehugger
Change-Id: Id5bc9c1b7c5386d26ce0ebc33f63bc2665de7d54
This commit is contained in:
Sasha Smundak 2022-09-14 13:40:03 -07:00
parent 9d2f1743d2
commit a93c62b375
3 changed files with 100 additions and 1 deletions

View file

@ -14,6 +14,8 @@
package android package android
import "android/soong/bazel"
func init() { func init() {
RegisterLicenseKindBuildComponents(InitRegistrationContext) RegisterLicenseKindBuildComponents(InitRegistrationContext)
} }
@ -32,13 +34,39 @@ type licenseKindProperties struct {
Visibility []string Visibility []string
} }
var _ Bazelable = &licenseKindModule{}
type licenseKindModule struct { type licenseKindModule struct {
ModuleBase ModuleBase
DefaultableModuleBase DefaultableModuleBase
BazelModuleBase
properties licenseKindProperties 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) { func (m *licenseKindModule) DepsMutator(ctx BottomUpMutatorContext) {
// Nothing to do. // Nothing to do.
} }
@ -51,13 +79,14 @@ func LicenseKindFactory() Module {
module := &licenseKindModule{} module := &licenseKindModule{}
base := module.base() 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. // The visibility property needs to be checked and parsed by the visibility module.
setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility) setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility)
initAndroidModuleBase(module) initAndroidModuleBase(module)
InitDefaultableModule(module) InitDefaultableModule(module)
InitBazelModule(module)
return module return module
} }

View file

@ -64,6 +64,7 @@ bootstrap_go_package {
"java_plugin_conversion_test.go", "java_plugin_conversion_test.go",
"java_proto_conversion_test.go", "java_proto_conversion_test.go",
"license_conversion_test.go", "license_conversion_test.go",
"license_kind_conversion_test.go",
"linker_config_conversion_test.go", "linker_config_conversion_test.go",
"ndk_headers_conversion_test.go", "ndk_headers_conversion_test.go",
"performance_test.go", "performance_test.go",

View file

@ -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()},
})
}
}