예제 #1
0
def test_trim_function_name():
    assert trim_function_name('+[foo:(bar)]', 'objc') == '+[foo:(bar)]'
    assert trim_function_name('[foo:(bar)]', 'objc') == '[foo:(bar)]'
    assert trim_function_name('-[foo:(bar)]', 'objc') == '-[foo:(bar)]'
    assert trim_function_name('(anonymous namespace)::foo(int)',
                              'native') == '(anonymous namespace)::foo'
    assert trim_function_name('foo::bar::foo(int)',
                              'native') == 'foo::bar::foo'
예제 #2
0
def get_crash_location(exception, platform=None):
    default = None
    for frame in reversed(
            get_path(exception, 'stacktrace', 'frames', filter=True) or ()):
        fn = frame.get('filename') or frame.get('abs_path')
        if fn:
            func = frame.get('function')
            if func is not None:
                from sentry.interfaces.stacktrace import trim_function_name
                func = trim_function_name(func,
                                          frame.get('platform') or platform)
            if frame.get('in_app'):
                return fn, func
            if default is None:
                default = fn, func
    return default