diff options
author | w0rp <devw0rp@gmail.com> | 2022-12-27 23:11:53 +0000 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2022-12-27 23:11:53 +0000 |
commit | a18472cc58b85ba4e037fe3ad4c3f525aef74a85 (patch) | |
tree | 74579a9a859fc9eb671ee95eae95441676e51487 /test/test_virtualtext.vader | |
parent | 98b2ef438e8e705a4788c2e1e9767cd40b12a16b (diff) | |
download | ale-a18472cc58b85ba4e037fe3ad4c3f525aef74a85.zip |
Close #4401 - Use subtle defaults for virtual-text
Default virtual-text to the Comment highlight group and prefix
virtual-text messages with comment text for each language by default.
Messages can now be formatted with `%type%` to print the error type.
The Vim 9.0 version has been updated in the Docker image to add test
coverage for virtual-text.
Diffstat (limited to 'test/test_virtualtext.vader')
-rw-r--r-- | test/test_virtualtext.vader | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/test/test_virtualtext.vader b/test/test_virtualtext.vader new file mode 100644 index 00000000..8fc1ead5 --- /dev/null +++ b/test/test_virtualtext.vader @@ -0,0 +1,179 @@ +Before: + Save g:ale_buffer_info + Save g:ale_virtualtext_cursor + Save g:ale_virtualtext_delay + Save g:ale_virtualtext_prefix + Save b:ale_virtualtext_prefix + + call ale#virtualtext#ResetDataForTests() + + let g:setting = '' + let g:ale_virtualtext_delay = 0 + let g:ale_buffer_info = { + \ bufnr(''): { + \ 'loclist': [ + \ { + \ 'bufnr': bufnr(''), + \ 'type': 'E', + \ 'lnum': 1, + \ 'col': 5, + \ 'text': 'Line 1 error', + \ }, + \ { + \ 'bufnr': bufnr(''), + \ 'type': 'W', + \ 'lnum': 2, + \ 'col': 1, + \ 'text': 'Line 2 warning 1', + \ }, + \ { + \ 'bufnr': bufnr(''), + \ 'type': 'W', + \ 'lnum': 2, + \ 'col': 5, + \ 'text': 'Line 2 warning 2', + \ }, + \ ], + \ }, + \} + +After: + Restore + + unlet! g:setting + unlet! g:ns_id + +Execute(The correct highlight groups should be loaded for virtual-text): + AssertEqual 'ALEVirtualTextError', ale#virtualtext#GetGroup({}) + AssertEqual 'ALEVirtualTextError', ale#virtualtext#GetGroup({'type': 'E'}) + AssertEqual 'ALEVirtualTextStyleError', + \ ale#virtualtext#GetGroup({'type': 'E', 'sub_type': 'style'}) + AssertEqual 'ALEVirtualTextWarning', ale#virtualtext#GetGroup({'type': 'W'}) + AssertEqual 'ALEVirtualTextStyleWarning', + \ ale#virtualtext#GetGroup({'type': 'W', 'sub_type': 'style'}) + AssertEqual 'ALEVirtualTextInfo', ale#virtualtext#GetGroup({'type': 'I'}) + +Given python (An empty Python file): +Execute(Comment text should be detected correctly for Python files): + if has('patch-9.0.0297') || has('nvim-0.8.0') + AssertEqual '#', ale#virtualtext#GetComment(bufnr('')) + endif + +Given java (An empty Java file): +Execute(Comment text should be detected correctly for Java files): + if has('patch-9.0.0297') || has('nvim-0.8.0') + AssertEqual '//', ale#virtualtext#GetComment(bufnr('')) + endif + +Given html (An empty HTML file): +Execute(Comment text should be detected correctly for HTML files): + if has('patch-9.0.0297') || has('nvim-0.8.0') + AssertEqual "\<!--", ale#virtualtext#GetComment(bufnr('')) + endif + +Given python(An example Python file): + # line 1 + # line 2 + +Execute(We should not show virtualtext when disabled): + if has('patch-9.0.0297') || has('nvim-0.8.0') + for g:setting in ['disabled', '0', 0] + call ale#virtualtext#ResetDataForTests() + + let g:ale_virtualtext_cursor = g:setting + call cursor(1, 1) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual '', ale#virtualtext#GetLastMessageForTests() + endfor + endif + +Execute(We should find a virtualtext error on line 1): + if has('patch-9.0.0297') || has('nvim-0.8.0') + for g:setting in ['current', '1', 1] + call ale#virtualtext#ResetDataForTests() + + let g:ale_virtualtext_cursor = 'current' + call cursor(1, 1) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual '# E: Line 1 error', ale#virtualtext#GetLastMessageForTests() + + if has('patch-9.0.0297') + AssertEqual ['ALEVirtualTextError'], map(prop_list(1), {_, v -> v.type}) + AssertEqual [], prop_list(2) + endif + endfor + endif + +Execute(We should find a virtualtext error on line 2): + if has('patch-9.0.0297') || has('nvim-0.8.0') + let g:ale_virtualtext_cursor = 'current' + call cursor(2, 5) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual '# W: Line 2 warning 2', ale#virtualtext#GetLastMessageForTests() + + if has('patch-9.0.0297') + AssertEqual [], prop_list(1) + AssertEqual ['ALEVirtualTextWarning'], map(prop_list(2), {_, v -> v.type}) + endif + endif + +Execute(We should be able to change the virtualtext prefix globally): + let g:ale_virtualtext_prefix = '> ' + + if has('patch-9.0.0297') || has('nvim-0.8.0') + let g:ale_virtualtext_cursor = 'current' + call cursor(1, 1) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual '> Line 1 error', ale#virtualtext#GetLastMessageForTests() + endif + +Execute(We should be able to change the virtualtext prefix per-buffer): + let b:ale_virtualtext_prefix = 'B> ' + + if has('patch-9.0.0297') || has('nvim-0.8.0') + let g:ale_virtualtext_cursor = 'current' + call cursor(1, 1) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual 'B> Line 1 error', ale#virtualtext#GetLastMessageForTests() + endif + +Execute(We should be format in other data from the loclist items): + let g:ale_virtualtext_prefix = '%severity%: ' + + if has('patch-9.0.0297') || has('nvim-0.8.0') + let g:ale_virtualtext_cursor = 'current' + call cursor(1, 1) + call ale#virtualtext#ShowCursorWarningWithDelay() + " Tick the timer. + sleep 1ms + + AssertEqual 'Error: Line 1 error', ale#virtualtext#GetLastMessageForTests() + endif + +Execute(We should set errors across all lines): + if has('patch-9.0.0297') || has('nvim-0.8.0') + call ale#virtualtext#SetTexts(bufnr(''), g:ale_buffer_info[bufnr('')].loclist) + + AssertEqual '# W: Line 2 warning 2', ale#virtualtext#GetLastMessageForTests() + + if has('patch-9.0.0297') + AssertEqual ['ALEVirtualTextError'], map(prop_list(1), {_, v -> v.type}) + AssertEqual ['ALEVirtualTextWarning', 'ALEVirtualTextWarning'], + \ map(prop_list(2), {_, v -> v.type}) + endif + endif |