releasetools: Add sanity test for sign_apex.
This ensures a matching interface between sign_apex and apex_utils. The test apex `testdata/foo.apex` is generated by running `system/apex/apexer/runtests.sh`. Test: python -m unittest test_sign_apex Test: atest releasetools_test Change-Id: I7c14b1df2a3038ad206aa3e5aac084c47baaa00b
This commit is contained in:
@@ -44,6 +44,7 @@ python_library_host {
|
|||||||
"ota_from_target_files.py",
|
"ota_from_target_files.py",
|
||||||
"ota_package_parser.py",
|
"ota_package_parser.py",
|
||||||
"rangelib.py",
|
"rangelib.py",
|
||||||
|
"sign_apex.py",
|
||||||
"sign_target_files_apks.py",
|
"sign_target_files_apks.py",
|
||||||
"sparse_img.py",
|
"sparse_img.py",
|
||||||
"target_files_diff.py",
|
"target_files_diff.py",
|
||||||
|
@@ -40,6 +40,20 @@ import common
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def SignApexFile(apex_file, payload_key, container_key, signing_args=None):
|
||||||
|
"""Signs the given apex file."""
|
||||||
|
with open(apex_file, 'rb') as input_fp:
|
||||||
|
apex_data = input_fp.read()
|
||||||
|
|
||||||
|
return apex_utils.SignApex(
|
||||||
|
apex_data,
|
||||||
|
payload_key=payload_key,
|
||||||
|
container_key=container_key,
|
||||||
|
container_pw=None,
|
||||||
|
codename_to_api_level_map=None,
|
||||||
|
signing_args=signing_args)
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
|
|
||||||
options = {}
|
options = {}
|
||||||
@@ -76,20 +90,12 @@ def main(argv):
|
|||||||
|
|
||||||
common.InitLogging()
|
common.InitLogging()
|
||||||
|
|
||||||
input_zip = args[0]
|
signed_apex = SignApexFile(
|
||||||
output_zip = args[1]
|
args[0],
|
||||||
with open(input_zip) as input_fp:
|
options['payload_key'],
|
||||||
apex_data = input_fp.read()
|
options['container_key'],
|
||||||
|
options.get('payload_extra_args'))
|
||||||
signed_apex = apex_utils.SignApex(
|
shutil.copyfile(signed_apex, args[1])
|
||||||
apex_data,
|
|
||||||
payload_key=options['payload_key'],
|
|
||||||
container_key=options['container_key'],
|
|
||||||
container_pw=None,
|
|
||||||
codename_to_api_level_map=None,
|
|
||||||
signing_args=options.get('payload_extra_args'))
|
|
||||||
|
|
||||||
shutil.copyfile(signed_apex, output_zip)
|
|
||||||
logger.info("done.")
|
logger.info("done.")
|
||||||
|
|
||||||
|
|
||||||
|
41
tools/releasetools/test_sign_apex.py
Normal file
41
tools/releasetools/test_sign_apex.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2019 The Android Open Source Project
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
import common
|
||||||
|
import sign_apex
|
||||||
|
import test_utils
|
||||||
|
|
||||||
|
|
||||||
|
class SignApexTest(test_utils.ReleaseToolsTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.testdata_dir = test_utils.get_testdata_dir()
|
||||||
|
self.assertTrue(os.path.exists(self.testdata_dir))
|
||||||
|
|
||||||
|
common.OPTIONS.search_path = test_utils.get_search_path()
|
||||||
|
|
||||||
|
@test_utils.SkipIfExternalToolsUnavailable()
|
||||||
|
def test_SignApexFile(self):
|
||||||
|
foo_apex = os.path.join(self.testdata_dir, 'foo.apex')
|
||||||
|
payload_key = os.path.join(self.testdata_dir, 'testkey_RSA4096.key')
|
||||||
|
container_key = os.path.join(self.testdata_dir, 'testkey')
|
||||||
|
signed_foo_apex = sign_apex.SignApexFile(
|
||||||
|
foo_apex,
|
||||||
|
payload_key,
|
||||||
|
container_key)
|
||||||
|
self.assertTrue(os.path.exists(signed_foo_apex))
|
BIN
tools/releasetools/testdata/foo.apex
vendored
Normal file
BIN
tools/releasetools/testdata/foo.apex
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user