gecko-dev/build/gen_test_packages_manifest.py
Wes Kocher e1ade7ef8a Backed out 8 changesets (bug 1286900) for win7vm wpt timeouts a=backout
Backed out changeset 3fff88de2f2d (bug 1286900)
Backed out changeset 748abfe6748e (bug 1286900)
Backed out changeset b4844ee1e542 (bug 1286900)
Backed out changeset bde587e47d00 (bug 1286900)
Backed out changeset a1311218621b (bug 1286900)
Backed out changeset 2de97e3cfcb3 (bug 1286900)
Backed out changeset 43df1e962f8e (bug 1286900)
Backed out changeset 6ed46e8ac86c (bug 1286900)
2016-10-04 17:17:07 -07:00

85 lines
2.9 KiB
Python

#!/usr/bin/python
#
# 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/.
import json
from argparse import ArgumentParser
ALL_HARNESSES = [
'common', # Harnesses without a specific package will look here.
'mochitest',
'reftest',
'xpcshell',
'cppunittest',
'jittest',
'mozbase',
'web-platform',
'talos',
'gtest',
]
PACKAGE_SPECIFIED_HARNESSES = [
'cppunittest',
'mochitest',
'reftest',
'xpcshell',
'web-platform',
'talos',
]
# These packages are not present for every build configuration.
OPTIONAL_PACKAGES = [
'gtest',
]
def parse_args():
parser = ArgumentParser(description='Generate a test_packages.json file to tell automation which harnesses require which test packages.')
parser.add_argument("--common", required=True,
action="store", dest="tests_common",
help="Name of the \"common\" archive, a package to be used by all harnesses.")
parser.add_argument("--jsshell", required=True,
action="store", dest="jsshell",
help="Name of the jsshell zip.")
for harness in PACKAGE_SPECIFIED_HARNESSES:
parser.add_argument("--%s" % harness, required=True,
action="store", dest=harness,
help="Name of the %s zip." % harness)
for harness in OPTIONAL_PACKAGES:
parser.add_argument("--%s" % harness, required=False,
action="store", dest=harness,
help="Name of the %s zip." % harness)
parser.add_argument("--dest-file", required=True,
action="store", dest="destfile",
help="Path to the output file to be written.")
return parser.parse_args()
def generate_package_data(args):
# Generate a dictionary mapping test harness names (exactly as they're known to
# mozharness and testsuite-targets.mk, ideally) to the set of archive names that
# harness depends on to run.
# mozharness will use this file to determine what test zips to download,
# which will be an optimization once parts of the main zip are split to harness
# specific zips.
tests_common = args.tests_common
jsshell = args.jsshell
harness_requirements = dict([(k, [tests_common]) for k in ALL_HARNESSES])
harness_requirements['jittest'].append(jsshell)
for harness in PACKAGE_SPECIFIED_HARNESSES + OPTIONAL_PACKAGES:
pkg_name = getattr(args, harness, None)
if pkg_name is None:
continue
harness_requirements[harness].append(pkg_name)
return harness_requirements
if __name__ == '__main__':
args = parse_args()
packages_data = generate_package_data(args)
with open(args.destfile, 'w') as of:
json.dump(packages_data, of, indent=4)