# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from taskgraph.transforms.base
import TransformSequence
transforms = TransformSequence()
_ANDROID_TASK_NAME_PREFIX =
"android-"
@transforms.add
def set_component_attribute(config, tasks):
for task
in tasks:
component_name = task.pop(
"component",
None)
if not component_name:
task_name = task[
"name"]
if task_name.startswith(_ANDROID_TASK_NAME_PREFIX):
component_name = task_name[len(_ANDROID_TASK_NAME_PREFIX) :]
else:
raise NotImplementedError(
f
"Cannot determine component name from task {task_name}"
)
attributes = task.setdefault(
"attributes", {})
attributes[
"component"] = component_name
yield task
@transforms.add
def define_ui_test_command_line(config, tasks):
for task
in tasks:
run = task.setdefault(
"run", {})
post_gradlew = run.setdefault(
"post-gradlew", [])
post_gradlew.append(
[
"automation/taskcluster/androidTest/ui-test.sh",
task[
"attributes"][
"component"],
"arm",
"1",
]
)
yield task
@transforms.add
def define_treeherder_symbol(config, tasks):
for task
in tasks:
treeherder = task.setdefault(
"treeherder")
treeherder.setdefault(
"symbol", f
"{task['attributes']['component']}(unit)")
yield task
@transforms.add
def define_description(config, tasks):
for task
in tasks:
task.setdefault(
"description",
f
"Run unit/ui tests on device for {task['attributes']['component']}",
)
yield task