Before: function! g:CmdOutput(cmd) redir => out silent exe a:cmd redir END return out[1:] endfunction Execute (empty filetype): let &filetype = '' let out = g:CmdOutput('Neoformat') AssertEqual 'Neoformat: formatter not defined for filetype', out Execute (filetype without defined formatter): let &filetype = 'not_real_filetype' let out = g:CmdOutput('Neoformat') AssertEqual 'Neoformat: formatter not defined for ' . &filetype . ' filetype', out Execute (formatter defined for other filetype, but is called via user cmd): let &filetype = 'javascript' let out = g:CmdOutput('Neoformat autopep8') AssertEqual 'Neoformat: formatter definition for autopep8 not found', out Execute (user disabled all formatters for current (python) filetype): let g:neoformat_enabled_python= [] let &filetype = 'python' let out = g:CmdOutput('Neoformat') AssertEqual 'Neoformat: formatter not defined for ' . &filetype . ' filetype', out Execute (user disabled all formatters for current (python) filetype): let g:neoformat_enabled_python= ['not_real_formatter'] let &filetype = 'python' let out = g:CmdOutput('Neoformat') AssertEqual 'Neoformat: no change necessary', out Execute (invalid user cmd: formatter not defined): let out = g:CmdOutput('Neoformat not_a_real_formatter') AssertEqual 'Neoformat: formatter definition for not_a_real_formatter not found', out