add spectral linter for yaml

ci
This commit is contained in:
tatsuya
2020-12-13 17:06:23 +09:00
parent c374736301
commit 5a47d878fb
9 changed files with 160 additions and 0 deletions

View File

View File

@@ -0,0 +1,31 @@
Before:
call ale#assert#SetUpLinterTest('yaml', 'spectral')
After:
call ale#assert#TearDownLinterTest()
Execute(The yaml spectral command callback should return the correct default string):
AssertLinter 'spectral', ale#Escape('spectral') . ' lint --ignore-unknown-format -q -f text %t'
Execute(The yaml spectral command callback should be configurable):
let g:ale_yaml_spectral_executable = '~/.local/bin/spectral'
AssertLinter '~/.local/bin/spectral',
\ ale#Escape('~/.local/bin/spectral')
\ . ' lint --ignore-unknown-format -q -f text %t'
Execute(The yaml spectral command callback should allow a global installation to be used):
let g:ale_yaml_spectral_executable = '/usr/local/bin/spectral'
let g:ale_yaml_spectral_use_global = 1
AssertLinter '/usr/local/bin/spectral',
\ ale#Escape('/usr/local/bin/spectral')
\ . ' lint --ignore-unknown-format -q -f text %t'
Execute(The yaml spectral command callback should allow a local installation to be used):
call ale#test#SetFilename('spectral_paths/openapi.yaml')
AssertLinter
\ ale#path#Simplify(g:dir . '/spectral_paths/node_modules/.bin/spectral'),
\ ale#Escape(ale#path#Simplify(g:dir . '/spectral_paths/node_modules/.bin/spectral'))
\ . ' lint --ignore-unknown-format -q -f text %t'

View File

@@ -0,0 +1,52 @@
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_linters#yaml#spectral#Handle(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`."',
\ ])