chromium/chrome/android/monochrome/scripts/monochrome_python_tests.py

#!/usr/bin/env vpython3
#
# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import os
import sys

_SRC_DIR = os.path.normpath(os.path.join(
    os.path.dirname(__file__), '..', '..', '..', '..'))
_TYP_DIR = os.path.join(
    _SRC_DIR, 'third_party', 'catapult', 'third_party', 'typ')
_DEVIL_CHROMIUM_DIR = os.path.join(_SRC_DIR, 'build', 'android')

sys.path[1:1] = [_TYP_DIR, _DEVIL_CHROMIUM_DIR]

import devil_chromium
import typ

# Import test files so they they are included in .pydeps.
import monochrome_dexdump_test
import monochrome_apk_checker_test


def create_argument_parser():
  """ Creates command line parser. """
  parser = typ.ArgumentParser()
  required_args = parser.add_argument_group('required arguments')

  required_args.add_argument(
      '--monochrome-apk', required=True, help='The path to the monochrome APK.')
  parser.add_argument(
      '--monochrome-pathmap', help='The monochrome APK resources pathmap path.')
  required_args.add_argument(
      '--chrome-apk',
      required=True,
      help='The path to the chrome APK.')
  parser.add_argument(
      '--chrome-pathmap', help='The chrome APK resources pathmap path.')
  required_args.add_argument(
      '--system-webview-apk',
      required=True,
      help='The path to the system webview APK.')
  parser.add_argument(
      '--system-webview-pathmap',
      help='The system webview APK resources pathmap path.')

  # The following parameters are unused.
  # Add them to the parser because typ.Runner checks that all arguments
  # are known. crbug.com/1084351
  parser.add_argument('--avd-config', help='Unused')
  parser.add_argument('--emulator-debug-tags', help='Unused')
  parser.add_argument(
      '--use-persistent-shell',
      action='store_true',
      help='Unused')
  return parser


def main(argv):
  devil_chromium.Initialize()
  argument_parser = create_argument_parser()

  runner = typ.Runner()
  runner.parse_args(argument_parser, argv[1:])
  if argument_parser.exit_status is not None:
    return argument_parser.exit_status
  runner.args.top_level_dirs = [ os.path.dirname(__file__) ]
  runner.context = runner.args

  # Needs to be set to enable customizing runner.context
  runner.win_multiprocessing = typ.WinMultiprocessing.importable

  return_code, _, _ = runner.run()
  return return_code

if __name__ == '__main__':
  sys.exit(main(sys.argv))