Include: include/setup.vader Execute (Error with no filename): new set ft=neomake_tests let b:neomake_neomake_tests_enabled_makers = ['true'] let b:neomake_neomake_tests_true_tempfile_enabled = 0 Neomake let make_id = neomake#GetStatus().last_make_id AssertNeomakeMessage 'no file name.', 0 bwipe Execute (Error with no filename (serialized)): new set ft=neomake_tests let b:neomake_neomake_tests_enabled_makers = ['true', g:entry_maker] let b:neomake_neomake_tests_true_tempfile_enabled = 0 let b:neomake_neomake_tests_true_serialize = 1 let b:neomake_neomake_tests_true_serialize_abort_on_error = 1 Neomake let make_id = neomake#GetStatus().last_make_id AssertNeomakeMessage 'no file name.', 0 AssertNeomakeMessage 'Aborting next makers: entry_maker.' bwipe Execute (Error with non-existing filename): new file doesnotexist set ft=neomake_tests let b:neomake_neomake_tests_enabled_makers = ['true'] let b:neomake_neomake_tests_true_tempfile_enabled = 0 let fname = fnamemodify(bufname('%'), ':p') Neomake bwipe! let make_id = neomake#GetStatus().last_make_id AssertNeomakeMessage 'file is not readable ('.fname.')', 0 Execute (Error with non-existing filename for 2nd maker): call g:NeomakeSetupAutocmdWrappers() new file doesnotexist set ft=neomake_tests let b:neomake_neomake_tests_enabled_makers = ['true'] let b:neomake_neomake_tests_true_tempfile_enabled = 0 let maker1 = { \ 'exe': 'true', \ 'name': 'true_maker', \ 'errorformat': '%m', \ 'append_file': 0, \ } let maker2 = copy(maker1) let maker2.append_file = 1 let maker2.tempfile_enabled = 0 let maker3 = copy(maker1) let fname = fnamemodify(bufname('%'), ':p') call neomake#Make(1, [maker1, maker2, maker3]) let make_id = neomake#GetStatus().last_make_id NeomakeTestsWaitForFinishedJobs AssertNeomakeMessage 'file is not readable ('.fname.')', 0 AssertEqual len(g:neomake_test_finished), 1 AssertEqual len(g:neomake_test_jobfinished), 2 bwipe! Execute (maker.exe gets checked): call NeomakeTestsSetVimMessagesMarker() let maker = {'exe': 'doesnotexist'} let maker_non_string_exe = {} function maker_non_string_exe.exe() return 'true' endfunction CallNeomake 1, [maker, maker_non_string_exe] let log_context = {'make_id': neomake#GetStatus().last_make_id, 'bufnr': bufnr('%')} AssertNeomakeMessage 'Exe (doesnotexist) of maker unnamed_maker is not executable.', 0, log_context AssertNeomakeMessage 'Non-string given for executable of maker unnamed_maker: type 2.', 0, log_context AssertNeomakeMessage 'Nothing to make: no valid makers.' AssertEqual len(g:neomake_test_messages), 4 " Is still an error on second invocation (not autoconfigured). CallNeomake 1, [maker, maker_non_string_exe] let make_id = neomake#GetStatus().last_make_id let log_context = {'make_id': neomake#GetStatus().last_make_id, 'bufnr': bufnr('%')} AssertNeomakeMessage 'Exe (doesnotexist) of maker unnamed_maker is not executable.', 0, log_context AssertNeomakeMessage 'Non-string given for executable of maker unnamed_maker: type 2.', 0, log_context AssertNeomakeMessage 'Nothing to make: no valid makers.', 3, log_context AssertEqual len(g:neomake_test_messages), 8 " Error gets logged as debug message if auto-enabled. let maker.auto_enabled = 1 let maker_non_string_exe.auto_enabled = 1 CallNeomake 1, [maker, maker_non_string_exe] let make_id = neomake#GetStatus().last_make_id let log_context = {'make_id': neomake#GetStatus().last_make_id, 'bufnr': bufnr('%')} AssertNeomakeMessage 'Exe (doesnotexist) of auto-configured maker unnamed_maker is not executable, skipping.', 3, log_context AssertNeomakeMessage 'Non-string given for executable of maker unnamed_maker: type 2.', 3, log_context AssertNeomakeMessage 'Nothing to make: no valid makers.', 3, log_context AssertEqual len(g:neomake_test_messages), 12 AssertEqual NeomakeTestsGetVimMessages(), [] Execute (maker.exe gets checked (auto-enabled)): new set ft=neomake_tests let b:neomake_test_enabledmakers = ['nonexisting', 'maker_without_exe', 'maker_with_nonstring_exe'] CallNeomake 1 let make_id = neomake#GetStatus().last_make_id let log_context = {'make_id': make_id, 'bufnr': bufnr('%')} AssertNeomakeMessage 'Maker not found (for filetype neomake_tests): nonexisting.', 3, log_context AssertNeomakeMessage 'Exe (maker_without_exe) of auto-configured maker maker_without_exe is not executable, skipping.', 3, log_context AssertNeomakeMessage 'Non-string given for executable of maker maker_with_nonstring_exe: type 2.', 3, log_context AssertNeomakeMessage 'Nothing to make: no valid makers.', 3, log_context Assert len(g:neomake_test_messages), 3 bwipe Execute (neomake#GetMaker with non-existent maker throws errors): AssertThrows call neomake#GetMaker('non-existent') AssertEqual g:vader_exception, 'Neomake: Invalid maker name: "non-existent"' AssertThrows call neomake#GetMaker('nonexistent') AssertEqual g:vader_exception, 'Neomake: Maker not found (without filetype): nonexistent' AssertThrows call neomake#GetMaker('nonexistent', '') AssertEqual g:vader_exception, 'Neomake: Maker not found (for empty filetype): nonexistent' AssertThrows call neomake#GetMaker('nonexistent', 'c') AssertEqual g:vader_exception, 'Neomake: Maker not found (for filetype c): nonexistent' AssertEqual len(g:neomake_test_messages), 0 Execute (Errors from neomake#GetMaker get handled by neomake#Make): CallNeomake 1, ['g:invalid-name'] AssertNeomakeMessage 'Invalid maker name: "g:invalid-name".', 0 CallNeomake 0, ['nonexistent'] AssertNeomakeMessage 'Maker not found (without filetype): nonexistent.', 0 Execute (Error from neomake#GetMaker for non-dict maker): new let b:neomake_mymaker_maker = 0 AssertThrows call neomake#GetMaker('mymaker') AssertEqual g:vader_exception, 'Neomake: Got non-dict for maker mymaker: 0' CallNeomake 0, ['mymaker'] let make_id = neomake#GetStatus().last_make_id AssertNeomakeMessage 'Got non-dict for maker mymaker: 0.', 0, {'make_id': make_id, 'bufnr': bufnr('%')} AssertNeomakeMessage 'Nothing to make: no valid makers.', 3 AssertNeomakeMessage 'Cleaning make info.', 3 bwipe Execute (Empty maker gets handled in s:Make): CallNeomake {'enabled_makers': []} " TODO: level: more visible in this case?! AssertNeomakeMessage 'Nothing to make: no valid makers.', 3 CallNeomake {'enabled_makers': [{}]} AssertNeomakeMessage 'Exe (unnamed_maker) of maker unnamed_maker is not executable.', 0 AssertNeomakeMessage 'Nothing to make: no valid makers.', 3 Execute (NeomakeSh handles invalid shell): if neomake#has_async_support() NeomakeTestsSkip 'Only for non-async' else Save &shell call g:NeomakeTestsCreateExe('cmd.exe', []) let &shell = 'cmd.exe' call neomake#Sh('dir ..') AssertNeomakeMessage '\v^Could not run cmd.exe -c "dir .." 2>.*: Vim\(let\):E484: .*\.$', 0 endif Execute (neomake#Make with non-existing bufnr/winid/winnr): AssertThrows call neomake#Make({'bufnr': 1234, 'file_mode': 1}) AssertEqual g:vader_exception, 'Neomake: winid or winnr are required for non-current buffer.' AssertThrows call neomake#Make({'bufnr': 1234, 'file_mode': 1, 'winid': 1234, 'enabled_makers': []}) AssertEqual g:vader_exception, 'Neomake: buffer 1234 does not exist.' AssertThrows call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 1, 'winid': 1234, 'enabled_makers': []}) if exists('*win_getid') AssertEqual g:vader_exception, 'Neomake: window id 1234 does not exist.' else AssertEqual g:vader_exception, 'Vim(if):E117: Unknown function: win_id2tabwin' endif AssertThrows call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 1, 'winnr': 1234, 'enabled_makers': []}) AssertEqual g:vader_exception, 'Neomake: window 1234 does not exist.' " winid/winnr with file_mode=0. AssertThrows call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 0, 'winnr': 1234, 'enabled_makers': []}) AssertEqual g:vader_exception, 'Neomake: do not use winnr with file_mode=0.' AssertThrows call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 0, 'winid': 1234, 'enabled_makers': []}) AssertEqual g:vader_exception, 'Neomake: do not use winid with file_mode=0.' " Valid. if exists('*win_getid') call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 1, 'winid': win_getid(), 'enabled_makers': []}) endif call neomake#Make({'bufnr': bufnr('%'), 'file_mode': 1, 'winnr': winnr(), 'enabled_makers': []}) NeomakeCancelJobs!