From 7b385c567714837acf457360111c4e7300d9d8bb Mon Sep 17 00:00:00 2001 From: Samiul Islam Date: Mon, 11 Oct 2021 22:47:13 +0100 Subject: [PATCH] Add exemption for test_framework-apexd and test_service-apexd jars For testing purpose, we need to add java libraries to bootclasspath and systemserverclasspath that are not present in PRODUCT_APEX_BOOT_JARS and PRODUCT_APEX_SYSTEM_SERVER_JARS. Currently, we can't unconditionally add all the contents to the config for test APEXs. Until a formal way is introduced, hardcoding the artifact in the build system like how it's done for test_framework-sdkextensions. Bug: 187444679 Test: atest ApexTestCases Test: atest StagedInstallInternalTest Change-Id: I1f7b01a57bc9c46163e025de2ab00e671a42b202 --- java/bootclasspath_fragment.go | 2 ++ java/systemserver_classpath_fragment.go | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 8f18790ea..bfa683824 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -616,6 +616,8 @@ func (b *BootclasspathFragmentModule) configuredJars(ctx android.ModuleContext) // This is an exception to support end-to-end test for SdkExtensions, until such support exists. if android.InList("test_framework-sdkextensions", possibleUpdatableModules) { jars = jars.Append("com.android.sdkext", "test_framework-sdkextensions") + } else if android.InList("test_framework-apexd", possibleUpdatableModules) { + jars = jars.Append("com.android.apex.test_package", "test_framework-apexd") } else if global.ApexBootJars.Len() != 0 && !android.IsModuleInVersionedSdk(ctx.Module()) { unknown = android.RemoveListFromList(unknown, b.properties.Coverage.Contents) _, unknown = android.RemoveFromList("core-icu4j", unknown) diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go index b5f52fd10..d75635c43 100644 --- a/java/systemserver_classpath_fragment.go +++ b/java/systemserver_classpath_fragment.go @@ -124,8 +124,15 @@ func (s *SystemServerClasspathModule) configuredJars(ctx android.ModuleContext) // So ignore it even if it is not in PRODUCT_APEX_SYSTEM_SERVER_JARS. // TODO(b/203233647): Add better mechanism to make it optional. _, unknown = android.RemoveFromList("car-frameworks-service-module", unknown) - // For non test apexes, make sure that all contents are actually declared in make. - if global.ApexSystemServerJars.Len() > 0 && len(unknown) > 0 && !android.IsModuleInVersionedSdk(ctx.Module()) { + + // TODO(satayev): for apex_test we want to include all contents unconditionally to classpaths + // config. However, any test specific jars would not be present in ApexSystemServerJars. Instead, + // we should check if we are creating a config for apex_test via ApexInfo and amend the values. + // This is an exception to support end-to-end test for ApexdUnitTests, until such support exists. + if android.InList("test_service-apexd", possibleUpdatableModules) { + jars = jars.Append("com.android.apex.test_package", "test_service-apexd") + } else if global.ApexSystemServerJars.Len() > 0 && len(unknown) > 0 && !android.IsModuleInVersionedSdk(ctx.Module()) { + // For non test apexes, make sure that all contents are actually declared in make. ctx.ModuleErrorf("%s in contents must also be declared in PRODUCT_APEX_SYSTEM_SERVER_JARS", unknown) }