Browse Source

Implement bp2build for the `license_kind` module

Bug: 190817312
Test: treehugger
Change-Id: Id5bc9c1b7c5386d26ce0ebc33f63bc2665de7d54
Sasha Smundak 1 year ago
parent
commit
a93c62b375
3 changed files with 100 additions and 1 deletions
  1. 30 1
      android/license_kind.go
  2. 1 0
      bp2build/Android.bp
  3. 69 0
      bp2build/license_kind_conversion_test.go

+ 30 - 1
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
 }

+ 1 - 0
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",

+ 69 - 0
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()},
+			})
+	}
+}