blob: 9ce7446c203328b8508c6ae33c1c91abec4e4f86 [file] [log] [blame]
// 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/android"
"android/soong/java"
)
func runJavaSdkLibraryTestCaseWithRegistrationCtxFunc(t *testing.T, tc Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
t.Helper()
(&tc).ModuleTypeUnderTest = "java_sdk_library"
(&tc).ModuleTypeUnderTestFactory = java.SdkLibraryFactory
RunBp2BuildTestCase(t, registrationCtxFunc, tc)
}
func runJavaSdkLibraryTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runJavaSdkLibraryTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {})
}
func TestJavaSdkLibraryApiSurfaceGeneral(t *testing.T) {
runJavaSdkLibraryTestCase(t, Bp2buildTestCase{
Description: "limited java_sdk_library for api surfaces, general conversion",
Filesystem: map[string]string{
"build/soong/scripts/gen-java-current-api-files.sh": "",
"api/current.txt": "",
"api/system-current.txt": "",
"api/test-current.txt": "",
"api/module-lib-current.txt": "",
"api/system-server-current.txt": "",
"api/removed.txt": "",
"api/system-removed.txt": "",
"api/test-removed.txt": "",
"api/module-lib-removed.txt": "",
"api/system-server-removed.txt": "",
},
Blueprint: `java_sdk_library {
name: "java-sdk-lib",
srcs: ["a.java"],
public: {enabled: true},
system: {enabled: true},
test: {enabled: true},
module_lib: {enabled: true},
system_server: {enabled: true},
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_sdk_library", "java-sdk-lib", AttrNameToString{
"public": `"api/current.txt"`,
"system": `"api/system-current.txt"`,
"test": `"api/test-current.txt"`,
"module_lib": `"api/module-lib-current.txt"`,
"system_server": `"api/system-server-current.txt"`,
}),
},
})
}
func TestJavaSdkLibraryApiSurfacePublicDefault(t *testing.T) {
runJavaSdkLibraryTestCase(t, Bp2buildTestCase{
Description: "limited java_sdk_library for api surfaces, public prop uses default value",
Filesystem: map[string]string{
"build/soong/scripts/gen-java-current-api-files.sh": "",
"api/current.txt": "",
"api/system-current.txt": "",
"api/test-current.txt": "",
"api/module-lib-current.txt": "",
"api/system-server-current.txt": "",
"api/removed.txt": "",
"api/system-removed.txt": "",
"api/test-removed.txt": "",
"api/module-lib-removed.txt": "",
"api/system-server-removed.txt": "",
},
Blueprint: `java_sdk_library {
name: "java-sdk-lib",
srcs: ["a.java"],
system: {enabled: false},
test: {enabled: false},
module_lib: {enabled: false},
system_server: {enabled: false},
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_sdk_library", "java-sdk-lib", AttrNameToString{
"public": `"api/current.txt"`,
}),
},
})
}
func TestJavaSdkLibraryApiSurfacePublicNotEnabled(t *testing.T) {
runJavaSdkLibraryTestCase(t, Bp2buildTestCase{
Description: "limited java_sdk_library for api surfaces, public enable is false",
Filesystem: map[string]string{
"build/soong/scripts/gen-java-current-api-files.sh": "",
"api/current.txt": "",
"api/removed.txt": "",
},
Blueprint: `java_sdk_library {
name: "java-sdk-lib",
srcs: ["a.java"],
public: {enabled: false},
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_sdk_library", "java-sdk-lib", AttrNameToString{}),
},
})
}
func TestJavaSdkLibraryApiSurfaceNoScopeIsSet(t *testing.T) {
runJavaSdkLibraryTestCase(t, Bp2buildTestCase{
Description: "limited java_sdk_library for api surfaces, none of the api scopes is set",
Filesystem: map[string]string{
"build/soong/scripts/gen-java-current-api-files.sh": "",
"api/current.txt": "",
"api/system-current.txt": "",
"api/test-current.txt": "",
"api/removed.txt": "",
"api/system-removed.txt": "",
"api/test-removed.txt": "",
},
Blueprint: `java_sdk_library {
name: "java-sdk-lib",
srcs: ["a.java"],
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_sdk_library", "java-sdk-lib", AttrNameToString{
"public": `"api/current.txt"`,
"system": `"api/system-current.txt"`,
"test": `"api/test-current.txt"`,
}),
},
})
}