def run_b2g_test(self, b2g_home=None, xre_path=None, test_file=None, suite=None, **kwargs): """Runs a b2g reftest. test_file is a path to a test file. It can be a relative path from the top source directory, an absolute filename, or a directory containing test files. suite is the type of reftest to run. It can be one of ('reftest', 'crashtest'). """ if suite not in ('reftest', 'crashtest'): raise Exception('None or unrecognized reftest suite type.') # Find the manifest file if not test_file: if suite == 'reftest': test_file = mozpack.path.join('layout', 'reftests') elif suite == 'crashtest': test_file = mozpack.path.join('testing', 'crashtest') if not os.path.exists(os.path.join(self.topsrcdir, test_file)): test_file = mozpack.path.relpath(os.path.abspath(test_file), self.topsrcdir) manifest = self._find_manifest(suite, test_file) if not os.path.exists(mozpack.path.join(self.topsrcdir, manifest)): raise Exception('No manifest file was found at %s.' % manifest) # Need to chdir to reftest_dir otherwise imports fail below. os.chdir(self.reftest_dir) # The imp module can spew warnings if the modules below have # already been imported, ignore them. with warnings.catch_warnings(): warnings.simplefilter('ignore') import imp path = os.path.join(self.reftest_dir, 'runreftestb2g.py') with open(path, 'r') as fh: imp.load_module('reftest', fh, path, ('.py', 'r', imp.PY_SOURCE)) import reftest # Set up the reftest options. parser = reftest.B2GOptions() options, args = parser.parse_args([]) # Tests need to be served from a subdirectory of the server. Symlink # topsrcdir here to get around this. tests = os.path.join(self.reftest_dir, 'tests') if not os.path.isdir(tests): os.symlink(self.topsrcdir, tests) args.insert(0, os.path.join('tests', manifest)) for k, v in kwargs.iteritems(): setattr(options, k, v) if conditions.is_b2g_desktop(self): if self.substs.get('ENABLE_MARIONETTE') != '1': print(MARIONETTE_DISABLED % ('mochitest-b2g-desktop', self.mozconfig['path'])) return 1 options.profile = options.profile or os.environ.get('GAIA_PROFILE') if not options.profile: print(GAIA_PROFILE_NOT_FOUND % 'reftest-b2g-desktop') return 1 if os.path.isfile(os.path.join(options.profile, 'extensions', \ '*****@*****.**')): print(GAIA_PROFILE_IS_DEBUG % ('mochitest-b2g-desktop', options.profile)) return 1 options.desktop = True options.app = self.get_binary_path() if options.oop: options.browser_arg = '-oop' if not options.app.endswith('-bin'): options.app = '%s-bin' % options.app if not os.path.isfile(options.app): options.app = options.app[:-len('-bin')] return reftest.run_desktop_reftests(parser, options, args) try: which.which('adb') except which.WhichError: # TODO Find adb automatically if it isn't on the path raise Exception(ADB_NOT_FOUND % ('%s-remote' % suite, b2g_home)) options.b2gPath = b2g_home options.logcat_dir = self.reftest_dir options.httpdPath = os.path.join(self.topsrcdir, 'netwerk', 'test', 'httpserver') options.xrePath = xre_path options.ignoreWindowSize = True # Don't enable oop for crashtest until they run oop in automation if suite == 'reftest': options.oop = True return reftest.run_remote_reftests(parser, options, args)
def run_b2g_test(self, b2g_home, xre_path, test_file=None, suite=None, **kwargs): """Runs a b2g reftest. test_file is a path to a test file. It can be a relative path from the top source directory, an absolute filename, or a directory containing test files. suite is the type of reftest to run. It can be one of ('reftest', 'crashtest'). """ if suite not in ('reftest', 'crashtest'): raise Exception('None or unrecognized reftest suite type.') try: which.which('adb') except which.WhichError: # TODO Find adb automatically if it isn't on the path raise Exception(ADB_NOT_FOUND % ('%s-remote' % suite, b2g_home)) # Find the manifest file if not test_file: if suite == 'reftest': test_file = mozpack.path.join('layout', 'reftests') elif suite == 'crashtest': test_file = mozpack.path.join('testing', 'crashtest') if not os.path.exists(os.path.join(self.topsrcdir, test_file)): test_file = mozpack.path.relpath(os.path.abspath(test_file), self.topsrcdir) manifest = self._find_manifest(suite, test_file) if not os.path.exists(mozpack.path.join(self.topsrcdir, manifest)): raise Exception('No manifest file was found at %s.' % manifest) # Need to chdir to reftest_dir otherwise imports fail below. os.chdir(self.reftest_dir) import imp path = os.path.join(self.reftest_dir, 'runreftestb2g.py') with open(path, 'r') as fh: imp.load_module('reftest', fh, path, ('.py', 'r', imp.PY_SOURCE)) import reftest # Set up the reftest options. parser = reftest.B2GOptions() options, args = parser.parse_args([]) options.b2gPath = b2g_home options.logcat_dir = self.reftest_dir options.httpdPath = os.path.join(self.topsrcdir, 'netwerk', 'test', 'httpserver') options.ignoreWindowSize = True options.xrePath = xre_path for k, v in kwargs.iteritems(): setattr(options, k, v) # Tests need to be served from a subdirectory of the server. Symlink # topsrcdir here to get around this. tests = os.path.join(self.reftest_dir, 'tests') if not os.path.isdir(tests): os.symlink(self.topsrcdir, tests) args.insert(0, os.path.join('tests', manifest)) return reftest.run_remote_reftests(parser, options, args)