diff options
author | 2022-02-15 12:55:11 +0000 | |
---|---|---|
committer | 2022-02-21 16:43:43 +0000 | |
commit | 3a3f169b5634ef6a7c9ad1040e7cf92dd60a37da (patch) | |
tree | e9cf98d7bdf017d4225e0b2baef544eb456734ea /java/prebuilt_apis_test.go | |
parent | 377318b33fca4bde6cea3b5d5059c3aceab73890 (diff) |
Add support for sdk extensions in prebuilt_apis
This makes it possible to pass an extensions_dir containing finalized
module APIs to prebuilt_apis. The extension versions are compared to the
api level versions to figure out what the "latest" finalized API is for
each module. This is done using the base_sdk_extension_version, such
that any extension higher than than base_sdk_extension_version is
assumed to be finalized after any of the existing api level versions.
Bug: 220086085
Test: prebuilt_apis_test.go
Test: existing module in prebuilts/sdk
Change-Id: Ib792f84202d436f594ba5e8716c6a187f9cd60dc
Diffstat (limited to 'java/prebuilt_apis_test.go')
-rw-r--r-- | java/prebuilt_apis_test.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/java/prebuilt_apis_test.go b/java/prebuilt_apis_test.go index 79f42250b..75422ad45 100644 --- a/java/prebuilt_apis_test.go +++ b/java/prebuilt_apis_test.go @@ -20,9 +20,14 @@ import ( "testing" "android/soong/android" + "github.com/google/blueprint" ) +func intPtr(v int) *int { + return &v +} + func TestPrebuiltApis_SystemModulesCreation(t *testing.T) { result := android.GroupFixturePreparers( prepareForJavaTest, @@ -54,3 +59,34 @@ func TestPrebuiltApis_SystemModulesCreation(t *testing.T) { sort.Strings(expected) android.AssertArrayString(t, "sdk system modules", expected, sdkSystemModules) } + +func TestPrebuiltApis_WithExtensions(t *testing.T) { + runTestWithBaseExtensionLevel := func(v int) (foo_input string, bar_input string) { + result := android.GroupFixturePreparers( + prepareForJavaTest, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.Platform_base_sdk_extension_version = intPtr(v) + }), + FixtureWithPrebuiltApisAndExtensions(map[string][]string{ + "31": {"foo"}, + "32": {"foo", "bar"}, + "current": {"foo", "bar"}, + }, map[string][]string{ + "1": {"foo"}, + "2": {"foo", "bar"}, + }), + ).RunTest(t) + foo_input = result.ModuleForTests("foo.api.public.latest", "").Rule("generator").Implicits[0].String() + bar_input = result.ModuleForTests("bar.api.public.latest", "").Rule("generator").Implicits[0].String() + return + } + // Here, the base extension level is 1, so extension level 2 is the latest + foo_input, bar_input := runTestWithBaseExtensionLevel(1) + android.AssertStringEquals(t, "Expected latest = extension level 2", "prebuilts/sdk/extensions/2/public/api/foo.txt", foo_input) + android.AssertStringEquals(t, "Expected latest = extension level 2", "prebuilts/sdk/extensions/2/public/api/bar.txt", bar_input) + + // Here, the base extension level is 2, so 2 is not later than 32. + foo_input, bar_input = runTestWithBaseExtensionLevel(2) + android.AssertStringEquals(t, "Expected latest = api level 32", "prebuilts/sdk/32/public/api/foo.txt", foo_input) + android.AssertStringEquals(t, "Expected latest = api level 32", "prebuilts/sdk/32/public/api/bar.txt", bar_input) +} |