diff options
author | 2022-11-26 13:36:38 +0000 | |
---|---|---|
committer | 2022-11-26 15:52:32 +0000 | |
commit | bb638eba5046b5de3cd409c3f3804d50b0d75486 (patch) | |
tree | c8c0b194527a127628f2d5880e492a93a20b6a01 /sdk/java_sdk_test.go | |
parent | 9fd9129b5728602a4768e8e8e695660b683c405e (diff) |
Output min_sdk_version to snapshot
The min_sdk_version was added to the java_import in Tiramisu. This
change will propagate the min_sdk_version set on a java_library to the
java_import snapshot. If possible the min_sdk_version will be resolved
into a numerical version to ensure consistent behavior across build
releases.
Bug: 260560424
Test: m nothing
BUILD_NUMBER=fixed packages/modules/common/build/mainline_modules_sdks.sh
# Ran above before and after this change and made sure that only
# Tiramisu, UpsideDownCake and latest were changed and those changes
# were the addition of a min_sdk_version property.
#
# Ran the following command in tm-mainline-prod:
# lunch cf_x86_64_phone-userdebug
# m ART_MODULE_BUILD_FROM_SOURCE=false nothing`.
#
# It failed with:
# module "prebuilt_okhttp-norepackage" variant "android_common": should support min_sdk_version(33) for "AdServicesApk": min_sdk_version is not specified.
#
# Unpacked the Tiramisu art snapshot generated with this change into
# tm-mainline-prod and reran the previous command and it succeeded.
Change-Id: I9d9d730845554fc175d17f38c038e4e3c7d39e07
Diffstat (limited to 'sdk/java_sdk_test.go')
-rw-r--r-- | sdk/java_sdk_test.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go index 51903ce39..2ade146b7 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -352,6 +352,73 @@ java_import { }) } +func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) { + runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) { + result := android.GroupFixturePreparers( + prepareForSdkTestWithJava, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"} + }), + android.FixtureMergeEnv(map[string]string{ + "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease, + }), + ).RunTestWithBp(t, fmt.Sprintf(` + sdk { + name: "mysdk", + java_header_libs: ["mylib"], + } + + java_library { + name: "mylib", + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + compile_dex: true, + min_sdk_version: "%s", + } + `, minSdkVersion)) + + expectedMinSdkVersionLine := "" + if expectedMinSdkVersion != "" { + expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion) + } + + CheckSnapshot(t, result, "mysdk", "", + checkAndroidBpContents(fmt.Sprintf(` +// This is auto-generated. DO NOT EDIT. + +java_import { + name: "mylib", + prefer: false, + visibility: ["//visibility:public"], + apex_available: ["//apex_available:platform"], + jars: ["java/mylib.jar"], +%s} +`, expectedMinSdkVersionLine)), + ) + } + + t.Run("min_sdk_version=S in S", func(t *testing.T) { + // min_sdk_version was not added to java_import until Tiramisu. + runTest(t, "S", "S", "") + }) + + t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) { + // The canonical form of S is 31. + runTest(t, "Tiramisu", "S", "31") + }) + + t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) { + // A numerical min_sdk_version is already in canonical form. + runTest(t, "Tiramisu", "24", "24") + }) + + t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) { + // An unfinalized min_sdk_version has no numeric value yet. + runTest(t, "", "Unfinalized", "Unfinalized") + }) +} + func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) { result := android.GroupFixturePreparers( prepareForSdkTestWithJava, |