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 18import shutil 19 20import common 21import merge_meta 22import merge_target_files 23import test_utils 24 25 26class MergeMetaTest(test_utils.ReleaseToolsTestCase): 27 28 def setUp(self): 29 self.testdata_dir = test_utils.get_testdata_dir() 30 self.OPTIONS = merge_target_files.OPTIONS 31 self.OPTIONS.framework_partition_set = set( 32 ['product', 'system', 'system_ext']) 33 self.OPTIONS.vendor_partition_set = set(['odm', 'vendor']) 34 35 def test_MergePackageKeys_ReturnsTrueIfNoConflicts(self): 36 output_meta_dir = common.MakeTempDir() 37 38 framework_meta_dir = common.MakeTempDir() 39 os.symlink( 40 os.path.join(self.testdata_dir, 'apexkeys_framework.txt'), 41 os.path.join(framework_meta_dir, 'apexkeys.txt')) 42 43 vendor_meta_dir = common.MakeTempDir() 44 os.symlink( 45 os.path.join(self.testdata_dir, 'apexkeys_vendor.txt'), 46 os.path.join(vendor_meta_dir, 'apexkeys.txt')) 47 48 merge_meta.MergePackageKeys(framework_meta_dir, vendor_meta_dir, 49 output_meta_dir, 'apexkeys.txt') 50 51 merged_entries = [] 52 merged_path = os.path.join(self.testdata_dir, 'apexkeys_merge.txt') 53 54 with open(merged_path) as f: 55 merged_entries = f.read().split('\n') 56 57 output_entries = [] 58 output_path = os.path.join(output_meta_dir, 'apexkeys.txt') 59 60 with open(output_path) as f: 61 output_entries = f.read().split('\n') 62 63 return self.assertEqual(merged_entries, output_entries) 64 65 def test_MergePackageKeys_ReturnsFalseIfConflictsPresent(self): 66 output_meta_dir = common.MakeTempDir() 67 68 framework_meta_dir = common.MakeTempDir() 69 os.symlink( 70 os.path.join(self.testdata_dir, 'apexkeys_framework.txt'), 71 os.path.join(framework_meta_dir, 'apexkeys.txt')) 72 73 conflict_meta_dir = common.MakeTempDir() 74 os.symlink( 75 os.path.join(self.testdata_dir, 'apexkeys_framework_conflict.txt'), 76 os.path.join(conflict_meta_dir, 'apexkeys.txt')) 77 78 self.assertRaises(ValueError, merge_meta.MergePackageKeys, 79 framework_meta_dir, conflict_meta_dir, output_meta_dir, 80 'apexkeys.txt') 81 82 def test_MergePackageKeys_HandlesApkCertsSyntax(self): 83 output_meta_dir = common.MakeTempDir() 84 85 framework_meta_dir = common.MakeTempDir() 86 os.symlink( 87 os.path.join(self.testdata_dir, 'apkcerts_framework.txt'), 88 os.path.join(framework_meta_dir, 'apkcerts.txt')) 89 90 vendor_meta_dir = common.MakeTempDir() 91 os.symlink( 92 os.path.join(self.testdata_dir, 'apkcerts_vendor.txt'), 93 os.path.join(vendor_meta_dir, 'apkcerts.txt')) 94 95 merge_meta.MergePackageKeys(framework_meta_dir, vendor_meta_dir, 96 output_meta_dir, 'apkcerts.txt') 97 98 merged_entries = [] 99 merged_path = os.path.join(self.testdata_dir, 'apkcerts_merge.txt') 100 101 with open(merged_path) as f: 102 merged_entries = f.read().split('\n') 103 104 output_entries = [] 105 output_path = os.path.join(output_meta_dir, 'apkcerts.txt') 106 107 with open(output_path) as f: 108 output_entries = f.read().split('\n') 109 110 return self.assertEqual(merged_entries, output_entries) 111