Ensure that sdk/module_exports depends on source members

Previously, preferring a prebuilt of an sdk/module_exports's member
would cause the sdk/module_exports to depend on the prebuilt instead
of the source and cause problems with the build.

This chance prevents the dependency from an sdk/module_exports to its
members from being replaced with prebuilts.

Bug: 160785918
Test: m nothing
Change-Id: Iee4bcd438c11929e30fb5766701b05a0e89956d9
This commit is contained in:
Paul Duffin
2020-07-09 17:32:57 +01:00
parent 2c79c871d9
commit cee7e66b07
4 changed files with 84 additions and 21 deletions

View File

@@ -16,6 +16,8 @@ package sdk
import (
"testing"
"android/soong/java"
)
func testSdkWithJava(t *testing.T, bp string) *testSdkResult {
@@ -26,6 +28,9 @@ func testSdkWithJava(t *testing.T, bp string) *testSdkResult {
"resource.test": nil,
"aidl/foo/bar/Test.aidl": nil,
// For java_import
"prebuilt.jar": nil,
// For java_sdk_library
"api/current.txt": nil,
"api/removed.txt": nil,
@@ -85,6 +90,52 @@ java_import {
// Contains tests for SDK members provided by the java package.
func TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
result := testSdkWithJava(t, `
sdk {
name: "mysdk",
java_header_libs: ["sdkmember"],
}
java_library {
name: "sdkmember",
srcs: ["Test.java"],
system_modules: "none",
sdk_version: "none",
}
java_import {
name: "sdkmember",
prefer: true,
jars: ["prebuilt.jar"],
}
`)
// Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
java.CheckModuleDependencies(t, result.ctx, "mysdk", "android_common", []string{"sdkmember"})
result.CheckSnapshot("mysdk", "",
checkAndroidBpContents(`// This is auto-generated. DO NOT EDIT.
java_import {
name: "mysdk_sdkmember@current",
sdk_member_name: "sdkmember",
jars: ["java/sdkmember.jar"],
}
java_import {
name: "sdkmember",
prefer: false,
jars: ["java/sdkmember.jar"],
}
sdk_snapshot {
name: "mysdk@current",
java_header_libs: ["mysdk_sdkmember@current"],
}
`))
}
func TestBasicSdkWithJavaLibrary(t *testing.T) {
result := testSdkWithJava(t, `
sdk {