releasetools: Factor out the check for (compressed) APK file.

Test: Run sign_target_files.py to sign a target_files.zip.
Test: `python -m unittest test_sign_target_files_apks`
Change-Id: Ie795d1bce7bae6af427832283e3d10bfecad80c5
This commit is contained in:
Tao Bao
2018-06-19 12:19:35 -07:00
parent 2a07d562ac
commit 11f955c506
2 changed files with 136 additions and 57 deletions

View File

@@ -24,7 +24,8 @@ import zipfile
import common
import test_utils
from sign_target_files_apks import (
EditTags, ReplaceCerts, ReplaceVerityKeyId, RewriteProps)
CheckAllApksSigned, EditTags, GetApkFileInfo, ReplaceCerts,
ReplaceVerityKeyId, RewriteProps)
class SignTargetFilesApksTest(unittest.TestCase):
@@ -211,3 +212,50 @@ class SignTargetFilesApksTest(unittest.TestCase):
cert2_path[:-9] : 'non-existent',
}
self.assertEqual(output_xml, ReplaceCerts(input_xml))
def test_CheckAllApksSigned(self):
input_file = common.MakeTempFile(suffix='.zip')
with zipfile.ZipFile(input_file, 'w') as input_zip:
input_zip.writestr('SYSTEM/app/App1.apk', "App1-content")
input_zip.writestr('SYSTEM/app/App2.apk.gz', "App2-content")
apk_key_map = {
'App1.apk' : 'key1',
'App2.apk' : 'key2',
'App3.apk' : 'key3',
}
with zipfile.ZipFile(input_file) as input_zip:
CheckAllApksSigned(input_zip, apk_key_map, None)
CheckAllApksSigned(input_zip, apk_key_map, '.gz')
# 'App2.apk.gz' won't be considered as an APK.
CheckAllApksSigned(input_zip, apk_key_map, None)
CheckAllApksSigned(input_zip, apk_key_map, '.xz')
del apk_key_map['App2.apk']
self.assertRaises(
AssertionError, CheckAllApksSigned, input_zip, apk_key_map, '.gz')
def test_GetApkFileInfo(self):
(is_apk, is_compressed) = GetApkFileInfo("PRODUCT/apps/Chats.apk", None)
self.assertTrue(is_apk)
self.assertFalse(is_compressed)
(is_apk, is_compressed) = GetApkFileInfo("PRODUCT/apps/Chats.dat", None)
self.assertFalse(is_apk)
self.assertFalse(is_compressed)
def test_GetApkFileInfo_withCompressedApks(self):
(is_apk, is_compressed) = GetApkFileInfo("PRODUCT/apps/Chats.apk.gz", ".gz")
self.assertTrue(is_apk)
self.assertTrue(is_compressed)
(is_apk, is_compressed) = GetApkFileInfo("PRODUCT/apps/Chats.apk.gz", ".xz")
self.assertFalse(is_apk)
self.assertFalse(is_compressed)
self.assertRaises(
AssertionError, GetApkFileInfo, "PRODUCT/apps/Chats.apk", "")
self.assertRaises(
AssertionError, GetApkFileInfo, "PRODUCT/apps/Chats.apk", "apk")