Before:
    let g:executable_map = {}

    call ale#assert#SetUpLinterTest('json', 'vscodejson')

    runtime autoload/ale/engine.vim

    " Stub out IsExecutable so we can emulate it.
    function! ale#engine#IsExecutable(buffer, executable) abort
        return get(g:executable_map, a:executable)
    endfunction

After:
    unlet! g:executable_map

    call ale#assert#TearDownLinterTest()

    runtime autoload/ale/engine.vim

Execute(The default executable name should be correct):
    let g:executable_map = {'vscode-json-languageserver': 1}

    AssertLinter 'vscode-json-languageserver', [ale#Escape('vscode-json-languageserver') . ' --stdio']

Execute(We should fall back on the old executable name):
    let g:executable_map = {'vscode-json-languageserver': 0}

    AssertLinter 'vscode-json-language-server', [ale#Escape('vscode-json-language-server') . ' --stdio']

Execute(Executable name should be configurable):
    let b:ale_json_vscodejson_executable = 'foo'

    AssertLinter 'foo', [ale#Escape('foo') . ' --stdio']
