From cee7e66b07cdea5d37fbdd94bb1a34cc8caa448f Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 9 Jul 2020 17:32:57 +0100 Subject: 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 --- sdk/java_sdk_test.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'sdk/java_sdk_test.go') diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go index 7496b207d..79da3f05f 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -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 { -- cgit v1.2.3