diff options
Diffstat (limited to 'build/gen_test_packages_manifest.py')
-rw-r--r-- | build/gen_test_packages_manifest.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/build/gen_test_packages_manifest.py b/build/gen_test_packages_manifest.py new file mode 100644 index 000000000..1e2a7c3bb --- /dev/null +++ b/build/gen_test_packages_manifest.py @@ -0,0 +1,84 @@ +#!/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) |