Allow Servo tests to be built/run with --release mode

Fixes #5075
This commit is contained in:
Corey Farwell 2015-08-10 08:57:24 -04:00
parent 5374812932
commit f873db5ab0
2 changed files with 20 additions and 11 deletions

View file

@ -314,11 +314,15 @@ class MachCommands(CommandBase):
@CommandArgument('--jobs', '-j',
default=None,
help='Number of jobs to run in parallel')
def build_tests(self, jobs=None):
@CommandArgument('--release', default=False, action="store_true",
help="Build tests with release mode")
def build_tests(self, jobs=None, release=False):
self.ensure_bootstrapped()
args = ["cargo", "test", "--no-run"]
if is_headless_build():
args += ["--no-default-features", "--features", "headless"]
if release:
args += ["--release"]
return subprocess.call(
args,
env=self.build_env(), cwd=self.servo_crate())

View file

@ -41,27 +41,29 @@ class MachCommands(CommandBase):
if not hasattr(self.context, "built_tests"):
self.context.built_tests = False
def ensure_built_tests(self):
def ensure_built_tests(self, release=False):
if self.context.built_tests:
return
returncode = Registrar.dispatch('build-tests', context=self.context)
returncode = Registrar.dispatch(
'build-tests', context=self.context, release=release)
if returncode:
sys.exit(returncode)
self.context.built_tests = True
def find_test(self, prefix):
def find_test(self, prefix, release=False):
build_mode = "release" if release else "debug"
target_contents = os.listdir(path.join(
self.get_target_dir(), "debug"))
self.get_target_dir(), build_mode))
for filename in target_contents:
if filename.startswith(prefix + "-"):
filepath = path.join(
self.get_target_dir(), "debug", filename)
self.get_target_dir(), build_mode, filename)
if path.isfile(filepath) and os.access(filepath, os.X_OK):
return filepath
def run_test(self, prefix, args=[]):
t = self.find_test(prefix)
def run_test(self, prefix, args=[], release=False):
t = self.find_test(prefix, release=release)
if t:
return subprocess.call([t] + args, env=self.build_env())
@ -160,6 +162,8 @@ class MachCommands(CommandBase):
category='testing')
@CommandArgument('--kind', '-k', default=DEFAULT_RENDER_MODE,
help=HELP_RENDER_MODE)
@CommandArgument('--release', '-r', action='store_true',
help='Run with a release build of Servo')
@CommandArgument('--name', default=None,
help="Only run tests that match this pattern. If the "
"path to the ref test directory is included, it "
@ -167,9 +171,10 @@ class MachCommands(CommandBase):
@CommandArgument(
'servo_params', default=None, nargs=argparse.REMAINDER,
help="Command-line arguments to be passed through to Servo")
def test_ref(self, kind=DEFAULT_RENDER_MODE, name=None, servo_params=None):
def test_ref(self, kind=DEFAULT_RENDER_MODE, name=None, servo_params=None,
release=False):
self.ensure_bootstrapped()
self.ensure_built_tests()
self.ensure_built_tests(release=release)
assert kind is not None, 'kind cannot be None, see help'
kinds = ["cpu", "gpu"] if kind == 'both' else [kind]
@ -193,7 +198,7 @@ class MachCommands(CommandBase):
test_args.append(name)
if servo_params is not None:
test_args += ["--"] + servo_params
ret = self.run_test("reftest", test_args)
ret = self.run_test("reftest", test_args, release=release)
error = error or ret != 0
elapsed = time() - test_start