Before:
  call ale#test#SetDirectory('/testplugin/test/handler')

  " Load sca2d
  runtime ale_linters/openscad/sca2d.vim

After:
  call ale#test#RestoreDirectory()
  call ale#linter#Reset()

Execute(The openscad handler should handle sca2d output):
  AssertEqual
  \ [
  \   {
  \     'filename': ale#path#Simplify(g:dir . '/awesome_project.scad'),
  \     'lnum': 7,
  \     'type': 'E',
  \     'col': 42,
  \     'text': 'Module `corcle` used but never defined.',
  \     'detail': 'E2002: Module `corcle` used but never defined.',
  \   },
  \ ],
  \ ale#handlers#openscad#SCA2D_callback(bufnr(''), [
  \  'awesome_project.scad:7:42: E2002: Module `corcle` used but never defined.',
  \   '',
  \   'SCA2D message summary',
  \   '=====================',
  \   'Fatal errors: 0',
  \   'Errors:       1',
  \   'Warnings:     0',
  \   'Info:         0',
  \   'Depreciated   0',
  \ ])

  AssertEqual
  \ [
  \   {
  \     'filename': ale#path#Simplify(g:dir . '/awesome_project.scad'),
  \     'lnum': 1,
  \     'type': 'E',
  \     'col': 37,
  \     'text': 'Cannot read file due to syntax error:   - No terminal matches ''}'' in the current parser context',
  \     'detail': 'F0001: Cannot read file due to syntax error:   - No terminal matches ''}'' in the current parser context',
  \   },
  \ ],
  \ ale#handlers#openscad#SCA2D_callback(bufnr(''), [
  \ 'awesome_project.scad:1:1: F0001: Cannot read file due to syntax error:',
  \ '   - No terminal matches ''}'' in the current parser context, at line 1 col 37',
  \ '   - ',
  \ '   - translate([ 0, 0, 0 ]) { circle(10) }',
  \ '   -                                     ^',
  \ '   - Expected one of: ',
  \ '   - 	* IF',
  \ '   - 	* LET',
  \ '   - 	* FOR',
  \ '   - 	* FUNC_CALL_NAME',
  \ '   - 	* TERMINATION',
  \ '   - 	* STAR',
  \ '   - 	* LBRACE',
  \ '   - 	* BANG',
  \ '   - 	* ASSIGN',
  \ '   - 	* PERCENT',
  \ '   - 	* HASH',
  \ '   - 	* INTERSECTION_FOR',
  \ '   - ',
  \ 'If you believe this is a bug in SCA2D please report it to us.',
  \ '',
  \ '',
  \ 'SCA2D message summary',
  \ '=====================',
  \ 'Fatal errors: 1',
  \ 'Errors:       0',
  \ 'Warnings:     0',
  \ 'Info:         0',
  \ 'Depreciated   0',
  \ ])
