| # Copyright 2020 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Contains tests which use dexdump of monochrome's dex files.""" |
| |
| import shutil |
| import tempfile |
| import zipfile |
| |
| from devil.android.sdk import build_tools |
| from devil.utils import cmd_helper |
| import typ |
| |
| |
| def _extract_dex_dumps(apk): |
| build_dir = tempfile.mkdtemp() |
| extracted_dex_files = _extract_dex_files(apk, build_dir) |
| cmd = [ build_tools.GetPath('dexdump'), '-d' ] + extracted_dex_files |
| status, out = cmd_helper.GetCmdStatusAndOutput(cmd) |
| shutil.rmtree(build_dir) |
| return (status, out) |
| |
| def _extract_dex_files(apk, dest_dir): |
| extracted_files = [] |
| with zipfile.ZipFile(apk) as z: |
| for info in z.infolist(): |
| if info.filename.endswith('.dex'): |
| extracted_files.append(z.extract(info.filename, dest_dir)) |
| |
| return extracted_files |
| |
| class MonochromeDexDumpTest(typ.TestCase): |
| def testMain(self): |
| monochrome_apk = self.context.monochrome_apk |
| status, dump = _extract_dex_dumps(monochrome_apk) |
| self.assertEquals(status, 0) |
| # Check that the dexdump does not have any calls to org.apache.http |
| # crbug.com/115604 |
| self.assertNotIn('org/apache/http', dump) |