| // Copyright (C) 2023 The Android Open Source Project |
| // |
| // 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 api |
| |
| import ( |
| "testing" |
| |
| "android/soong/android" |
| "android/soong/bp2build" |
| "android/soong/java" |
| ) |
| |
| func runCombinedApisTestCaseWithRegistrationCtxFunc(t *testing.T, tc bp2build.Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) { |
| t.Helper() |
| (&tc).ModuleTypeUnderTest = "combined_apis" |
| (&tc).ModuleTypeUnderTestFactory = combinedApisModuleFactory |
| bp2build.RunBp2BuildTestCase(t, registrationCtxFunc, tc) |
| } |
| |
| func runCombinedApisTestCase(t *testing.T, tc bp2build.Bp2buildTestCase) { |
| t.Helper() |
| runCombinedApisTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) { |
| ctx.RegisterModuleType("java_defaults", java.DefaultsFactory) |
| ctx.RegisterModuleType("java_sdk_library", java.SdkLibraryFactory) |
| ctx.RegisterModuleType("filegroup", android.FileGroupFactory) |
| }) |
| } |
| |
| func TestCombinedApisGeneral(t *testing.T) { |
| runCombinedApisTestCase(t, bp2build.Bp2buildTestCase{ |
| Description: "combined_apis, general case", |
| Blueprint: `combined_apis { |
| name: "foo", |
| bootclasspath: ["bcp"], |
| system_server_classpath: ["ssc"], |
| } |
| |
| java_sdk_library { |
| name: "bcp", |
| srcs: ["a.java", "b.java"], |
| shared_library: false, |
| } |
| java_sdk_library { |
| name: "ssc", |
| srcs: ["a.java", "b.java"], |
| shared_library: false, |
| } |
| filegroup { |
| name: "non-updatable-current.txt", |
| srcs: ["current.txt"], |
| } |
| filegroup { |
| name: "non-updatable-system-current.txt", |
| srcs: ["system-current.txt"], |
| } |
| filegroup { |
| name: "non-updatable-module-lib-current.txt", |
| srcs: ["system-removed.txt"], |
| } |
| filegroup { |
| name: "non-updatable-system-server-current.txt", |
| srcs: ["system-lint-baseline.txt"], |
| } |
| `, |
| Filesystem: map[string]string{ |
| "a/Android.bp": ` |
| java_defaults { |
| name: "android.jar_defaults", |
| } |
| `, |
| "api/current.txt": "", |
| "api/removed.txt": "", |
| "api/system-current.txt": "", |
| "api/system-removed.txt": "", |
| "api/test-current.txt": "", |
| "api/test-removed.txt": "", |
| }, |
| StubbedBuildDefinitions: []string{"bcp", "ssc", "non-updatable-current.txt", "non-updatable-system-current.txt", "non-updatable-module-lib-current.txt", "non-updatable-system-server-current.txt"}, |
| ExpectedHandcraftedModules: []string{"foo-current.txt", "foo-system-current.txt", "foo-module-lib-current.txt", "foo-system-server-current.txt"}, |
| ExpectedBazelTargets: []string{ |
| bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-current.txt", bp2build.AttrNameToString{ |
| "scope": `"public"`, |
| "base": `":non-updatable-current.txt"`, |
| "deps": `[":bcp"]`, |
| }), |
| bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-system-current.txt", bp2build.AttrNameToString{ |
| "scope": `"system"`, |
| "base": `":non-updatable-system-current.txt"`, |
| "deps": `[":bcp"]`, |
| }), |
| bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-module-lib-current.txt", bp2build.AttrNameToString{ |
| "scope": `"module-lib"`, |
| "base": `":non-updatable-module-lib-current.txt"`, |
| "deps": `[":bcp"]`, |
| }), |
| bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-system-server-current.txt", bp2build.AttrNameToString{ |
| "scope": `"system-server"`, |
| "base": `":non-updatable-system-server-current.txt"`, |
| "deps": `[":ssc"]`, |
| }), |
| }, |
| }) |
| } |