From abcd59731e0f88b988b8e97562c9ecd116802353 Mon Sep 17 00:00:00 2001 From: satayev Date: Fri, 6 Aug 2021 17:49:46 +0100 Subject: [PATCH] Fix tests to use correct fixtures for configuring (Apex)BootJars. This is in preparation to r.android.com/1740313 where setting correct variables would be enforced (i.e. apex and non-apex boot jars must be in config.ApexBootJars and config.BootJars correspondingly). Bug: 191369843 Test: m nothing Change-Id: Ic86680c1f7af53d229083b2cc58beb3ceccb4b6a --- apex/apex_test.go | 68 ++++++++++++++++---- apex/bootclasspath_fragment_test.go | 11 ++-- apex/classpath_element_test.go | 6 ++ apex/platform_bootclasspath_test.go | 3 +- apex/systemserver_classpath_fragment_test.go | 3 + dexpreopt/testing.go | 14 ++++ java/bootclasspath_fragment_test.go | 2 + sdk/bootclasspath_fragment_sdk_test.go | 1 + 8 files changed, 90 insertions(+), 18 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index 41bfcea49..f07bf6379 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -4663,6 +4663,7 @@ func TestPrebuiltApexNameWithPlatformBootclasspath(t *testing.T) { prebuilt_bootclasspath_fragment { name: "art-bootclasspath-fragment", + image_name: "art", contents: ["core-oj"], hidden_api: { annotation_flags: "my-bootclasspath-fragment/annotation-flags.csv", @@ -4871,7 +4872,7 @@ func TestPrebuiltExportDexImplementationJars(t *testing.T) { func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { preparer := android.GroupFixturePreparers( - java.FixtureConfigureBootJars("myapex:libfoo", "myapex:libbar"), + java.FixtureConfigureApexBootJars("myapex:libfoo", "myapex:libbar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), @@ -4949,6 +4950,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { name: "libfoo", jars: ["libfoo.jar"], apex_available: ["myapex"], + permitted_packages: ["foo"], } java_sdk_library_import { @@ -4958,6 +4960,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { }, apex_available: ["myapex"], shared_library: false, + permitted_packages: ["bar"], } ` @@ -4998,6 +5001,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { name: "libfoo", jars: ["libfoo.jar"], apex_available: ["myapex"], + permitted_packages: ["foo"], } java_sdk_library_import { @@ -5007,6 +5011,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { }, apex_available: ["myapex"], shared_library: false, + permitted_packages: ["bar"], } ` @@ -5120,6 +5125,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { prefer: true, jars: ["libfoo.jar"], apex_available: ["myapex"], + permitted_packages: ["foo"], } java_library { @@ -5136,6 +5142,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { }, apex_available: ["myapex"], shared_library: false, + permitted_packages: ["bar"], } java_sdk_library { @@ -5209,6 +5216,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { name: "libfoo", srcs: ["foo/bar/MyClass.java"], apex_available: ["myapex"], + permitted_packages: ["foo"], } java_sdk_library_import { @@ -5225,6 +5233,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { srcs: ["foo/bar/MyClass.java"], unsafe_ignore_missing_latest_api: true, apex_available: ["myapex"], + permitted_packages: ["bar"], } ` @@ -5286,6 +5295,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { prefer: true, jars: ["libfoo.jar"], apex_available: ["myapex"], + permitted_packages: ["foo"], } java_library { @@ -5302,6 +5312,7 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { }, apex_available: ["myapex"], shared_library: false, + permitted_packages: ["bar"], } java_sdk_library { @@ -6899,6 +6910,7 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi apex_available: [ "some-updatable-apex", ], + permitted_packages: ["some.updatable.apex.lib"], } java_library { @@ -6908,6 +6920,7 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg string, preparer androi "some-non-updatable-apex", ], compile_dex: true, + permitted_packages: ["some.non.updatable.apex.lib"], } bootclasspath_fragment { @@ -7118,7 +7131,9 @@ func TestUpdatable_should_not_set_generate_classpaths_proto(t *testing.T) { "myapex", ], } - `) + `, + dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"), + ) } func TestNoUpdatableJarsInBootImage(t *testing.T) { @@ -7148,18 +7163,30 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) { } t.Run("updatable jar from ART apex in the ART boot image => ok", func(t *testing.T) { - preparer := java.FixtureConfigureBootJars("com.android.art.debug:some-art-lib") - fragment := java.ApexVariantReference{ - Apex: proptools.StringPtr("com.android.art.debug"), - Module: proptools.StringPtr("art-bootclasspath-fragment"), + preparer := android.GroupFixturePreparers( + java.FixtureConfigureBootJars("com.android.art.debug:some-art-lib"), + java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"), + ) + fragments := []java.ApexVariantReference{ + { + Apex: proptools.StringPtr("com.android.art.debug"), + Module: proptools.StringPtr("art-bootclasspath-fragment"), + }, + { + Apex: proptools.StringPtr("some-non-updatable-apex"), + Module: proptools.StringPtr("some-non-updatable-fragment"), + }, } - testNoUpdatableJarsInBootImage(t, "", preparer, fragment) + testNoUpdatableJarsInBootImage(t, "", preparer, fragments...) }) t.Run("updatable jar from ART apex in the framework boot image => error", func(t *testing.T) { err := `module "some-art-lib" from updatable apexes \["com.android.art.debug"\] is not allowed in the framework boot image` // Update the dexpreopt BootJars directly. - preparer := prepareSetBootJars("com.android.art.debug:some-art-lib") + preparer := android.GroupFixturePreparers( + prepareSetBootJars("com.android.art.debug:some-art-lib"), + java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"), + ) testNoUpdatableJarsInBootImage(t, err, preparer) }) @@ -7179,12 +7206,15 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) { t.Run("updatable jar from some other apex in the framework boot image => error", func(t *testing.T) { err := `module "some-updatable-apex-lib" from updatable apexes \["some-updatable-apex"\] is not allowed in the framework boot image` - preparer := java.FixtureConfigureBootJars("some-updatable-apex:some-updatable-apex-lib") + preparer := android.GroupFixturePreparers( + java.FixtureConfigureBootJars("some-updatable-apex:some-updatable-apex-lib"), + java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"), + ) testNoUpdatableJarsInBootImage(t, err, preparer) }) t.Run("non-updatable jar from some other apex in the framework boot image => ok", func(t *testing.T) { - preparer := java.FixtureConfigureBootJars("some-non-updatable-apex:some-non-updatable-apex-lib") + preparer := java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib") fragment := java.ApexVariantReference{ Apex: proptools.StringPtr("some-non-updatable-apex"), Module: proptools.StringPtr("some-non-updatable-fragment"), @@ -7212,13 +7242,22 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) { }) t.Run("platform jar in the framework boot image => ok", func(t *testing.T) { - preparer := java.FixtureConfigureBootJars("platform:some-platform-lib") - testNoUpdatableJarsInBootImage(t, "", preparer) + preparer := android.GroupFixturePreparers( + java.FixtureConfigureBootJars("platform:some-platform-lib"), + java.FixtureConfigureApexBootJars("some-non-updatable-apex:some-non-updatable-apex-lib"), + ) + fragments := []java.ApexVariantReference{ + { + Apex: proptools.StringPtr("some-non-updatable-apex"), + Module: proptools.StringPtr("some-non-updatable-fragment"), + }, + } + testNoUpdatableJarsInBootImage(t, "", preparer, fragments...) }) } func TestDexpreoptAccessDexFilesFromPrebuiltApex(t *testing.T) { - preparer := java.FixtureConfigureBootJars("myapex:libfoo") + preparer := java.FixtureConfigureApexBootJars("myapex:libfoo") t.Run("prebuilt no source", func(t *testing.T) { fragment := java.ApexVariantReference{ Apex: proptools.StringPtr("myapex"), @@ -7256,6 +7295,7 @@ func TestDexpreoptAccessDexFilesFromPrebuiltApex(t *testing.T) { name: "libfoo", jars: ["libfoo.jar"], apex_available: ["myapex"], + permitted_packages: ["libfoo"], } `, "", preparer, fragment) }) @@ -8168,6 +8208,8 @@ func TestApexJavaCoverage(t *testing.T) { java.PrepareForTestWithJavaDefaultModules, android.PrepareForTestWithAndroidBuildComponents, android.FixtureWithRootAndroidBp(bp), + dexpreopt.FixtureSetApexBootJars("myapex:mybootclasspathlib"), + dexpreopt.FixtureSetApexSystemServerJars("myapex:mysystemserverclasspathlib"), android.FixtureMergeEnv(map[string]string{ "EMMA_INSTRUMENT": "true", }), diff --git a/apex/bootclasspath_fragment_test.go b/apex/bootclasspath_fragment_test.go index 6098989a7..3e19014a3 100644 --- a/apex/bootclasspath_fragment_test.go +++ b/apex/bootclasspath_fragment_test.go @@ -130,7 +130,8 @@ func TestBootclasspathFragments_FragmentDependency(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithBootclasspathFragment, // Configure some libraries in the art bootclasspath_fragment and platform_bootclasspath. - java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz", "platform:foo", "platform:bar"), + java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz"), + java.FixtureConfigureApexBootJars("someapex:foo", "someapex:bar"), prepareForTestWithArtApex, java.PrepareForTestWithJavaSdkLibraryFiles, @@ -642,7 +643,7 @@ func TestBootclasspathFragmentContentsNoName(t *testing.T) { prepareForTestWithBootclasspathFragment, prepareForTestWithMyapex, // Configure bootclasspath jars to ensure that hidden API encoding is performed on them. - java.FixtureConfigureBootJars("myapex:foo", "myapex:bar"), + java.FixtureConfigureApexBootJars("myapex:foo", "myapex:bar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), @@ -893,7 +894,8 @@ func TestBootclasspathFragment_AndroidNonUpdatable(t *testing.T) { prepareForTestWithArtApex, prepareForTestWithMyapex, // Configure bootclasspath jars to ensure that hidden API encoding is performed on them. - java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz", "myapex:foo", "myapex:bar"), + java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz"), + java.FixtureConfigureApexBootJars("myapex:foo", "myapex:bar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), @@ -1062,7 +1064,8 @@ func TestBootclasspathFragment_AndroidNonUpdatable_AlwaysUsePrebuiltSdks(t *test prepareForTestWithArtApex, prepareForTestWithMyapex, // Configure bootclasspath jars to ensure that hidden API encoding is performed on them. - java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz", "myapex:foo", "myapex:bar"), + java.FixtureConfigureBootJars("com.android.art:baz", "com.android.art:quuz"), + java.FixtureConfigureApexBootJars("myapex:foo", "myapex:bar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), diff --git a/apex/classpath_element_test.go b/apex/classpath_element_test.go index 0193127b8..e2d846559 100644 --- a/apex/classpath_element_test.go +++ b/apex/classpath_element_test.go @@ -58,6 +58,7 @@ func TestCreateClasspathElements(t *testing.T) { }), java.PrepareForTestWithJavaSdkLibraryFiles, java.FixtureWithLastReleaseApis("foo", "othersdklibrary"), + java.FixtureConfigureApexBootJars("myapex:bar"), android.FixtureWithRootAndroidBp(` apex { name: "com.android.art", @@ -79,6 +80,7 @@ func TestCreateClasspathElements(t *testing.T) { bootclasspath_fragment { name: "art-bootclasspath-fragment", + image_name: "art", apex_available: [ "com.android.art", ], @@ -193,6 +195,10 @@ func TestCreateClasspathElements(t *testing.T) { apex: "com.android.art", module: "art-bootclasspath-fragment", }, + { + apex: "myapex", + module: "mybootclasspath-fragment", + }, ], } `), diff --git a/apex/platform_bootclasspath_test.go b/apex/platform_bootclasspath_test.go index eaee20dd0..d1897aee6 100644 --- a/apex/platform_bootclasspath_test.go +++ b/apex/platform_bootclasspath_test.go @@ -39,7 +39,7 @@ func TestPlatformBootclasspath_Fragments(t *testing.T) { prepareForTestWithMyapex, java.PrepareForTestWithJavaSdkLibraryFiles, java.FixtureWithLastReleaseApis("foo"), - java.FixtureConfigureBootJars("myapex:bar"), + java.FixtureConfigureApexBootJars("myapex:bar"), android.FixtureWithRootAndroidBp(` platform_bootclasspath { name: "platform-bootclasspath", @@ -194,6 +194,7 @@ func TestPlatformBootclasspathDependencies(t *testing.T) { bootclasspath_fragment { name: "art-bootclasspath-fragment", + image_name: "art", apex_available: [ "com.android.art", ], diff --git a/apex/systemserver_classpath_fragment_test.go b/apex/systemserver_classpath_fragment_test.go index 537f51d95..a64c6f4a2 100644 --- a/apex/systemserver_classpath_fragment_test.go +++ b/apex/systemserver_classpath_fragment_test.go @@ -15,6 +15,7 @@ package apex import ( + "android/soong/dexpreopt" "testing" "android/soong/android" @@ -30,6 +31,7 @@ func TestSystemserverclasspathFragmentContents(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverclasspathFragment, prepareForTestWithMyapex, + dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"), ).RunTestWithBp(t, ` apex { name: "myapex", @@ -81,6 +83,7 @@ func TestSystemserverclasspathFragmentNoGeneratedProto(t *testing.T) { result := android.GroupFixturePreparers( prepareForTestWithSystemserverclasspathFragment, prepareForTestWithMyapex, + dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"), ).RunTestWithBp(t, ` apex { name: "myapex", diff --git a/dexpreopt/testing.go b/dexpreopt/testing.go index 2f996555f..8f5c31521 100644 --- a/dexpreopt/testing.go +++ b/dexpreopt/testing.go @@ -125,6 +125,20 @@ func FixtureSetApexBootJars(bootJars ...string) android.FixturePreparer { }) } +// FixtureSetSystemServerJars sets the SystemServerJars property. +func FixtureSetSystemServerJars(jars ...string) android.FixturePreparer { + return FixtureModifyGlobalConfig(func(dexpreoptConfig *GlobalConfig) { + dexpreoptConfig.SystemServerJars = android.CreateTestConfiguredJarList(jars) + }) +} + +// FixtureSetApexSystemServerJars sets the ApexSystemServerJars property in the global config. +func FixtureSetApexSystemServerJars(jars ...string) android.FixturePreparer { + return FixtureModifyGlobalConfig(func(dexpreoptConfig *GlobalConfig) { + dexpreoptConfig.ApexSystemServerJars = android.CreateTestConfiguredJarList(jars) + }) +} + // FixtureSetPreoptWithUpdatableBcp sets the PreoptWithUpdatableBcp property in the global config. func FixtureSetPreoptWithUpdatableBcp(value bool) android.FixturePreparer { return FixtureModifyGlobalConfig(func(dexpreoptConfig *GlobalConfig) { diff --git a/java/bootclasspath_fragment_test.go b/java/bootclasspath_fragment_test.go index 3d0e1558f..d3de675d8 100644 --- a/java/bootclasspath_fragment_test.go +++ b/java/bootclasspath_fragment_test.go @@ -164,6 +164,7 @@ func TestBootclasspathFragment_Coverage(t *testing.T) { prepareForTestWithBootclasspathFragment, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("mysdklibrary", "mycoveragestubs"), + FixtureConfigureApexBootJars("someapex:mybootlib"), prepareWithBp, ) @@ -186,6 +187,7 @@ func TestBootclasspathFragment_StubLibs(t *testing.T) { prepareForTestWithBootclasspathFragment, PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"), + FixtureConfigureApexBootJars("someapex:mysdklibrary"), ).RunTestWithBp(t, ` bootclasspath_fragment { name: "myfragment", diff --git a/sdk/bootclasspath_fragment_sdk_test.go b/sdk/bootclasspath_fragment_sdk_test.go index c7ad79858..736ec8a2d 100644 --- a/sdk/bootclasspath_fragment_sdk_test.go +++ b/sdk/bootclasspath_fragment_sdk_test.go @@ -552,6 +552,7 @@ func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) { java.PrepareForTestWithJavaDefaultModules, java.PrepareForTestWithJavaSdkLibraryFiles, java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"), + java.FixtureConfigureApexBootJars("someapex:mysdklibrary", "myotherapex:myotherlib"), prepareForSdkTestWithApex, // Some additional files needed for the myotherapex.