[recipe_modules/presubmit] Only run with vpython3.

The time has come :).

R=aravindvasudev@google.com

Bug: 1413668
Recipe-Nontrivial-Roll: build
Change-Id: Ie6e26cc87a22d17eb2e4bc6b8f86895738670eea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4389545
Commit-Queue: Robbie Iannucci <iannucci@chromium.org>
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Aravind Vasudevan <aravindvasudev@google.com>
changes/45/4389545/5
Robert Iannucci 2 years ago committed by LUCI CQ
parent 967cf672eb
commit 330de93b15

@ -758,7 +758,7 @@ Raises:
Returns a presubmit step.
&mdash; **def [execute](/recipes/recipe_modules/presubmit/api.py#130)(self, bot_update_step, skip_owners=False, run_all=False):**
&mdash; **def [execute](/recipes/recipe_modules/presubmit/api.py#101)(self, bot_update_step, skip_owners=False, run_all=False):**
Runs presubmit and sets summary markdown if applicable.
@ -769,7 +769,7 @@ Args:
Returns:
a RawResult object, suitable for being returned from RunSteps.
&mdash; **def [prepare](/recipes/recipe_modules/presubmit/api.py#78)(self, root_solution_revision=None):**
&mdash; **def [prepare](/recipes/recipe_modules/presubmit/api.py#49)(self, root_solution_revision=None):**
Sets up a presubmit run.

@ -30,42 +30,13 @@ class PresubmitApi(recipe_api.RecipeApi):
name = kwargs.pop('name', 'presubmit')
with self.m.depot_tools.on_path():
# Use only vpython3 on bots that don't have vpython2 on the path any
# longer.
# TODO(https://crbug.com/1401307): Switch this to vpython3 premanently
# and remove py3 part below.
experiments = self.m.buildbucket.build.input.experiments
if 'luci.buildbucket.omit_python2' in experiments:
cmd = ['vpython3', self.presubmit_support_path, '--use-python3']
else:
cmd = ['vpython', self.presubmit_support_path]
cmd.extend(args)
cmd.extend(['--json_output', self.m.json.output()])
if self.m.resultdb.enabled:
kwargs['wrapper'] = ('rdb', 'stream', '--')
step_data = self.m.step(name, cmd, **kwargs)
output = step_data.json.output or {}
if self.m.step.active_result.retcode != 0 or \
'luci.buildbucket.omit_python2' in experiments:
return output
presubmit_args = list(args) + [
'--json_output',
self.m.json.output(),
]
step_data = self.m.step(name + " py3",
['vpython3', self.presubmit_support_path] +
presubmit_args, **kwargs)
output2 = step_data.json.output or {}
# combine outputs
for key in output:
if key in output2:
output[key] += output2[key]
del (output2[key])
for key in output2:
output[key] = output2[key]
return output
@property

@ -1,8 +1,9 @@
[
{
"cmd": [
"vpython",
"vpython3",
"RECIPE_REPO[depot_tools]/presubmit_support.py",
"--use-python3",
"--json_output",
"/path/to/tmp/json"
],
@ -20,28 +21,6 @@
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"vpython3",
"RECIPE_REPO[depot_tools]/presubmit_support.py",
"--json_output",
"/path/to/tmp/json"
],
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "presubmit py3",
"~followup_annotations": [
"@@@STEP_LOG_END@json.output (invalid)@@@",
"@@@STEP_LOG_LINE@json.output (exception)@No JSON object could be decoded@@@",
"@@@STEP_LOG_END@json.output (exception)@@@"
]
},
{
"name": "$result"
}

@ -38,7 +38,6 @@ def GenTests(api):
git_repo='https://chromium.googlesource.com/infra/infra'),
api.properties(run_all=True),
api.step_data('presubmit', api.json.output({})),
api.step_data('presubmit py3', api.json.output({})),
api.post_process(post_process.StatusSuccess),
api.post_process(post_process.DropExpectation),
)
@ -145,57 +144,6 @@ def GenTests(api):
Expected "," after item in list
```
#### To see notifications and warnings, look at the stdout of the presubmit step.
''').strip()) + api.post_process(post_process.DropExpectation))
yield (
api.test('failure py3', status="FAILURE") +
api.runtime(is_experimental=False) +
api.buildbucket.try_build(project='infra') + api.step_data(
'presubmit py3',
api.json.output(
{
'errors': [{
'message': 'Missing LGTM',
'long_text': 'Here are some suggested OWNERS: fake@',
'items': [],
'fatal': True
}, {
'message': 'Syntax error in fake.py',
'long_text': 'Expected "," after item in list',
'items': [],
'fatal': True
}],
'notifications': [{
'message': 'If there is a bug associated please add it.',
'long_text': '',
'items': [],
'fatal': False
}],
'warnings': [{
'message': 'Line 100 has more than 80 characters',
'long_text': '',
'items': [],
'fatal': False
}]
},
retcode=1)) + api.post_process(post_process.StatusFailure) +
api.post_process(
post_process.ResultReason,
textwrap.dedent(u'''
#### There are 2 error(s), 1 warning(s), and 1 notifications(s). Here are the errors:
**ERROR**
```
Missing LGTM
Here are some suggested OWNERS: fake@
```
**ERROR**
```
Syntax error in fake.py
Expected "," after item in list
```
#### To see notifications and warnings, look at the stdout of the presubmit step.
''').strip()) + api.post_process(post_process.DropExpectation))
@ -291,25 +239,3 @@ def GenTests(api):
api.post_process(post_process.StatusException) +
api.post_process(post_process.ResultReason, bug_msg) +
api.post_process(post_process.DropExpectation))
yield (api.test('warnings-merged') + api.runtime(is_experimental=False) +
api.buildbucket.try_build(project='infra') + api.step_data(
'presubmit',
api.json.output({
'errors': [],
'notifications': [],
'warnings': [{
'message': 'warning py2'
}]
}),
) + api.step_data(
'presubmit py3',
api.json.output({
'errors': [],
'extra': [],
'warnings': [{
'message': 'warning py3'
}]
}),
) + api.post_process(post_process.StatusSuccess) +
api.post_process(post_process.DropExpectation))

Loading…
Cancel
Save