0b555e323b
- The converter runs for api_bp2build, not bp2build workspace - Since droidstubs is an internal module created by java_sdk_library, the conversion encompasses the latter as well - Since droidstubs do not have an api_surface attribute, this conversion uses naming convention to infer the api_surface represented by the api file e.g. *stubs.source -> publicapi, *stubs.source.system -> systemapi) - Also adds an SdkIntraCore enum to represent the API surface provided by one core module to another There is also ongoing work to check in java_api_contribution modules in Soong. Once we have that, we can update this converter to operate on that module type instead Test: go test ./bp2build Change-Id: Ia85828e04c738d9ffcc524856d7c3034ee29bbf9
104 lines
2.8 KiB
Go
104 lines
2.8 KiB
Go
// 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 (
|
|
"testing"
|
|
|
|
"android/soong/android"
|
|
"android/soong/java"
|
|
)
|
|
|
|
func registerJavaApiModules(ctx android.RegistrationContext) {
|
|
java.RegisterSdkLibraryBuildComponents(ctx)
|
|
java.RegisterStubsBuildComponents(ctx)
|
|
}
|
|
|
|
func TestDroidstubsApiContributions(t *testing.T) {
|
|
bp := `
|
|
droidstubs {
|
|
name: "framework-stubs",
|
|
check_api: {
|
|
current: {
|
|
api_file: "framework.current.txt",
|
|
},
|
|
},
|
|
}
|
|
|
|
// Modules without check_api should not generate a Bazel API target
|
|
droidstubs {
|
|
name: "framework-docs",
|
|
}
|
|
|
|
// java_sdk_library is a macro that creates droidstubs
|
|
java_sdk_library {
|
|
name: "module-stubs",
|
|
srcs: ["A.java"],
|
|
|
|
// These api surfaces are added by default, but add them explicitly to make
|
|
// this test hermetic
|
|
public: {
|
|
enabled: true,
|
|
},
|
|
system: {
|
|
enabled: true,
|
|
},
|
|
|
|
// Disable other api surfaces to keep unit test scope limited
|
|
module_lib: {
|
|
enabled: false,
|
|
},
|
|
test: {
|
|
enabled: false,
|
|
},
|
|
}
|
|
`
|
|
expectedBazelTargets := []string{
|
|
MakeBazelTargetNoRestrictions(
|
|
"java_api_contribution",
|
|
"framework-stubs.contribution",
|
|
AttrNameToString{
|
|
"api": `"framework.current.txt"`,
|
|
"api_surface": `"publicapi"`,
|
|
"target_compatible_with": `["//build/bazel/platforms/os:android"]`,
|
|
}),
|
|
MakeBazelTargetNoRestrictions(
|
|
"java_api_contribution",
|
|
"module-stubs.stubs.source.contribution",
|
|
AttrNameToString{
|
|
"api": `"api/current.txt"`,
|
|
"api_surface": `"publicapi"`,
|
|
"target_compatible_with": `["//build/bazel/platforms/os:android"]`,
|
|
}),
|
|
MakeBazelTargetNoRestrictions(
|
|
"java_api_contribution",
|
|
"module-stubs.stubs.source.system.contribution",
|
|
AttrNameToString{
|
|
"api": `"api/system-current.txt"`,
|
|
"api_surface": `"systemapi"`,
|
|
"target_compatible_with": `["//build/bazel/platforms/os:android"]`,
|
|
}),
|
|
}
|
|
RunApiBp2BuildTestCase(t, registerJavaApiModules, Bp2buildTestCase{
|
|
Blueprint: bp,
|
|
ExpectedBazelTargets: expectedBazelTargets,
|
|
Filesystem: map[string]string{
|
|
"api/current.txt": "",
|
|
"api/removed.txt": "",
|
|
"api/system-current.txt": "",
|
|
"api/system-removed.txt": "",
|
|
},
|
|
})
|
|
}
|