Infer merge configs if not provided.

Bug: 221858722
Test: Create a merged package using inferred configs.
Test: atest --host releasetools_test
Change-Id: I93d67ca0f00be3f0e0424ed0a1e44c39ca2f3094
This commit is contained in:
Daniel Norman
2022-03-02 15:46:34 -08:00
parent 2465fc8594
commit 5f47677f00
4 changed files with 192 additions and 113 deletions

View File

@@ -20,20 +20,12 @@ import common
import merge_target_files
import merge_utils
import test_utils
from merge_target_files import (
DEFAULT_FRAMEWORK_ITEM_LIST,
DEFAULT_VENDOR_ITEM_LIST,
DEFAULT_FRAMEWORK_MISC_INFO_KEYS,
)
class MergeUtilsTest(test_utils.ReleaseToolsTestCase):
def setUp(self):
self.OPTIONS = merge_target_files.OPTIONS
self.OPTIONS.framework_item_list = DEFAULT_FRAMEWORK_ITEM_LIST
self.OPTIONS.framework_misc_info_keys = DEFAULT_FRAMEWORK_MISC_INFO_KEYS
self.OPTIONS.vendor_item_list = DEFAULT_VENDOR_ITEM_LIST
def test_CopyItems_CopiesItemsMatchingPatterns(self):
@@ -88,21 +80,30 @@ class MergeUtilsTest(test_utils.ReleaseToolsTestCase):
os.readlink(os.path.join(output_dir, 'a_link.cpp')), 'a.cpp')
def test_ValidateConfigLists_ReturnsFalseIfSharedExtractedPartition(self):
self.OPTIONS.vendor_item_list = list(DEFAULT_VENDOR_ITEM_LIST)
self.OPTIONS.system_item_list = [
'SYSTEM/*',
]
self.OPTIONS.vendor_item_list = [
'SYSTEM/my_system_file',
'VENDOR/*',
]
self.OPTIONS.vendor_item_list.append('SYSTEM/my_system_file')
self.assertFalse(merge_utils.ValidateConfigLists())
def test_ValidateConfigLists_ReturnsFalseIfSharedExtractedPartitionImage(
self):
self.OPTIONS.vendor_item_list = list(DEFAULT_VENDOR_ITEM_LIST)
self.OPTIONS.vendor_item_list.append('IMAGES/system.img')
self.OPTIONS.system_item_list = [
'SYSTEM/*',
]
self.OPTIONS.vendor_item_list = [
'IMAGES/system.img',
'VENDOR/*',
]
self.assertFalse(merge_utils.ValidateConfigLists())
def test_ValidateConfigLists_ReturnsFalseIfBadSystemMiscInfoKeys(self):
for bad_key in ['dynamic_partition_list', 'super_partition_groups']:
self.OPTIONS.framework_misc_info_keys = list(
DEFAULT_FRAMEWORK_MISC_INFO_KEYS)
self.OPTIONS.framework_misc_info_keys.append(bad_key)
self.OPTIONS.framework_misc_info_keys = [bad_key]
self.assertFalse(merge_utils.ValidateConfigLists())
def test_ItemListToPartitionSet(self):
@@ -116,3 +117,81 @@ class MergeUtilsTest(test_utils.ReleaseToolsTestCase):
]
partition_set = merge_utils.ItemListToPartitionSet(item_list)
self.assertEqual(set(['product', 'system', 'system_ext']), partition_set)
def test_InferItemList_Framework(self):
zip_namelist = [
'SYSTEM/my_system_file',
'PRODUCT/my_product_file',
]
item_list = merge_utils.InferItemList(zip_namelist, framework=True)
expected_framework_item_list = [
'IMAGES/product.img',
'IMAGES/product.map',
'IMAGES/system.img',
'IMAGES/system.map',
'META/filesystem_config.txt',
'META/liblz4.so',
'META/postinstall_config.txt',
'META/product_filesystem_config.txt',
'META/update_engine_config.txt',
'META/zucchini_config.txt',
'PRODUCT/*',
'SYSTEM/*',
]
self.assertEqual(item_list, expected_framework_item_list)
def test_InferItemList_Vendor(self):
zip_namelist = [
'VENDOR/my_vendor_file',
'ODM/my_odm_file',
]
item_list = merge_utils.InferItemList(zip_namelist, framework=False)
expected_vendor_item_list = [
'IMAGES/odm.img',
'IMAGES/odm.map',
'IMAGES/vendor.img',
'IMAGES/vendor.map',
'META/kernel_configs.txt',
'META/kernel_version.txt',
'META/odm_filesystem_config.txt',
'META/otakeys.txt',
'META/releasetools.py',
'META/vendor_filesystem_config.txt',
'ODM/*',
'OTA/android-info.txt',
'VENDOR/*',
]
self.assertEqual(item_list, expected_vendor_item_list)
def test_InferFrameworkMiscInfoKeys(self):
zip_namelist = [
'SYSTEM/my_system_file',
'SYSTEM_EXT/my_system_ext_file',
]
keys = merge_utils.InferFrameworkMiscInfoKeys(zip_namelist)
expected_keys = [
'ab_update',
'avb_system_add_hashtree_footer_args',
'avb_system_ext_add_hashtree_footer_args',
'avb_system_ext_hashtree_enable',
'avb_system_hashtree_enable',
'avb_vbmeta_system',
'avb_vbmeta_system_algorithm',
'avb_vbmeta_system_key_path',
'avb_vbmeta_system_rollback_index_location',
'building_system_ext_image',
'building_system_image',
'default_system_dev_certificate',
'fs_type',
'system_disable_sparse',
'system_ext_disable_sparse',
'system_ext_fs_type',
]
self.assertEqual(keys, expected_keys)