• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
17import os.path
18
19import common
20import test_utils
21from 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
26class 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