зеркало из https://github.com/mozilla/gecko-dev.git
100 строки
3.8 KiB
Python
100 строки
3.8 KiB
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/.
|
||
|
|
||
|
# Integrates luciddream test runner with mach.
|
||
|
|
||
|
import os
|
||
|
import re
|
||
|
import sys
|
||
|
|
||
|
import mozpack.path as mozpath
|
||
|
|
||
|
from mozbuild.base import (
|
||
|
MachCommandBase,
|
||
|
MachCommandConditions as conditions,
|
||
|
MozbuildObject,
|
||
|
)
|
||
|
|
||
|
from mach.decorators import (
|
||
|
CommandArgument,
|
||
|
CommandProvider,
|
||
|
Command,
|
||
|
)
|
||
|
|
||
|
class LucidDreamRunner(MozbuildObject):
|
||
|
"""Run luciddream tests."""
|
||
|
def run_tests(self, **kwargs):
|
||
|
self._run_make(target='jetpack-tests')
|
||
|
|
||
|
@CommandProvider
|
||
|
class MachCommands(MachCommandBase):
|
||
|
@Command('luciddream', category='testing',
|
||
|
description='Runs the luciddream test suite.')
|
||
|
@CommandArgument("--consoles", action="store_true",
|
||
|
help="Open jsconsole in both runtimes.")
|
||
|
@CommandArgument('--b2g-desktop', dest="b2g_desktop_path", type=str, default=None,
|
||
|
help='Path to b2g desktop binary.')
|
||
|
@CommandArgument('--browser', dest="browser_path", type=str, default=None,
|
||
|
help='Path to firefox binary.')
|
||
|
@CommandArgument('--gaia-profile', type=str, default=None,
|
||
|
help='Path to gaia profile, optional, if not bundled with b2g desktop.')
|
||
|
@CommandArgument('--emulator', dest="emulator_path", type=str, default=None,
|
||
|
help='Path to android emulator.')
|
||
|
@CommandArgument('--emulator-arch', type=str, default="arm",
|
||
|
help='Emulator arch: x86 or arm.')
|
||
|
@CommandArgument('test_paths', default=None, nargs='*', metavar='TEST',
|
||
|
help='Test to run. Can be specified as a single file, a '
|
||
|
'directory, or omitted. If omitted, the entire test suite is '
|
||
|
'executed.')
|
||
|
def run_luciddream_test(self, browser_path, b2g_desktop_path, test_paths, consoles, **params):
|
||
|
# import luciddream lazily as its marionette dependency make ./mach clobber fails
|
||
|
# early on TBPL
|
||
|
import luciddream.runluciddream
|
||
|
|
||
|
# get_binary_path is going to throw if we haven't built any product
|
||
|
# but luciddream can still be run if we provide both binaries...
|
||
|
binary_path=False
|
||
|
try:
|
||
|
binary_path = self.get_binary_path()
|
||
|
except Exception:
|
||
|
pass
|
||
|
|
||
|
# otherwise, if we have a build, automatically fetch the binary
|
||
|
if conditions.is_b2g(self):
|
||
|
if not b2g_desktop_path and binary_path:
|
||
|
b2g_desktop_path = binary_path
|
||
|
else:
|
||
|
if not browser_path and binary_path:
|
||
|
browser_path = binary_path
|
||
|
|
||
|
if not browser_path:
|
||
|
print "Need firefox binary path via --browser_path argument"
|
||
|
return 1
|
||
|
elif not os.path.exists(browser_path):
|
||
|
print "Firefox binary doesn't exists: " + browser_path
|
||
|
return 1
|
||
|
|
||
|
if not b2g_desktop_path:
|
||
|
print "Need b2g desktop binary path via --b2g-desktop argument"
|
||
|
return 1
|
||
|
elif not os.path.exists(b2g_desktop_path):
|
||
|
print "B2G desktop binary doesn't exists: " + b2g_desktop_path
|
||
|
return 1
|
||
|
|
||
|
if not test_paths or len(test_paths) == 0:
|
||
|
print "Please specify a test manifest to run"
|
||
|
return 1
|
||
|
|
||
|
browser_args = None
|
||
|
if consoles:
|
||
|
browser_args = ["-jsconsole"]
|
||
|
if "app_args" in params and isinstance(params["app_args"], list):
|
||
|
params["app_args"].append("-jsconsole")
|
||
|
else:
|
||
|
params["app_args"] = ["-jsconsole"]
|
||
|
|
||
|
for test in test_paths:
|
||
|
luciddream.runluciddream.run(browser_path=browser_path, b2g_desktop_path=b2g_desktop_path,
|
||
|
manifest=test, browser_args=browser_args, **params)
|