зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1716963 - Don't call cleanup from __del__ if it already ran, r=webdriver-reviewers,whimboo
Allow marionette users to opt out of __del__ doing any work by first explictly calling cleanup(). Differential Revision: https://phabricator.services.mozilla.com/D118147
This commit is contained in:
Родитель
1bbd67c762
Коммит
83bd42eb4d
|
@ -447,7 +447,6 @@ class Marionette(object):
|
|||
:param app: Type of ``instance_class`` to use for managing app
|
||||
instance. See ``marionette_driver.geckoinstance``.
|
||||
:param instance_args: Arguments to pass to ``instance_class``.
|
||||
|
||||
"""
|
||||
self.host = "127.0.0.1" # host
|
||||
if int(port) == 0:
|
||||
|
@ -466,6 +465,7 @@ class Marionette(object):
|
|||
self._test_name = None
|
||||
self.crashed = 0
|
||||
self.is_shutting_down = False
|
||||
self.cleanup_ran = False
|
||||
|
||||
if socket_timeout is None:
|
||||
self.socket_timeout = self.DEFAULT_SOCKET_TIMEOUT
|
||||
|
@ -531,9 +531,11 @@ class Marionette(object):
|
|||
raise errors.UnresponsiveInstanceException(
|
||||
"Application clean-up has failed >2 consecutive times."
|
||||
)
|
||||
self.cleanup_ran = True
|
||||
|
||||
def __del__(self):
|
||||
self.cleanup()
|
||||
if not self.cleanup_ran:
|
||||
self.cleanup()
|
||||
|
||||
@staticmethod
|
||||
def check_port_available(port, host=""):
|
||||
|
@ -1193,6 +1195,7 @@ class Marionette(object):
|
|||
|
||||
self.session_id = resp["sessionId"]
|
||||
self.session = resp["capabilities"]
|
||||
self.cleanup_ran = False
|
||||
# fallback to processId can be removed in Firefox 55
|
||||
self.process_id = self.session.get(
|
||||
"moz:processID", self.session.get("processId")
|
||||
|
|
|
@ -734,11 +734,12 @@ class MarionetteProtocol(Protocol):
|
|||
try:
|
||||
self.marionette._request_in_app_shutdown()
|
||||
self.marionette.delete_session(send_request=False)
|
||||
self.marionette.cleanup()
|
||||
except Exception:
|
||||
# This is typically because the session never started
|
||||
pass
|
||||
if self.marionette is not None:
|
||||
del self.marionette
|
||||
self.marionette = None
|
||||
super(MarionetteProtocol, self).teardown()
|
||||
|
||||
def is_alive(self):
|
||||
|
|
Загрузка…
Ссылка в новой задаче