Use the same formatting as other files for the dogma linter file, and cover the Handler function with tests
This commit is contained in:
		
							parent
							
								
									ba97017380
								
							
						
					
					
						commit
						82fde0ea51
					
				@ -1,44 +1,45 @@
 | 
			
		||||
" Author: archseer - https://github.com/archSeer
 | 
			
		||||
 | 
			
		||||
function! ale_linters#elixir#dogma#Handle(buffer, lines) abort
 | 
			
		||||
  " Matches patterns line the following:
 | 
			
		||||
  "
 | 
			
		||||
  " lib/filename.ex:19:7: F: Pipe chain should start with a raw value.
 | 
			
		||||
  let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
 | 
			
		||||
  let l:output = []
 | 
			
		||||
    " Matches patterns line the following:
 | 
			
		||||
    "
 | 
			
		||||
    " lib/filename.ex:19:7: F: Pipe chain should start with a raw value.
 | 
			
		||||
    let l:pattern = '\v:(\d+):?(\d+)?: (.): (.+)$'
 | 
			
		||||
    let l:output = []
 | 
			
		||||
 | 
			
		||||
  for l:line in a:lines
 | 
			
		||||
    let l:match = matchlist(l:line, l:pattern)
 | 
			
		||||
    for l:line in a:lines
 | 
			
		||||
        let l:match = matchlist(l:line, l:pattern)
 | 
			
		||||
 | 
			
		||||
    if len(l:match) == 0
 | 
			
		||||
        continue
 | 
			
		||||
    endif
 | 
			
		||||
        if len(l:match) == 0
 | 
			
		||||
            continue
 | 
			
		||||
        endif
 | 
			
		||||
 | 
			
		||||
    let l:type = l:match[3]
 | 
			
		||||
    let l:text = l:match[4]
 | 
			
		||||
        let l:type = l:match[3]
 | 
			
		||||
        let l:text = l:match[4]
 | 
			
		||||
 | 
			
		||||
    if l:type ==# 'C'
 | 
			
		||||
      let l:type = 'E'
 | 
			
		||||
    elseif l:type ==# 'R'
 | 
			
		||||
      let l:type = 'W'
 | 
			
		||||
    endif
 | 
			
		||||
        if l:type ==# 'C'
 | 
			
		||||
            let l:type = 'E'
 | 
			
		||||
        elseif l:type ==# 'R'
 | 
			
		||||
            let l:type = 'W'
 | 
			
		||||
        endif
 | 
			
		||||
 | 
			
		||||
    " vcol is Needed to indicate that the column is a character.
 | 
			
		||||
    call add(l:output, {
 | 
			
		||||
    \   'bufnr': a:buffer,
 | 
			
		||||
    \   'lnum': l:match[1] + 0,
 | 
			
		||||
    \   'col': l:match[2] + 0,
 | 
			
		||||
    \   'type': l:type,
 | 
			
		||||
    \   'text': l:text,
 | 
			
		||||
    \})
 | 
			
		||||
  endfor
 | 
			
		||||
        " vcol is Needed to indicate that the column is a character.
 | 
			
		||||
        call add(l:output, {
 | 
			
		||||
        \   'bufnr': a:buffer,
 | 
			
		||||
        \   'lnum': l:match[1] + 0,
 | 
			
		||||
        \   'col': l:match[2] + 0,
 | 
			
		||||
        \   'type': l:type,
 | 
			
		||||
        \   'text': l:text,
 | 
			
		||||
        \})
 | 
			
		||||
    endfor
 | 
			
		||||
 | 
			
		||||
  return l:output
 | 
			
		||||
    return l:output
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
call ale#linter#Define('elixir', {
 | 
			
		||||
      \ 'name': 'dogma',
 | 
			
		||||
      \ 'executable': 'mix',
 | 
			
		||||
      \ 'command': 'mix dogma %s --format=flycheck',
 | 
			
		||||
      \ 'lint_file': 1,
 | 
			
		||||
      \ 'callback': 'ale_linters#elixir#dogma#Handle' })
 | 
			
		||||
\   'name': 'dogma',
 | 
			
		||||
\   'executable': 'mix',
 | 
			
		||||
\   'command': 'mix dogma %s --format=flycheck',
 | 
			
		||||
\   'lint_file': 1,
 | 
			
		||||
\   'callback': 'ale_linters#elixir#dogma#Handle',
 | 
			
		||||
\})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								test/handler/test_dogma_handler.vader
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								test/handler/test_dogma_handler.vader
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
Execute(The dogma handler should parse lines correctly):
 | 
			
		||||
  runtime ale_linters/elixir/dogma.vim
 | 
			
		||||
 | 
			
		||||
  AssertEqual
 | 
			
		||||
  \ [
 | 
			
		||||
  \   {
 | 
			
		||||
  \     'bufnr': 347,
 | 
			
		||||
  \     'lnum': 18,
 | 
			
		||||
  \     'col': 5,
 | 
			
		||||
  \     'text': 'Some error',
 | 
			
		||||
  \     'type': 'E',
 | 
			
		||||
  \   },
 | 
			
		||||
  \   {
 | 
			
		||||
  \     'bufnr': 347,
 | 
			
		||||
  \     'lnum': 19,
 | 
			
		||||
  \     'col': 7,
 | 
			
		||||
  \     'text': 'Some warning',
 | 
			
		||||
  \     'type': 'W',
 | 
			
		||||
  \   },
 | 
			
		||||
  \ ],
 | 
			
		||||
  \ ale_linters#elixir#dogma#Handle(347, [
 | 
			
		||||
  \   'This line should be ignored completely',
 | 
			
		||||
  \   'lib/filename.ex:18:5: C: Some error',
 | 
			
		||||
  \   'lib/filename.ex:19:7: R: Some warning',
 | 
			
		||||
  \ ])
 | 
			
		||||
 | 
			
		||||
After:
 | 
			
		||||
  call ale#linter#Reset()
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user