Before:
  runtime ale_linters/yaml/spectral.vim

After:
  call ale#linter#Reset()

Execute(spectral handler should parse lines correctly):
  AssertEqual
  \ [
  \   {
  \     'lnum': 1,
  \     'col': 1,
  \     'code': 'oas3-api-servers',
  \     'text': 'OpenAPI `servers` must be present and non-empty array.',
  \     'type': 'W'
  \   },
  \   {
  \     'lnum': 1,
  \     'col': 1,
  \     'code': 'oas3-schema',
  \     'text': 'Object should have required property `paths`.',
  \     'type': 'E'
  \   },
  \   {
  \     'lnum': 1,
  \     'col': 1,
  \     'code': 'openapi-tags',
  \     'text': 'OpenAPI object should have non-empty `tags` array.',
  \     'type': 'W'
  \   },
  \   {
  \     'lnum': 3,
  \     'col': 6,
  \     'code': 'info-contact',
  \     'text': 'Info object should contain `contact` object.',
  \     'type': 'W'
  \   },
  \   {
  \     'lnum': 3,
  \     'col': 6,
  \     'code': 'oas3-schema',
  \     'text': '`info` property should have required property `version`.',
  \     'type': 'E'
  \   },
  \ ],
  \ ale#handlers#spectral#HandleSpectralOutput(bufnr(''), [
  \   'openapi.yml:1:1 warning oas3-api-servers "OpenAPI `servers` must be present and non-empty array."',
  \   'openapi.yml:1:1 error oas3-schema "Object should have required property `paths`."',
  \   'openapi.yml:1:1 warning openapi-tags "OpenAPI object should have non-empty `tags` array."',
  \   'openapi.yml:3:6 warning info-contact "Info object should contain `contact` object."',
  \   'openapi.yml:3:6 error oas3-schema "`info` property should have required property `version`."',
  \ ])
