105 lines
2.8 KiB
Go
105 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": "",
|
||
|
},
|
||
|
})
|
||
|
}
|