diff options
Diffstat (limited to 'testing/mozharness/mozharness/mozilla/testing/verify_tools.py')
-rw-r--r-- | testing/mozharness/mozharness/mozilla/testing/verify_tools.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/testing/mozharness/mozharness/mozilla/testing/verify_tools.py b/testing/mozharness/mozharness/mozilla/testing/verify_tools.py new file mode 100644 index 0000000000..3cf19351c5 --- /dev/null +++ b/testing/mozharness/mozharness/mozilla/testing/verify_tools.py @@ -0,0 +1,69 @@ +#!/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 |