Bug 1558598 - Force WebRender on or off in the cppunit harness. r=ahal

Also adds it to the mach command, which is a little weird, because the
mach command doesn't expose the option but does parse it via the cpp unit
argument parser. So I just exposed it on the mach command and after that
it Just Works for mach.

Differential Revision: https://phabricator.services.mozilla.com/D35859

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Kartikaya Gupta 2019-06-29 09:49:23 +00:00
Родитель ebe5ebc203
Коммит bb83950948
3 изменённых файлов: 24 добавлений и 9 удалений

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

@ -374,6 +374,9 @@ class Test(MachCommandBase):
class MachCommands(MachCommandBase):
@Command('cppunittest', category='testing',
description='Run cpp unit tests (C++ tests).')
@CommandArgument('--enable-webrender', action='store_true', default=False,
dest='enable_webrender',
help='Enable the WebRender compositor in Gecko.')
@CommandArgument('test_files', nargs='*', metavar='N',
help='Test to run. Can be specified as one or more files or '
'directories, or omitted. If omitted, the entire test suite is '

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

@ -97,8 +97,8 @@ class RemoteCPPUnitTests(cppunittests.CPPUnitTests):
self.remote_bin_dir, os.path.basename(local_file))
self.device.push(local_file, remote_file)
def build_environment(self):
env = self.build_core_environment()
def build_environment(self, enable_webrender=False):
env = self.build_core_environment({}, enable_webrender)
env['LD_LIBRARY_PATH'] = self.remote_bin_dir
env["TMPDIR"] = self.remote_tmp_dir
env["HOME"] = self.remote_home_dir
@ -230,7 +230,8 @@ def run_test_harness(options, args):
mozinfo.info,
options.manifest_path)
tester = RemoteCPPUnitTests(options, [item[0] for item in progs])
result = tester.run_tests(progs, options.xre_path, options.symbols_path)
result = tester.run_tests(progs, options.xre_path, options.symbols_path,
enable_webrender=options.enable_webrender)
return result

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

@ -90,7 +90,7 @@ class CPPUnitTests(object):
self.log.test_end(basename, status='PASS', expected='PASS')
return result
def build_core_environment(self, env={}):
def build_core_environment(self, env, enable_webrender):
"""
Add environment variables likely to be used across all platforms, including remote systems.
"""
@ -100,9 +100,16 @@ class CPPUnitTests(object):
env["XPCOM_DEBUG_BREAK"] = "stack-and-abort"
env["MOZ_CRASHREPORTER_NO_REPORT"] = "1"
env["MOZ_CRASHREPORTER"] = "1"
if enable_webrender:
env['MOZ_WEBRENDER'] = '1'
env['MOZ_ACCELERATED'] = '1'
else:
env['MOZ_WEBRENDER'] = '0'
return env
def build_environment(self):
def build_environment(self, enable_webrender=False):
"""
Create and return a dictionary of all the appropriate env variables and values.
On a remote system, we overload this to set different values and are missing things
@ -111,7 +118,7 @@ class CPPUnitTests(object):
if not os.path.isdir(self.xre_path):
raise Exception("xre_path does not exist: %s", self.xre_path)
env = dict(os.environ)
env = self.build_core_environment(env)
env = self.build_core_environment(env, enable_webrender)
pathvar = ""
libpath = self.xre_path
if mozinfo.os == "linux":
@ -150,7 +157,7 @@ class CPPUnitTests(object):
return env
def run_tests(self, programs, xre_path, symbols_path=None,
utility_path=None, interactive=False):
utility_path=None, enable_webrender=False, interactive=False):
"""
Run a set of C++ unit test programs.
@ -171,7 +178,7 @@ class CPPUnitTests(object):
self.fix_stack = mozrunner.utils.get_stack_fixer_function(
utility_path, symbols_path)
self.log.suite_start(programs, name='cppunittest')
env = self.build_environment()
env = self.build_environment(enable_webrender)
pass_count = 0
fail_count = 0
for prog in programs:
@ -212,6 +219,10 @@ class CPPUnittestOptions(OptionParser):
action="store", type="string", dest="utility_path",
default=None,
help="path to directory containing utility programs")
self.add_option("--enable-webrender",
action="store_true", dest="enable_webrender",
default=False,
help="Enable the WebRender compositor in Gecko")
def extract_unittests_from_args(args, environ, manifest_path):
@ -276,7 +287,7 @@ def run_test_harness(options, args):
options.utility_path = os.path.abspath(options.utility_path)
tester = CPPUnitTests()
result = tester.run_tests(progs, options.xre_path, options.symbols_path,
options.utility_path)
options.utility_path, options.enable_webrender)
return result