1 # 2 # Copyright (C) 2017 The Android Open Source Project 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 # 16 17 import os.path 18 19 import common 20 import test_utils 21 from merge_target_files import ( 22 read_config_list, validate_config_lists, default_system_item_list, 23 default_other_item_list, default_system_misc_info_keys) 24 25 26 class MergeTargetFilesTest(test_utils.ReleaseToolsTestCase): 27 28 def setUp(self): 29 self.testdata_dir = test_utils.get_testdata_dir() 30 31 def test_read_config_list(self): 32 system_item_list_file = os.path.join(self.testdata_dir, 33 'merge_config_system_item_list') 34 system_item_list = read_config_list(system_item_list_file) 35 expected_system_item_list = [ 36 'META/apkcerts.txt', 37 'META/filesystem_config.txt', 38 'META/root_filesystem_config.txt', 39 'META/system_manifest.xml', 40 'META/system_matrix.xml', 41 'META/update_engine_config.txt', 42 'PRODUCT/*', 43 'ROOT/*', 44 'SYSTEM/*', 45 ] 46 self.assertItemsEqual(system_item_list, expected_system_item_list) 47 48 def test_validate_config_lists_ReturnsFalseIfMissingDefaultItem(self): 49 system_item_list = default_system_item_list[:] 50 system_item_list.remove('SYSTEM/*') 51 self.assertFalse( 52 validate_config_lists(system_item_list, default_system_misc_info_keys, 53 default_other_item_list)) 54 55 def test_validate_config_lists_ReturnsTrueIfDefaultItemInDifferentList(self): 56 system_item_list = default_system_item_list[:] 57 system_item_list.remove('ROOT/*') 58 other_item_list = default_other_item_list[:] 59 other_item_list.append('ROOT/*') 60 self.assertTrue( 61 validate_config_lists(system_item_list, default_system_misc_info_keys, 62 other_item_list)) 63 64 def test_validate_config_lists_ReturnsTrueIfExtraItem(self): 65 system_item_list = default_system_item_list[:] 66 system_item_list.append('MY_NEW_PARTITION/*') 67 self.assertTrue( 68 validate_config_lists(system_item_list, default_system_misc_info_keys, 69 default_other_item_list)) 70 71 def test_validate_config_lists_ReturnsFalseIfBadSystemMiscInfoKeys(self): 72 for bad_key in ['dynamic_partition_list', 'super_partition_groups']: 73 system_misc_info_keys = default_system_misc_info_keys[:] 74 system_misc_info_keys.append(bad_key) 75 self.assertFalse( 76 validate_config_lists(default_system_item_list, system_misc_info_keys, 77 default_other_item_list)) 78