Make the `partition=` tag optional.
Since we might use ToT release tools to sign a package
generated by an older build, we make the new
`partition=` tag optional. This also means we need to be
careful to use non-greedy regex matching.
Bug: 153133823
Test: python3 -m unittest
Test: input with and without the new `partition=` tag
Test: new test_ReadApkCerts_WithWithoutOptionalFields
Change-Id: Ic57efd34e745ad302ae17150c6f2318f0b4524cb
diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py
index 9195e49..7058da7 100644
--- a/tools/releasetools/test_common.py
+++ b/tools/releasetools/test_common.py
@@ -710,6 +710,25 @@
'Compressed4.apk' : 'certs/compressed4',
}
+ # Test parsing with no optional fields, both optional fields, and only the
+ # partition optional field.
+ APKCERTS_TXT4 = (
+ 'name="RecoveryLocalizer.apk" certificate="certs/devkey.x509.pem"'
+ ' private_key="certs/devkey.pk8"\n'
+ 'name="Settings.apk"'
+ ' certificate="build/make/target/product/security/platform.x509.pem"'
+ ' private_key="build/make/target/product/security/platform.pk8"'
+ ' compressed="gz" partition="system"\n'
+ 'name="TV.apk" certificate="PRESIGNED" private_key=""'
+ ' partition="product"\n'
+ )
+
+ APKCERTS_CERTMAP4 = {
+ 'RecoveryLocalizer.apk' : 'certs/devkey',
+ 'Settings.apk' : 'build/make/target/product/security/platform',
+ 'TV.apk' : 'PRESIGNED',
+ }
+
def setUp(self):
self.testdata_dir = test_utils.get_testdata_dir()
@@ -786,6 +805,14 @@
with zipfile.ZipFile(target_files, 'r') as input_zip:
self.assertRaises(ValueError, common.ReadApkCerts, input_zip)
+ def test_ReadApkCerts_WithWithoutOptionalFields(self):
+ target_files = self._write_apkcerts_txt(self.APKCERTS_TXT4)
+ with zipfile.ZipFile(target_files, 'r') as input_zip:
+ certmap, ext = common.ReadApkCerts(input_zip)
+
+ self.assertDictEqual(self.APKCERTS_CERTMAP4, certmap)
+ self.assertIsNone(ext)
+
def test_ExtractPublicKey(self):
cert = os.path.join(self.testdata_dir, 'testkey.x509.pem')
pubkey = os.path.join(self.testdata_dir, 'testkey.pubkey.pem')