[CodeHealth] Migrate scripts under testing/trigger_scripts to Python3
compatible syntax to permit future migration of all presubmit checks
under testing/ to Python3.
Bug: 1262363
Change-Id: Id39d1fedb106b73a5aa4e4f726e9649cc20e25a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3472947
Reviewed-by: Mike Pinkerton <[email protected]>
Commit-Queue: Joshua Hood <[email protected]>
Cr-Commit-Position: refs/heads/main@{#976264}
diff --git a/testing/PRESUBMIT.py b/testing/PRESUBMIT.py
index 65f2d62..7ba136f 100644
--- a/testing/PRESUBMIT.py
+++ b/testing/PRESUBMIT.py
@@ -20,7 +20,10 @@
output = []
output.extend(input_api.canned_checks.RunUnitTestsInDirectory(
- input_api, output_api, '.', [r'^.+_unittest\.py$']))
+ input_api,
+ output_api,
+ '.',
+ [r'^.+_unittest\.py$']))
output.extend(input_api.canned_checks.RunUnitTestsInDirectory(
input_api,
output_api,
@@ -29,7 +32,16 @@
[r'^.+_unittest\.py$'],
env=testing_env))
output.extend(input_api.canned_checks.RunPylint(
- input_api, output_api, files_to_skip=[r'gmock.*', r'gtest.*']))
+ input_api,
+ output_api,
+ files_to_skip=[r'gmock.*', r'gtest.*', r'trigger_scripts.*']))
+ # Pylint2.7 is run on subdirs whose presubmit checks are migrated to Python3
+ output.extend(input_api.canned_checks.RunPylint(
+ input_api,
+ output_api,
+ files_to_check=[r'trigger_scripts.*\.py$'],
+ version='2.7'))
+
return output
diff --git a/testing/trigger_scripts/base_test_triggerer.py b/testing/trigger_scripts/base_test_triggerer.py
index bdf3ee8b..047f15f 100755
--- a/testing/trigger_scripts/base_test_triggerer.py
+++ b/testing/trigger_scripts/base_test_triggerer.py
@@ -63,7 +63,7 @@
return obj
-class BaseTestTriggerer(object):
+class BaseTestTriggerer(object): # pylint: disable=useless-object-inheritance
def __init__(self):
self._bot_configs = None
self._bot_statuses = []
@@ -133,9 +133,9 @@
self._bot_configs = strip_unicode(
json.loads(args.multiple_trigger_configs))
except Exception as e:
- raise ValueError(
+ six.raise_from(ValueError(
'Error while parsing JSON from bot config string %s: %s' %
- (args.multiple_trigger_configs, str(e)))
+ (args.multiple_trigger_configs, str(e))), e)
# Validate the input.
if not isinstance(self._bot_configs, list):
raise ValueError('Bot configurations must be a list, were: %s' %
@@ -273,12 +273,11 @@
triggered."""
if args.shard_index is None:
return list(range(args.shards))
- else:
- return [args.shard_index]
+ return [args.shard_index]
def generate_shard_map(self, args, buildername, selected_config):
"""Returns shard map generated on runtime if needed."""
- pass
+ pass # pylint: disable=unnecessary-pass
def trigger_tasks(self, args, remaining):
"""Triggers tasks for each bot.
@@ -316,10 +315,12 @@
logging.info('DEBUG: After filtered: %s', filtered_remaining_args)
merged_json = {}
+ #pylint: disable=assignment-from-no-return
selected_config = self.select_config_indices(args)
shard_map = self.generate_shard_map(
args, self._findBuilderName(filtered_remaining_args),
selected_config)
+ #pylint: enable=assignment-from-no-return
# Choose selected configs for this run of the test suite.
for shard_index, bot_index in selected_config:
# For each shard that we're going to distribute, do the following:
@@ -351,12 +352,14 @@
self.write_json_to_file(merged_json, args.dump_json)
return 0
+ # pylint: disable=inconsistent-return-statements
def _findBuilderName(self, args):
args_length = len(args)
for i in range(args_length):
if (args[i] == '--tag' and i < args_length - 1
and args[i + 1].startswith('buildername:')):
return args[i + 1].split(':', 1)[1]
+ # pylint: enable=inconsistent-return-statements
@staticmethod
def setup_parser_contract(parser):
diff --git a/testing/trigger_scripts/perf_device_trigger.py b/testing/trigger_scripts/perf_device_trigger.py
index 20b14d8..edd7a8d 100755
--- a/testing/trigger_scripts/perf_device_trigger.py
+++ b/testing/trigger_scripts/perf_device_trigger.py
@@ -64,7 +64,7 @@
from core import bot_platforms
-class Bot(object):
+class Bot(object): # pylint: disable=useless-object-inheritance
"""Eligible bots to run the task."""
def __init__(self, bot_id, is_alive):
@@ -83,7 +83,9 @@
class PerfDeviceTriggerer(base_test_triggerer.BaseTestTriggerer):
def __init__(self, args, swarming_args):
+ # pylint: disable=super-with-arguments
super(PerfDeviceTriggerer, self).__init__()
+ # pylint: enable=super-with-arguments
self._sharded_query_failed = False
if not args.multiple_trigger_configs:
@@ -131,12 +133,13 @@
if '--' in args:
dash_ind = args.index('--')
return args[:dash_ind] + shard_tag + args[dash_ind:]
- else:
- return args + shard_tag
+ return args + shard_tag
def parse_bot_configs(self, args):
if args.multiple_trigger_configs:
+ # pylint: disable=super-with-arguments
super(PerfDeviceTriggerer, self).parse_bot_configs(args)
+ # pylint: enable=super-with-arguments
else:
self._bot_configs = []
# For each eligible bot, append the dimension
@@ -363,6 +366,7 @@
dimensions[args[i + 1]] = args[i + 2]
return dimensions
+ # pylint: disable=inconsistent-return-statements
def _get_swarming_server(self, args):
for i in range(len(args)):
if '--swarming' in args[i]:
@@ -370,6 +374,7 @@
slashes_index = server.index('//') + 2
# Strip out the protocol
return server[slashes_index:]
+ # pylint: enable=inconsistent-return-statements
def main():
diff --git a/testing/trigger_scripts/perf_device_trigger_unittest.py b/testing/trigger_scripts/perf_device_trigger_unittest.py
index 933f4268..6d6c7c471 100755
--- a/testing/trigger_scripts/perf_device_trigger_unittest.py
+++ b/testing/trigger_scripts/perf_device_trigger_unittest.py
@@ -9,7 +9,7 @@
import perf_device_trigger
-class Args(object):
+class Args(object): # pylint: disable=useless-object-inheritance
def __init__(self):
self.shards = 1
self.shard_index = None
@@ -29,7 +29,9 @@
self._triggered_with_swarming_go = 0
self._list_bots_result = list_bots_result
self._list_tasks_results = list_tasks_results
+ # pylint: disable=super-with-arguments
super(FakeTriggerer, self).__init__(args, swarming_args)
+ # pylint: enable=super-with-arguments
def set_files(self, files):
self._files = files
@@ -141,8 +143,7 @@
# out of the tags.
if shard % 2:
return [{'bot_id': bot_id}]
- else:
- return [{'tags': ['id:%s' % bot_id]}]
+ return [{'tags': ['id:%s' % bot_id]}]
return []
def generate_list_of_eligible_bots_query_response(self, alive_bots,