blob: 70f2162348ad03ce1e540608af964cbf0152f7fd [file] [log] [blame]
// 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"]`,
}),
},
})
}