diff options
author | 2022-09-20 17:08:49 +0000 | |
---|---|---|
committer | 2022-09-21 11:51:21 +0000 | |
commit | 7212dbef03157f0bd048410c07283e4f1232b876 (patch) | |
tree | f728ffaf1facaccc9789e06d48cebedfd982b319 | |
parent | 62b471ae7123c1e63378d2679667276065cec157 (diff) |
Tweak logic for when extension txt is latest
Always use the latest extension as the latest API, regardless of
the current base extension version. This makes it so that we can
bump the base in master without changing which txt is considered
latest.
Also extend the error check to apply more widely (which caught an
error in the extension 3 finalization).
Bug: 228017107
Test: m checkapi (with api break & bumped base)
Test: prebuilt_apis_test.go
Change-Id: Ia10eb41ff500c566736f0d29a29984a99386bb6f
-rw-r--r-- | java/prebuilt_apis.go | 9 | ||||
-rw-r--r-- | java/prebuilt_apis_test.go | 29 |
2 files changed, 23 insertions, 15 deletions
diff --git a/java/prebuilt_apis.go b/java/prebuilt_apis.go index 944970783..c6acd55e5 100644 --- a/java/prebuilt_apis.go +++ b/java/prebuilt_apis.go @@ -255,12 +255,11 @@ func prebuiltApiFiles(mctx android.LoadHookContext, p *prebuiltApis) { if p.properties.Extensions_dir != nil { extensionApiFiles := globExtensionDirs(mctx, p, "api/*.txt") for k, v := range getLatest(extensionApiFiles) { - if v.version > mctx.Config().PlatformBaseSdkExtensionVersion() { - if _, exists := latest[k]; !exists { - mctx.ModuleErrorf("Module %v finalized for extension %d but never during an API level; likely error", v.module, v.version) - } - latest[k] = v + if _, exists := latest[k]; !exists { + mctx.ModuleErrorf("Module %v finalized for extension %d but never during an API level; likely error", v.module, v.version) } + // The extension version is always at least as new as the last sdk int version (potentially identical) + latest[k] = v } } diff --git a/java/prebuilt_apis_test.go b/java/prebuilt_apis_test.go index 75422ad45..2b8435325 100644 --- a/java/prebuilt_apis_test.go +++ b/java/prebuilt_apis_test.go @@ -61,7 +61,7 @@ func TestPrebuiltApis_SystemModulesCreation(t *testing.T) { } func TestPrebuiltApis_WithExtensions(t *testing.T) { - runTestWithBaseExtensionLevel := func(v int) (foo_input string, bar_input string) { + runTestWithBaseExtensionLevel := func(v int) (foo_input, bar_input, baz_input string) { result := android.GroupFixturePreparers( prepareForJavaTest, android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { @@ -69,7 +69,7 @@ func TestPrebuiltApis_WithExtensions(t *testing.T) { }), FixtureWithPrebuiltApisAndExtensions(map[string][]string{ "31": {"foo"}, - "32": {"foo", "bar"}, + "32": {"foo", "bar", "baz"}, "current": {"foo", "bar"}, }, map[string][]string{ "1": {"foo"}, @@ -78,15 +78,24 @@ func TestPrebuiltApis_WithExtensions(t *testing.T) { ).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() + baz_input = result.ModuleForTests("baz.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) + // Extension 2 is the latest for both foo and bar, finalized after the base extension version. + foo_input, bar_input, baz_input := runTestWithBaseExtensionLevel(1) + android.AssertStringEquals(t, "Expected latest foo = extension level 2", "prebuilts/sdk/extensions/2/public/api/foo.txt", foo_input) + android.AssertStringEquals(t, "Expected latest bar = extension level 2", "prebuilts/sdk/extensions/2/public/api/bar.txt", bar_input) + android.AssertStringEquals(t, "Expected latest baz = api level 32", "prebuilts/sdk/32/public/api/baz.txt", baz_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) + // Extension 2 is the latest for both foo and bar, finalized together with 32 + foo_input, bar_input, baz_input = runTestWithBaseExtensionLevel(2) + android.AssertStringEquals(t, "Expected latest foo = extension level 2", "prebuilts/sdk/extensions/2/public/api/foo.txt", foo_input) + android.AssertStringEquals(t, "Expected latest bar = extension level 2", "prebuilts/sdk/extensions/2/public/api/bar.txt", bar_input) + android.AssertStringEquals(t, "Expected latest baz = api level 32", "prebuilts/sdk/32/public/api/baz.txt", baz_input) + + // Extension 3 is the current extension, but it has not yet been finalized. + foo_input, bar_input, baz_input = runTestWithBaseExtensionLevel(3) + android.AssertStringEquals(t, "Expected latest foo = extension level 2", "prebuilts/sdk/extensions/2/public/api/foo.txt", foo_input) + android.AssertStringEquals(t, "Expected latest bar = extension level 2", "prebuilts/sdk/extensions/2/public/api/bar.txt", bar_input) + android.AssertStringEquals(t, "Expected latest baz = api level 32", "prebuilts/sdk/32/public/api/baz.txt", baz_input) } |