author | Ehsan Akhgari <ehsan@mozilla.com> |
Fri, 30 Sep 2016 00:36:39 -0400 | |
changeset 317891 | b9b472734bfa43b19779fb9cb984292956534a94 |
parent 317890 | c9d87bca44d8a62e5ed2682bc53c2328da74e211 |
child 317892 | 02d134905768654fc3ebfb7f72ac15584f03c2cc |
push id | 33170 |
push user | cbook@mozilla.com |
push date | Fri, 14 Oct 2016 10:37:07 +0000 |
treeherder | autoland@0d101ebfd95c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | maja_zf |
bugs | 1261019 |
milestone | 52.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/testing/marionette/harness/marionette/marionette_test/testcases.py +++ b/testing/marionette/harness/marionette/marionette_test/testcases.py @@ -426,17 +426,16 @@ class MarionetteTestCase(CommonTestCase) def __init__(self, marionette_weakref, methodName='runTest', filepath='', **kwargs): self._marionette_weakref = marionette_weakref self.marionette = None self.methodName = methodName self.filepath = filepath self.testvars = kwargs.pop('testvars', None) - self.test_container = kwargs.pop('test_container', None) CommonTestCase.__init__(self, methodName, **kwargs) @classmethod def add_tests_to_suite(cls, mod_name, filepath, suite, testloader, marionette, testvars, **kwargs): # since we use imp.load_source to load test modules, if a module # is loaded with the same name as another one the module would just be # reloaded. @@ -509,17 +508,16 @@ class MarionetteJSTestCase(CommonTestCas match_re = re.compile(r"test_(.*)\.js$") def __init__(self, marionette_weakref, methodName='runTest', jsFile=None, **kwargs): assert(jsFile) self.jsFile = jsFile self._marionette_weakref = marionette_weakref self.marionette = None - self.test_container = kwargs.pop('test_container', None) CommonTestCase.__init__(self, methodName) @classmethod def add_tests_to_suite(cls, mod_name, filepath, suite, testloader, marionette, testvars, **kwargs): suite.addTest(cls(weakref.ref(marionette), jsFile=filepath, **kwargs)) def runTest(self):
--- a/testing/marionette/harness/marionette/runner/base.py +++ b/testing/marionette/harness/marionette/runner/base.py @@ -754,64 +754,16 @@ class BaseMarionetteTestRunner(object): except Exception as e: exc, val, tb = sys.exc_info() msg = "Connection attempt to {0}:{1} failed with error: {2}" raise exc, msg.format(host, port, e), tb if self.workspace: kwargs['workspace'] = self.workspace_path return kwargs - def launch_test_container(self): - if self.marionette.session is None: - self.marionette.start_session() - self.marionette.set_context(self.marionette.CONTEXT_CONTENT) - - result = self.marionette.execute_async_script(""" -if((navigator.mozSettings == undefined) || (navigator.mozSettings == null) || - (navigator.mozApps == undefined) || (navigator.mozApps == null)) { - marionetteScriptFinished(false); - return; -} -let setReq = navigator.mozSettings.createLock().set({'lockscreen.enabled': false}); -setReq.onsuccess = function() { - let appName = 'Test Container'; - let activeApp = window.wrappedJSObject.Service.currentApp; - - // if the Test Container is already open then do nothing - if(activeApp.name === appName){ - marionetteScriptFinished(true); - } - - let appsReq = navigator.mozApps.mgmt.getAll(); - appsReq.onsuccess = function() { - let apps = appsReq.result; - for (let i = 0; i < apps.length; i++) { - let app = apps[i]; - if (app.manifest.name === appName) { - app.launch(); - window.addEventListener('appopen', function apploadtime(){ - window.removeEventListener('appopen', apploadtime); - marionetteScriptFinished(true); - }); - return; - } - } - marionetteScriptFinished(false); - } - appsReq.onerror = function() { - marionetteScriptFinished(false); - } -} -setReq.onerror = function() { - marionetteScriptFinished(false); -}""", script_timeout=60000) - - if not result: - raise Exception("Could not launch test container app") - def record_crash(self): crash = True try: crash = self.marionette.check_for_crash() self.crashed += int(crash) except Exception: traceback.print_exc() return crash @@ -970,17 +922,17 @@ setReq.onerror = function() { host = "127.0.0.1" if need_external_ip: host = moznetwork.get_ip() root = self.server_root or os.path.join(os.path.dirname(here), "www") rv = httpd.FixtureServer(root, host=host) rv.start() return rv - def add_test(self, test, expected='pass', test_container=None): + def add_test(self, test, expected='pass'): filepath = os.path.abspath(test) if os.path.isdir(filepath): for root, dirs, files in os.walk(filepath): for filename in files: if filename.endswith('.ini'): msg_tmpl = ("Ignoring manifest '{0}'; running all tests in '{1}'." " See --help for details.") @@ -1021,30 +973,27 @@ setReq.onerror = function() { else: target_tests.append(test) for i in target_tests: if not os.path.exists(i["path"]): raise IOError("test file: {} does not exist".format(i["path"])) file_ext = os.path.splitext(os.path.split(i['path'])[-1])[-1] - test_container = None - self.add_test(i["path"], i["expected"], test_container) + self.add_test(i["path"], i["expected"]) return - self.tests.append({'filepath': filepath, 'expected': expected, - 'test_container': test_container}) + self.tests.append({'filepath': filepath, 'expected': expected}) - def run_test(self, filepath, expected, test_container): + def run_test(self, filepath, expected): testloader = unittest.TestLoader() suite = unittest.TestSuite() self.test_kwargs['expected'] = expected - self.test_kwargs['test_container'] = test_container mod_name = os.path.splitext(os.path.split(filepath)[-1])[0] for handler in self.test_handlers: if handler.match(os.path.basename(filepath)): handler.add_tests_to_suite(mod_name, filepath, suite, testloader, self.marionette, @@ -1053,19 +1002,16 @@ setReq.onerror = function() { break if suite.countTestCases(): runner = self.textrunnerclass(logger=self.logger, marionette=self.marionette, capabilities=self.capabilities, result_callbacks=self.result_callbacks) - if test_container: - self.launch_test_container() - results = runner.run(suite) self.results.append(results) self.failed += len(results.failures) + len(results.errors) if hasattr(results, 'skipped'): self.skipped += len(results.skipped) self.todo += len(results.skipped) self.passed += results.passed @@ -1086,17 +1032,17 @@ setReq.onerror = function() { result.result_modifiers = [] def run_test_set(self, tests): if self.shuffle: random.seed(self.shuffle_seed) random.shuffle(tests) for test in tests: - self.run_test(test['filepath'], test['expected'], test['test_container']) + self.run_test(test['filepath'], test['expected']) if self.record_crash(): break def run_test_sets(self): if len(self.tests) < 1: raise Exception('There are no tests to run.') elif self.total_chunks > len(self.tests): raise ValueError('Total number of chunks must be between 1 and {}.'
--- a/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py +++ b/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py @@ -239,18 +239,17 @@ def _check_crash_counts(has_crashed, run else: assert runner.crashed == 0 @pytest.mark.parametrize("has_crashed", [True, False]) def test_increment_crash_count_in_run_test_set(runner, has_crashed, mock_marionette): fake_tests = [{'filepath': i, - 'expected': 'pass', - 'test_container': False} for i in 'abc'] + 'expected': 'pass'} for i in 'abc'] with patch.multiple(runner, run_test=DEFAULT, marionette=mock_marionette): runner.run_test_set(fake_tests) if not has_crashed: assert runner.marionette.check_for_crash.call_count == len(fake_tests) _check_crash_counts(has_crashed, runner, runner.marionette) @@ -263,17 +262,17 @@ def test_record_crash(runner, has_crashe def test_add_test_module(runner): tests = ['test_something.py', 'testSomething.js', 'bad_test.py'] assert len(runner.tests) == 0 for test in tests: with patch('os.path.abspath', return_value=test) as abspath: runner.add_test(test) assert abspath.called - expected = {'filepath': test, 'expected': 'pass', 'test_container': None} + expected = {'filepath': test, 'expected': 'pass'} assert expected in runner.tests # add_test doesn't validate module names; 'bad_test.py' gets through assert len(runner.tests) == 3 def test_add_test_directory(runner): test_dir = 'path/to/tests' dir_contents = [
--- a/testing/marionette/harness/marionette/tests/unit-tests.ini +++ b/testing/marionette/harness/marionette/tests/unit-tests.ini @@ -1,11 +1,10 @@ ; marionette unit tests [include:unit/unit-tests.ini] -test_container = true ; layout tests [include:../../../../../layout/base/tests/marionette/manifest.ini] ; microformats tests [include:../../../../../toolkit/components/microformats/manifest.ini] ; migration tests
--- a/testing/marionette/harness/session/runner/base.py +++ b/testing/marionette/harness/session/runner/base.py @@ -670,17 +670,17 @@ class BaseSessionTestRunner(object): host = "127.0.0.1" if need_external_ip: host = moznetwork.get_ip() root = self.server_root or os.path.join(os.path.dirname(here), "www") rv = httpd.FixtureServer(root, host=host) rv.start() return rv - def add_test(self, test, expected='pass', test_container=None): + def add_test(self, test, expected='pass'): filepath = os.path.abspath(test) if os.path.isdir(filepath): for root, dirs, files in os.walk(filepath): for filename in files: if (filename.startswith('test_') and (filename.endswith('.py') or filename.endswith('.js'))): filepath = os.path.join(root, filename) @@ -713,50 +713,45 @@ class BaseSessionTestRunner(object): else: target_tests.append(test) for i in target_tests: if not os.path.exists(i["path"]): raise IOError("test file: {} does not exist".format(i["path"])) file_ext = os.path.splitext(os.path.split(i['path'])[-1])[-1] - test_container = None - self.add_test(i["path"], i["expected"], test_container) + self.add_test(i["path"], i["expected"]) return - self.tests.append({'filepath': filepath, 'expected': expected, 'test_container': test_container}) + self.tests.append({'filepath': filepath, 'expected': expected}) - def run_test(self, filepath, expected, test_container): + def run_test(self, filepath, expected): testloader = unittest.TestLoader() suite = unittest.TestSuite() self.test_kwargs['binary'] = self.bin self.test_kwargs['expected'] = expected self.test_kwargs['base_url'] = self.base_url - self.test_kwargs['test_container'] = test_container mod_name = os.path.splitext(os.path.split(filepath)[-1])[0] for handler in self.test_handlers: if handler.match(os.path.basename(filepath)): handler.add_tests_to_suite(mod_name, filepath, suite, testloader, self.testvars, **self.test_kwargs) break if suite.countTestCases(): runner = self.textrunnerclass(logger=self.logger, result_callbacks=self.result_callbacks, binary=self.bin) - if test_container: - self.launch_test_container() - results = runner.run(suite) self.results.append(results) self.failed += len(results.failures) + len(results.errors) if hasattr(results, 'skipped'): self.skipped += len(results.skipped) self.todo += len(results.skipped) self.passed += results.passed @@ -775,17 +770,17 @@ class BaseSessionTestRunner(object): result.result_modifiers = [] def run_test_set(self, tests): if self.shuffle: random.seed(self.shuffle_seed) random.shuffle(tests) for test in tests: - self.run_test(test['filepath'], test['expected'], test['test_container']) + self.run_test(test['filepath'], test['expected']) def run_test_sets(self): if len(self.tests) < 1: raise Exception('There are no tests to run.') elif self.total_chunks > len(self.tests): raise ValueError('Total number of chunks must be between 1 and {}.' .format(len(self.tests))) if self.total_chunks > 1:
--- a/testing/marionette/harness/session/session_test.py +++ b/testing/marionette/harness/session/session_test.py @@ -412,17 +412,16 @@ class SessionTestCase(CommonTestCase): match_re = re.compile(r"test_(.*)\.py$") def __init__(self, methodName='runTest', filepath='', **kwargs): self.marionette = None self.methodName = methodName self.filepath = filepath self.testvars = kwargs.pop('testvars', None) - self.test_container = kwargs.pop('test_container', None) CommonTestCase.__init__(self, methodName, **kwargs) @classmethod def add_tests_to_suite(cls, mod_name, filepath, suite, testloader, testvars, **kwargs): # since we use imp.load_source to load test modules, if a module # is loaded with the same name as another one the module would just be # reloaded. # @@ -468,17 +467,16 @@ class SessionTestCase(CommonTestCase): class SessionJSTestCase(CommonTestCase): match_re = re.compile(r"test_(.*)\.js$") def __init__(self, methodName='runTest', jsFile=None, **kwargs): assert(jsFile) self.jsFile = jsFile self.marionette = None - self.test_container = kwargs.pop('test_container', None) CommonTestCase.__init__(self, methodName) @classmethod def add_tests_to_suite(cls, mod_name, filepath, suite, testloader, testvars, **kwargs): suite.addTest(cls(jsFile=filepath, **kwargs)) def runTest(self): self.run_js_test(self.jsFile)