// Copyright 2023 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 ( "testing" "android/soong/aidl_library" "android/soong/android" ) func runAidlLibraryTestCase(t *testing.T, tc Bp2buildTestCase) { t.Helper() (&tc).ModuleTypeUnderTest = "aidl_library" (&tc).ModuleTypeUnderTestFactory = aidl_library.AidlLibraryFactory RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc) } func TestAidlLibrary(t *testing.T) { testcases := []struct { name string bp string expectedBazelAttrs AttrNameToString }{ { name: "aidl_library with strip_import_prefix", bp: ` aidl_library { name: "foo", srcs: ["aidl/foo.aidl"], hdrs: ["aidl/header.aidl"], strip_import_prefix: "aidl", }`, expectedBazelAttrs: AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, "hdrs": `["aidl/header.aidl"]`, "strip_import_prefix": `"aidl"`, "tags": `["apex_available=//apex_available:anyapex"]`, }, }, { name: "aidl_library without strip_import_prefix", bp: ` aidl_library { name: "foo", srcs: ["aidl/foo.aidl"], hdrs: ["aidl/header.aidl"], }`, expectedBazelAttrs: AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, "hdrs": `["aidl/header.aidl"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }, }, } for _, test := range testcases { t.Run(test.name, func(t *testing.T) { expectedBazelTargets := []string{ MakeBazelTargetNoRestrictions("aidl_library", "foo", test.expectedBazelAttrs), } runAidlLibraryTestCase(t, Bp2buildTestCase{ Description: test.name, Blueprint: test.bp, ExpectedBazelTargets: expectedBazelTargets, }) }) } } func TestAidlLibraryWithDeps(t *testing.T) { bp := ` aidl_library { name: "bar", srcs: ["Bar.aidl"], hdrs: ["aidl/BarHeader.aidl"], } aidl_library { name: "foo", srcs: ["aidl/Foo.aidl"], hdrs: ["aidl/FooHeader.aidl"], strip_import_prefix: "aidl", deps: ["bar"], }` t.Run("aidl_library with deps", func(t *testing.T) { expectedBazelTargets := []string{ MakeBazelTargetNoRestrictions("aidl_library", "bar", AttrNameToString{ "srcs": `["Bar.aidl"]`, "hdrs": `["aidl/BarHeader.aidl"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), MakeBazelTargetNoRestrictions("aidl_library", "foo", AttrNameToString{ "srcs": `["aidl/Foo.aidl"]`, "hdrs": `["aidl/FooHeader.aidl"]`, "strip_import_prefix": `"aidl"`, "deps": `[":bar"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), } runAidlLibraryTestCase(t, Bp2buildTestCase{ Description: "aidl_library with deps", Blueprint: bp, ExpectedBazelTargets: expectedBazelTargets, }) }) }