Bug 1278900 - Fix up the test package mach bootstrap script, r=armenzg

This is a bit of a hodge podge of small fixes that I needed to run |mach mochitest|
on an interactive worker. Included:

1) Add some packages to SEARCH_PATHS that mochitest needs
2) Always add SEARCH_PATHS even if mach package is found
3) Don't try to register commands that don't exist (i.e it was in an unused test zip)

MozReview-Commit-ID: BIXcCm4LzE2
This commit is contained in:
Andrew Halberstadt
2016-06-08 10:41:13 -04:00
parent 9a06d599f7
commit aebf974935

View File

@@ -7,10 +7,12 @@ from __future__ import print_function, unicode_literals
import os
import platform
import sys
import time
SEARCH_PATHS = [
'marionette',
'marionette/marionette/runner/mixins/browsermob-proxy-py',
'marionette/client',
'mochitest',
'mozbase/mozcrash',
'mozbase/mozdebug',
@@ -30,6 +32,7 @@ SEARCH_PATHS = [
'mozbase/mozversion',
'mozbase/manifestparser',
'tools/mach',
'tools/wptserve',
]
# Individual files providing mach commands.
@@ -64,6 +67,8 @@ CATEGORIES = {
def bootstrap(test_package_root):
test_package_root = os.path.abspath(test_package_root)
# Ensure we are running Python 2.7+. We put this check here so we generate a
# user-friendly error message rather than a cryptic stack trace on module
# import.
@@ -72,27 +77,31 @@ def bootstrap(test_package_root):
print('You are running Python', platform.python_version())
sys.exit(1)
try:
import mach.main
except ImportError:
sys.path[0:0] = [os.path.join(test_package_root, path) for path in SEARCH_PATHS]
import mach.main
sys.path[0:0] = [os.path.join(test_package_root, path) for path in SEARCH_PATHS]
import mach.main
def populate_context(context, key=None):
if key is not None:
return
context.package_root = test_package_root
context.certs_dir = os.path.join(test_package_root, 'certs')
context.bin_dir = os.path.join(test_package_root, 'bin')
context.modules_dir = os.path.join(test_package_root, 'modules')
return context
mach = mach.main.Mach(os.getcwd())
mach.populate_context_handler = populate_context
for category, meta in CATEGORIES.items():
mach.define_category(category, meta['short'], meta['long'],
meta['priority'])
meta['priority'])
for path in MACH_MODULES:
mach.load_commands_from_file(os.path.join(test_package_root, path))
cmdfile = os.path.join(test_package_root, path)
# Depending on which test zips were extracted,
# the command module might not exist
if os.path.isfile(cmdfile):
mach.load_commands_from_file(cmdfile)
return mach