Bug 1168803 - Add --addon option to specify add-ons to be installed. r=dburns

--HG--
extra : commitid : peO1rLe9oG
extra : rebase_source : b557243a86a861a535b098e4965cd371dfd60877
This commit is contained in:
Julien Pagès 2015-07-18 10:53:10 +02:00
Родитель b493db78f7
Коммит 78bf9783e7
4 изменённых файлов: 21 добавлений и 7 удалений

Просмотреть файл

@ -333,6 +333,10 @@ class BaseMarionetteOptions(OptionParser):
action='store',
help='profile to use when launching the gecko process. if not passed, then a profile will be '
'constructed and used')
self.add_option('--addon',
dest='addons',
action='append',
help="addon to install; repeat for multiple addons.")
self.add_option('--repeat',
dest='repeat',
action='store',
@ -511,7 +515,7 @@ class BaseMarionetteTestRunner(object):
server_root=None, gecko_log=None, result_callbacks=None,
adb_host=None, adb_port=None, prefs=None, test_tags=None,
socket_timeout=BaseMarionetteOptions.socket_timeout_default,
startup_timeout=None, **kwargs):
startup_timeout=None, addons=None, **kwargs):
self.address = address
self.emulator = emulator
self.emulator_binary = emulator_binary
@ -522,6 +526,7 @@ class BaseMarionetteTestRunner(object):
self.app_args = app_args or []
self.bin = binary
self.profile = profile
self.addons = addons
self.logger = logger
self.no_window = no_window
self.httpd = None
@ -666,6 +671,7 @@ class BaseMarionetteTestRunner(object):
'app_args': self.app_args,
'bin': self.bin,
'profile': self.profile,
'addons': self.addons,
'gecko_log': self.gecko_log,
})

Просмотреть файл

@ -32,13 +32,14 @@ class GeckoInstance(object):
"focusmanager.testmode": True,
"startup.homepage_welcome_url": "about:blank"}
def __init__(self, host, port, bin, profile=None, app_args=None, symbols_path=None,
gecko_log=None, prefs=None):
def __init__(self, host, port, bin, profile=None, addons=None,
app_args=None, symbols_path=None, gecko_log=None, prefs=None):
self.marionette_host = host
self.marionette_port = port
self.bin = bin
# Check if it is a Profile object or a path to profile
self.profile = None
self.addons = addons
if isinstance(profile, Profile):
self.profile = profile
else:
@ -77,6 +78,8 @@ class GeckoInstance(object):
"devtools.debugger.prompt-connection": False,
"marionette.debugging.clicktostart": True,
})
if self.addons:
profile_args['addons'] = self.addons
if hasattr(self, "profile_path") and self.profile is None:
if not self.profile_path:

Просмотреть файл

@ -545,7 +545,7 @@ class Marionette(object):
TIMEOUT_PAGE = 'page load'
def __init__(self, host='localhost', port=2828, app=None, app_args=None, bin=None,
profile=None, emulator=None, sdcard=None, emulator_img=None,
profile=None, addons=None, emulator=None, sdcard=None, emulator_img=None,
emulator_binary=None, emulator_res=None, connect_to_running_emulator=False,
gecko_log=None, homedir=None, baseurl=None, no_window=False, logdir=None,
busybox=None, symbols_path=None, timeout=None, socket_timeout=360,
@ -555,6 +555,7 @@ class Marionette(object):
self.port = self.local_port = port
self.bin = bin
self.profile = profile
self.addons = addons
self.instance = None
self.session = None
self.session_id = None
@ -597,7 +598,8 @@ class Marionette(object):
self.instance = instance_class(host=self.host, port=self.port,
bin=self.bin, profile=self.profile,
app_args=app_args, symbols_path=symbols_path,
gecko_log=gecko_log, prefs=prefs)
gecko_log=gecko_log, prefs=prefs,
addons=self.addons)
self.instance.start()
assert(self.wait_for_port(timeout=startup_timeout)), "Timed out waiting for port!"
@ -612,6 +614,7 @@ class Marionette(object):
userdata=emulator_img,
resolution=emulator_res,
profile=self.profile,
addons=self.addons,
adb_path=adb_path,
process_args=process_args)
self.emulator = self.runner.device

Просмотреть файл

@ -27,11 +27,13 @@ class BaseRunner(object):
output_timeout = None
def __init__(self, app_ctx=None, profile=None, clean_profile=True, env=None,
process_class=None, process_args=None, symbols_path=None, dump_save_path=None):
process_class=None, process_args=None, symbols_path=None,
dump_save_path=None, addons=None):
self.app_ctx = app_ctx or DefaultContext()
if isinstance(profile, basestring):
self.profile = self.app_ctx.profile_class(profile=profile)
self.profile = self.app_ctx.profile_class(profile=profile,
addons=addons)
else:
self.profile = profile or self.app_ctx.profile_class(**getattr(self.app_ctx, 'profile_args', {}))