diff options
Diffstat (limited to 'sdk/java_sdk_test.go')
| -rw-r--r-- | sdk/java_sdk_test.go | 111 |
1 files changed, 76 insertions, 35 deletions
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go index c6cb6c220..2ade146b7 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -19,13 +19,11 @@ import ( "testing" "android/soong/android" - "android/soong/genrule" "android/soong/java" ) var prepareForSdkTestWithJava = android.GroupFixturePreparers( java.PrepareForTestWithJavaBuildComponents, - genrule.PrepareForTestWithGenRuleBuildComponents, PrepareForTestWithSdkBuildComponents, // Ensure that all source paths are provided. This helps ensure that the snapshot generation is @@ -36,7 +34,6 @@ var prepareForSdkTestWithJava = android.GroupFixturePreparers( // Files needs by most of the tests. android.MockFS{ "Test.java": nil, - "build/soong/java/invalid_implementation_jar.sh": nil, }.AddToFixture(), ) @@ -291,26 +288,18 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["//apex_available:platform"], - jars: [":mysdk_myjavalib-error"], + jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"], permitted_packages: ["pkg.myjavalib"], } - -genrule { - name: "mysdk_myjavalib-error", - visibility: ["//visibility:private"], - out: ["this-file-will-never-be-created.jar"], - tool_files: ["scripts/invalid_implementation_jar.sh"], - cmd: "$(location scripts/invalid_implementation_jar.sh) myjavalib", -} `), checkAllCopyRules(` -build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh +.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar `), ) } func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) { - runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedGenRule, expectedCopyRule string) { + runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) { result := android.GroupFixturePreparers( prepareForSdkTestWithJava, android.FixtureMergeEnv(map[string]string{ @@ -345,31 +334,91 @@ java_import { jars: ["%s"], permitted_packages: ["pkg.media"], } -%s`, expectedJarPath, expectedGenRule)), +`, expectedJarPath)), checkAllCopyRules(expectedCopyRule), ) } t.Run("updatable-media in S", func(t *testing.T) { - runTest(t, "S", "java/updatable-media.jar", "", ` + runTest(t, "S", "java/updatable-media.jar", ` .intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar `) }) t.Run("updatable-media in T", func(t *testing.T) { - runTest(t, "Tiramisu", ":mysdk_updatable-media-error", ` -genrule { - name: "mysdk_updatable-media-error", - visibility: ["//visibility:private"], - out: ["this-file-will-never-be-created.jar"], - tool_files: ["scripts/invalid_implementation_jar.sh"], - cmd: "$(location scripts/invalid_implementation_jar.sh) updatable-media", -}`, ` -build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh + runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", ` +.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar `) }) } +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, @@ -407,20 +456,12 @@ java_import { prefer: false, visibility: ["//visibility:public"], apex_available: ["//apex_available:platform"], - jars: [":myexports_myjavalib-error"], + jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"], permitted_packages: ["pkg.myjavalib"], } - -genrule { - name: "myexports_myjavalib-error", - visibility: ["//visibility:private"], - out: ["this-file-will-never-be-created.jar"], - tool_files: ["scripts/invalid_implementation_jar.sh"], - cmd: "$(location scripts/invalid_implementation_jar.sh) myjavalib", -} `), checkAllCopyRules(` -build/soong/java/invalid_implementation_jar.sh -> scripts/invalid_implementation_jar.sh +.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar `), ) } |
