Source code

Revision control

Copy as Markdown

Other Tools

#!/usr/bin/env python
# ***** BEGIN LICENSE BLOCK *****
# 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/.
# ***** END LICENSE BLOCK *****
from mozharness.base.script import PostScriptAction
from mozharness.mozilla.testing.per_test_base import SingleTestMixin
verify_config_options = [
[
["--verify"],
{
"action": "store_true",
"dest": "verify",
"default": False,
"help": "Run additional verification on modified tests.",
},
],
]
class VerifyToolsMixin(SingleTestMixin):
"""Utility functions for test verification."""
def __init__(self):
super(VerifyToolsMixin, self).__init__()
@property
def verify_enabled(self):
try:
return bool(self.config.get("verify"))
except (AttributeError, KeyError, TypeError):
return False
@PostScriptAction("download-and-extract")
def find_tests_for_verification(self, action, success=None):
"""
For each file modified on this push, determine if the modified file
is a test, by searching test manifests. Populate self.verify_suites
with test files, organized by suite.
This depends on test manifests, so can only run after test zips have
been downloaded and extracted.
"""
if not self.verify_enabled:
return
self.find_modified_tests()
@property
def verify_args(self):
if not self.verify_enabled:
return []
# Limit each test harness run to 15 minutes, to avoid task timeouts
# when executing long-running tests.
MAX_TIME_PER_TEST = 900
if self.config.get("per_test_category") == "web-platform":
args = ["--verify-log-full"]
else:
args = ["--verify-max-time=%d" % MAX_TIME_PER_TEST]
args.append("--verify")
return args