summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2022-12-27 23:11:53 +0000
committerw0rp <devw0rp@gmail.com>2022-12-27 23:11:53 +0000
commita18472cc58b85ba4e037fe3ad4c3f525aef74a85 (patch)
tree74579a9a859fc9eb671ee95eae95441676e51487 /test
parent98b2ef438e8e705a4788c2e1e9767cd40b12a16b (diff)
downloadale-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')
-rw-r--r--test/test_cursor_warnings.vader22
-rw-r--r--test/test_virtualtext.vader179
2 files changed, 200 insertions, 1 deletions
diff --git a/test/test_cursor_warnings.vader b/test/test_cursor_warnings.vader
index b767d225..7aac7740 100644
--- a/test/test_cursor_warnings.vader
+++ b/test/test_cursor_warnings.vader
@@ -129,7 +129,7 @@ After:
Given javascript(A Javscript file with warnings/errors):
var x = 3 + 12345678
var x = 5*2 + parseInt("10");
- // comment
+ //" comment
Execute(Messages should be shown for the correct lines):
call cursor(1, 1)
@@ -219,6 +219,26 @@ Execute(The severity should be formatted into the message correctly):
AssertEqual 'Info: Some information', g:last_message
+Execute(The type should be formatted into the message correctly):
+ let g:ale_echo_msg_format = '%type%: %s'
+
+ call cursor(2, 9)
+ call ale#cursor#EchoCursorWarning()
+
+ AssertEqual
+ \ 'W: Infix operators must be spaced.',
+ \ g:last_message
+
+ call cursor(1, 10)
+ call ale#cursor#EchoCursorWarning()
+
+ AssertEqual 'E: Missing semicolon.', g:last_message
+
+ call cursor(1, 14)
+ call ale#cursor#EchoCursorWarning()
+
+ AssertEqual 'I: Some information', g:last_message
+
Execute(The %code% and %ifcode% should show the code and some text):
let g:ale_echo_msg_format = '%(code) %%s'
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