diff options
| author | 2024-02-06 17:54:58 +0000 | |
|---|---|---|
| committer | 2024-02-06 17:54:58 +0000 | |
| commit | 7870d329a5c21132adc16a5974f66839c1422c16 (patch) | |
| tree | 4687e3b7a0f8a196d2857d0f13d82ad400e7ebab /java/sdk_library_test.go | |
| parent | d7e6bd8a04a3848ce767fd6722d266a785998059 (diff) | |
| parent | 23956d12ab1789ca47dad453154292b522ba0bfa (diff) | |
Merge "Mechanism to select a specific version of java_sdk_library_import" into main
Diffstat (limited to 'java/sdk_library_test.go')
| -rw-r--r-- | java/sdk_library_test.go | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/java/sdk_library_test.go b/java/sdk_library_test.go index 0a113b6d5..93ef40872 100644 --- a/java/sdk_library_test.go +++ b/java/sdk_library_test.go @@ -1830,3 +1830,93 @@ func TestStubResolutionOfJavaSdkLibraryInLibs(t *testing.T) { inputs := rule.Implicits.Strings() android.AssertStringListContains(t, "Could not find the expected stub on classpath", inputs, "out/soong/.intermediates/sdklib.stubs/android_common/turbine-combined/sdklib.stubs.jar") } + +// test that rdep gets resolved to the correct version of a java_sdk_library (source or a specific prebuilt) +func TestMultipleSdkLibraryPrebuilts(t *testing.T) { + bp := ` + apex_contributions { + name: "my_mainline_module_contributions", + api_domain: "my_mainline_module", + contents: ["%s"], + } + java_sdk_library { + name: "sdklib", + srcs: ["a.java"], + sdk_version: "none", + system_modules: "none", + public: { + enabled: true, + }, + } + java_sdk_library_import { + name: "sdklib.v1", //prebuilt + source_module_name: "sdklib", + public: { + jars: ["a.jar"], + stub_srcs: ["a.java"], + current_api: "current.txt", + removed_api: "removed.txt", + annotations: "annotations.zip", + }, + } + java_sdk_library_import { + name: "sdklib.v2", //prebuilt + source_module_name: "sdklib", + public: { + jars: ["a.jar"], + stub_srcs: ["a.java"], + current_api: "current.txt", + removed_api: "removed.txt", + annotations: "annotations.zip", + }, + } + // rdeps + java_library { + name: "mymodule", + srcs: ["a.java"], + libs: ["sdklib.stubs",], + } + ` + testCases := []struct { + desc string + selectedDependencyName string + expectedStubPath string + }{ + { + desc: "Source library is selected using apex_contributions", + selectedDependencyName: "sdklib", + expectedStubPath: "out/soong/.intermediates/sdklib.stubs/android_common/turbine-combined/sdklib.stubs.jar", + }, + { + desc: "Prebuilt library v1 is selected using apex_contributions", + selectedDependencyName: "prebuilt_sdklib.v1", + expectedStubPath: "out/soong/.intermediates/prebuilt_sdklib.v1.stubs/android_common/combined/sdklib.stubs.jar", + }, + { + desc: "Prebuilt library v2 is selected using apex_contributions", + selectedDependencyName: "prebuilt_sdklib.v2", + expectedStubPath: "out/soong/.intermediates/prebuilt_sdklib.v2.stubs/android_common/combined/sdklib.stubs.jar", + }, + } + + fixture := android.GroupFixturePreparers( + prepareForJavaTest, + PrepareForTestWithJavaSdkLibraryFiles, + FixtureWithLastReleaseApis("sdklib", "sdklib.v1", "sdklib.v2"), + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.BuildFlags = map[string]string{ + "RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "my_mainline_module_contributions", + } + }), + ) + + for _, tc := range testCases { + result := fixture.RunTestWithBp(t, fmt.Sprintf(bp, tc.selectedDependencyName)) + + // Make sure that rdeps get the correct source vs prebuilt based on mainline_module_contributions + public := result.ModuleForTests("mymodule", "android_common") + rule := public.Output("javac/mymodule.jar") + inputs := rule.Implicits.Strings() + android.AssertStringListContains(t, "Could not find the expected stub on classpath", inputs, tc.expectedStubPath) + } +} |