Skip to content
Permalink
Browse files

Add option to run tests with Python3

Adds the option to run tests using Python3 instead of Python2 to allow
for tests to be migrated over in preparation for the Python2 deprecation.

This can be achieved by adding a "'use_python3': True" entry to the
test's gn_isolate_map.pyl entry.

Bug: 898348
Change-Id: I675ec068e18cec6bf59ea9d19802bd712f18e87e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1769719
Reviewed-by: Marc-Antoine Ruel <maruel@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#695232}
  • Loading branch information
Brian Sheedy Commit Bot
Brian Sheedy authored and Commit Bot committed Sep 10, 2019
1 parent e51f4cc commit 234580e5636050b577f54c5d3352ebc669b2d80c
Showing with 45 additions and 15 deletions.
  1. +28 −0 .vpython3
  2. +3 −4 OWNERS
  3. +14 −11 tools/mb/mb.py
@@ -0,0 +1,28 @@
# This is a vpython "spec" file.
#
# It describes patterns for python wheel dependencies of the python scripts in
# the chromium repo, particularly for dependencies that have compiled components
# (since pure-python dependencies can be easily vendored into third_party).
#
# When vpython is invoked, it finds this file and builds a python VirtualEnv,
# containing all of the dependencies described in this file, fetching them from
# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
# this never requires the end-user machine to have a working python extension
# compilation environment. All of these packages are built using:
# https://chromium.googlesource.com/infra/infra/+/master/infra/tools/dockerbuild/
#
# All python scripts in the repo share this same spec, to avoid dependency
# fragmentation.
#
# If you have depot_tools installed in your $PATH, you can invoke python scripts
# in this repo by running them as you normally would run them, except
# substituting `vpython` instead of `python` on the command line, e.g.:
# vpython path/to/script.py some --arguments
#
# Read more about `vpython` and how to modify this file here:
# https://chromium.googlesource.com/infra/infra/+/master/doc/users/vpython.md

python_version: "3.8"

# TODO(https://crbug.com/898348): Add in necessary wheels as Python3 versions
# become available.
7 OWNERS
@@ -10,10 +10,9 @@ per-file .gitignore=*
per-file .git-blame-ignore-revs=mgiuca@chromium.org
per-file .git-blame-ignore-revs=thakis@chromium.org
per-file .gn=file://build/OWNERS
per-file .vpython=dnj@chromium.org
per-file .vpython=dpranke@chromium.org
per-file .vpython=iannucci@chromium.org
per-file .vpython=jbudorick@chromium.org
per-file .vpython*=dpranke@chromium.org
per-file .vpython*=iannucci@chromium.org
per-file .vpython*=jbudorick@chromium.org
per-file AUTHORS=*
per-file BUILD.gn=file://build/OWNERS
per-file codereview.settings=agable@chromium.org
@@ -1275,14 +1275,19 @@ def GetIsolateCommand(self, target, vals):
java_coverage = 'jacoco_coverage=true' in vals['gn_args']

test_type = isolate_map[target]['type']
use_python3 = isolate_map[target].get('use_python3', False)

executable = isolate_map[target].get('executable', target)
executable_suffix = isolate_map[target].get(
'executable_suffix', '.exe' if is_win else '')

cmdline = []
extra_files = [
'../../.vpython',
if use_python3:
cmdline = [ 'vpython3' ]
extra_files = [ '../../.vpython3' ]
else:
cmdline = [ 'vpython' ]
extra_files = [ '../../.vpython' ]
extra_files += [
'../../testing/test_env.py',
]

@@ -1294,19 +1299,18 @@ def GetIsolateCommand(self, target, vals):
script = isolate_map[target]['script']
if self.platform == 'win32':
script += '.bat'
cmdline = [
cmdline += [
'../../testing/test_env.py',
script,
]
elif test_type == 'fuzzer':
cmdline = [
cmdline += [
'../../testing/test_env.py',
'../../tools/code_coverage/run_fuzz_target.py',
'--fuzzer', './' + target,
'--output-dir', '${ISOLATED_OUTDIR}',
'--timeout', '3600']
elif is_android and test_type != "script":
cmdline = []
if asan:
cmdline += [os.path.join('bin', 'run_with_asan'), '--']
cmdline += [
@@ -1318,20 +1322,20 @@ def GetIsolateCommand(self, target, vals):
if java_coverage:
cmdline += ['--coverage-dir', '${ISOLATED_OUTDIR}']
elif is_fuchsia and test_type != 'script':
cmdline = [
cmdline += [
'../../testing/test_env.py',
os.path.join('bin', 'run_%s' % target),
'--test-launcher-bot-mode',
'--system-log-file', '${ISOLATED_OUTDIR}/system_log'
]
elif is_simplechrome and test_type != 'script':
cmdline = [
cmdline += [
'../../testing/test_env.py',
os.path.join('bin', 'run_%s' % target),
]
elif use_xvfb and test_type == 'windowed_test_launcher':
extra_files.append('../../testing/xvfb.py')
cmdline = [
cmdline += [
'../../testing/xvfb.py',
'./' + str(executable) + executable_suffix,
'--test-launcher-bot-mode',
@@ -1346,7 +1350,7 @@ def GetIsolateCommand(self, target, vals):
'--cfi-diag=%d' % cfi_diag,
]
elif test_type in ('windowed_test_launcher', 'console_test_launcher'):
cmdline = [
cmdline += [
'../../testing/test_env.py',
'./' + str(executable) + executable_suffix,
'--test-launcher-bot-mode',
@@ -1361,7 +1365,6 @@ def GetIsolateCommand(self, target, vals):
'--cfi-diag=%d' % cfi_diag,
]
elif test_type == 'script':
cmdline = []
# If we're testing a CrOS simplechrome build, assume we need to prepare a
# DUT for testing. So prepend the command to run with the test wrapper.
if is_simplechrome:

0 comments on commit 234580e

Please sign in to comment.
You can’t perform that action at this time.