#254 Add an option for logging the output of commands

This commit is contained in:
w0rp
2017-02-16 23:18:57 +00:00
parent 843370b96f
commit eac0a41ae1
7 changed files with 144 additions and 7 deletions

View File

@@ -41,6 +41,7 @@ After:
unlet! g:globals_string
unlet! g:command_header
let g:ale_buffer_info = {}
let g:ale_history_log_output = 0
unlet! g:ale_testft_testlinter1_foo
unlet! g:ale_testft_testlinter1_bar
unlet! g:ale_testft2_testlinter2_foo
@@ -218,3 +219,66 @@ Execute (ALEInfo command history should print exit codes correctly):
\ '(finished - exit code 1) [''/bin/bash'', ''\c'', ''last command'']',
\ ], "\n"),
\ g:output
Given testft.testft2 (Empty buffer with two filetypes):
Execute (ALEInfo command history should print command output if logging is on):
let g:ale_history_log_output = 1
let g:ale_buffer_info[bufnr('%')] = {
\ 'history': [
\ {
\ 'status': 'finished',
\ 'exit_code': 0,
\ 'job_id': 347,
\ 'command': 'first command',
\ 'output': ['some', 'first command output'],
\ },
\ {
\ 'status': 'finished',
\ 'exit_code': 1,
\ 'job_id': 347,
\ 'command': ['/bin/bash', '\c', 'last command'],
\ 'output': ['different second command output'],
\ },
\ {
\ 'status': 'finished',
\ 'exit_code': 0,
\ 'job_id': 347,
\ 'command': 'command with no output',
\ 'output': [],
\ },
\ ],
\}
call ale#linter#Define('testft', g:testlinter1)
call ale#linter#Define('testft2', g:testlinter2)
redir => g:output
silent ALEInfo
redir END
AssertEqual
\ join([
\ '',
\ ' Current Filetype: testft.testft2',
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
\ ' Linter Variables:',
\ g:globals_string . g:command_header,
\ '(finished - exit code 0) ''first command''',
\ '',
\ '<<<OUTPUT STARTS>>>',
\ 'some',
\ 'first command output',
\ '<<<OUTPUT ENDS>>>',
\ '',
\ '(finished - exit code 1) [''/bin/bash'', ''\c'', ''last command'']',
\ '',
\ '<<<OUTPUT STARTS>>>',
\ 'different second command output',
\ '<<<OUTPUT ENDS>>>',
\ '',
\ '(finished - exit code 0) ''command with no output''',
\ '',
\ '<<<NO OUTPUT RETURNED>>>',
\ '',
\ ], "\n"),
\ g:output

View File

@@ -17,6 +17,7 @@ Before:
After:
let g:ale_history_enabled = 1
let g:ale_history_log_output = 0
unlet g:history
let g:ale_buffer_info = {}
let g:ale_max_buffer_history_size = 20
@@ -52,6 +53,19 @@ Execute(History should be not set when disabled):
AssertEqual 0, len(g:ale_buffer_info[bufnr('%')].history)
Execute(History should include command output if logging is enabled):
AssertEqual 'foobar', &filetype
let g:ale_history_log_output = 1
call ale#Lint()
call ale#engine#WaitForJobs(2000)
let g:history = g:ale_buffer_info[bufnr('%')].history
AssertEqual 1, len(g:history)
AssertEqual ['command history test'], g:history[0].output
Execute(History items should be popped after going over the max):
let g:ale_buffer_info[1] = {
\ 'history': map(range(20), '{''status'': ''started'', ''job_id'': v:val, ''command'': ''foobar''}'),