Bug 1081043 - Only check for crashes if we get a MarionetteException or an instance of IOError. r=mdas
--- a/testing/marionette/client/marionette/decorators.py
+++ b/testing/marionette/client/marionette/decorators.py
@@ -1,14 +1,15 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from errors import MarionetteException
from functools import wraps
+import socket
import sys
import traceback
def _find_marionette_in_args(*args, **kwargs):
try:
m = [a for a in args + tuple(kwargs.values()) if hasattr(a, 'session')][0]
except IndexError:
print("Can only apply decorator to function using a marionette object")
@@ -28,20 +29,21 @@ def do_crash_check(func, always=False):
try:
m.check_for_crash()
except:
# don't want to lose the original exception
traceback.print_exc()
try:
return func(*args, **kwargs)
- except (MarionetteException, IOError):
+ except (MarionetteException, socket.error, IOError) as e:
exc, val, tb = sys.exc_info()
- if not always:
- check()
+ if not isinstance(e, MarionetteException) or type(e) is MarionetteException:
+ if not always:
+ check()
raise exc, val, tb
finally:
if always:
check()
return _
def uses_marionette(func):
"""Decorator which creates a marionette session and deletes it