ale/test/linter/test_ruby_steep.vader
Loic Nageleisen e09520e2d7
Add Ruby linter with Steep (#4671)
* Add Ruby linter with Steep

Fixes #3254

* Run steep instead of using language server

LSP presents a few issues and this works around those.

* Work around Steep path issue

See https://github.com/soutaro/steep/pull/975

* Add simple tests for steep

* Add steep to supported tools

* Pass linter

* Add a comment regarding Steep's column counting

* Make lnum an integer

* Add Steep handler test

* Fix separator for Windows

* Escape Windows path separators for substitute()

* Use ALEInfo (I) group

* Use fnameescape instead of quotes

* Skip linting for files not under steep root

* Add and pass tests covering proper steep root lookup

* Fix separator discrepancy

* Use strict operators (match case)

* Fix ordering

* Use `is#` instead of `==#`
2024-06-25 17:17:27 +09:00

70 lines
2.3 KiB
Plaintext

" Author: Loic Nageleisen <https://github.com/lloeki>
" Description: Tests for steep linter.
Before:
call ale#assert#SetUpLinterTest('ruby', 'steep')
let g:ale_ruby_steep_executable = 'steep'
After:
call ale#assert#TearDownLinterTest()
Execute(Executable should default to steep):
call ale#test#SetFilename('../test-files/ruby/nested/foo/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check '
\ . ' dummy.rb'
Execute(Should be able to set a custom executable):
let g:ale_ruby_steep_executable = 'bin/steep'
call ale#test#SetFilename('../test-files/ruby/nested/foo/dummy.rb')
AssertLinter 'bin/steep' , ale#Escape('bin/steep')
\ . ' check '
\ . ' dummy.rb'
Execute(Setting bundle appends 'exec steep'):
let g:ale_ruby_steep_executable = 'path to/bundle'
call ale#test#SetFilename('../test-files/ruby/nested/foo/dummy.rb')
AssertLinter 'path to/bundle', ale#Escape('path to/bundle')
\ . ' exec steep'
\ . ' check '
\ . ' dummy.rb'
Execute(should accept options):
let g:ale_ruby_steep_options = '--severity-level=hint'
call ale#test#SetFilename('../test-files/ruby/nested/foo/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check'
\ . ' --severity-level=hint'
\ . ' dummy.rb'
Execute(Should not lint files out of steep root):
call ale#test#SetFilename('../test-files/ruby/nested/dummy.rb')
AssertLinter 'steep', ''
Execute(Should lint files at top steep root):
call ale#test#SetFilename('../test-files/ruby/nested/foo/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check '
\ . ' dummy.rb'
Execute(Should lint files below top steep root):
call ale#test#SetFilename('../test-files/ruby/nested/foo/one/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check '
\ . ' one' . (has('win32') ? '\' : '/') . 'dummy.rb'
Execute(Should lint files at nested steep root):
call ale#test#SetFilename('../test-files/ruby/nested/foo/two/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check '
\ . ' dummy.rb'
Execute(Should lint files below nested steep root):
call ale#test#SetFilename('../test-files/ruby/nested/foo/two/three/dummy.rb')
AssertLinter 'steep', ale#Escape('steep')
\ . ' check '
\ . ' three' . (has('win32') ? '\' : '/') . 'dummy.rb'