Execute(ale#python#HandleTraceback returns empty List for empty lines):
  AssertEqual
  \  [],
  \  ale#python#HandleTraceback([], 10)

Execute(ale#python#HandleTraceback returns traceback, when present):
  AssertEqual
  \  [{
  \    'lnum': 1,
  \    'text': 'Exception: Example error (See :ALEDetail)',
  \    'detail': join([
  \      'Traceback (most recent call last):',
  \      '  File "./example.py", line 5, in <module>',
  \      '    raise Exception(''Example message'')',
  \      'Exception: Example error',
  \    ], "\n"),
  \  }],
  \  ale#python#HandleTraceback([
  \    'Traceback (most recent call last):',
  \    '  File "./example.py", line 5, in <module>',
  \    '    raise Exception(''Example message'')',
  \    'Exception: Example error',
  \  ], 1)

" SyntaxError has extra output lines about the source
Execute(ale#python#HandleTraceback returns SyntaxError traceback):
  AssertEqual
  \  [{
  \    'lnum': 1,
  \    'text': 'SyntaxError: invalid syntax (See :ALEDetail)',
  \    'detail': join([
  \      'Traceback (most recent call last):',
  \      '  File "<string>", line 1, in <module>',
  \      '  File "example.py", line 5',
  \      '    +',
  \      '    ^',
  \      'SyntaxError: invalid syntax',
  \    ], "\n"),
  \  }],
  \  ale#python#HandleTraceback([
  \    'Traceback (most recent call last):',
  \    '  File "<string>", line 1, in <module>',
  \    '  File "example.py", line 5',
  \    '    +',
  \    '    ^',
  \    'SyntaxError: invalid syntax',
  \  ], 1)

Execute(ale#python#HandleTraceback ignores traceback after line limit):
  AssertEqual
  \  [],
  \  ale#python#HandleTraceback([
  \    '',
  \    'Traceback (most recent call last):',
  \    '  File "./example.py", line 5, in <module>',
  \    '    raise Exception(''Example message'')',
  \    'Exception: Example error',
  \  ], 1)

Execute(ale#python#HandleTraceback doesn't include later lines in detail):
  AssertEqual
  \  [{
  \    'lnum': 1,
  \    'text': 'Exception: Example error (See :ALEDetail)',
  \    'detail': join([
  \      'Traceback (most recent call last):',
  \      '  File "./example.py", line 5, in <module>',
  \      '    raise Exception(''Example message'')',
  \      'Exception: Example error',
  \    ], "\n"),
  \  }],
  \  ale#python#HandleTraceback([
  \    'Traceback (most recent call last):',
  \    '  File "./example.py", line 5, in <module>',
  \    '    raise Exception(''Example message'')',
  \    'Exception: Example error',
  \    'file:1:2: Style issue',
  \    'file:3:4: Non-style issue',
  \  ], 1)