Execute (neomake#utils#get_project_root): new let bufnr = bufnr('%') AssertEqual neomake#utils#get_project_root(bufnr), fnamemodify(g:vader_file, ':h:h') " Gets cached. AssertEqual b:neomake.project_root, fnamemodify(g:vader_file, ':h:h') let slash = neomake#utils#Slash() let tmpbase = tempname() let tmpdir = tmpbase . slash . 'python-project' call mkdir(tmpdir, 'p') setfiletype python Assert !exists('b:neomake.project_root'), 'cache cleared on FileType' exe 'lcd '.tmpdir let project_root = neomake#utils#get_project_root(bufnr) if project_root ==# fnamemodify(tmpbase, ':h:h') call vader#log('NOTE: got project root already for tmpbase: '.project_root) else AssertEqual project_root, '' endif call writefile([], tmpdir . slash . 'setup.cfg') unlet b:neomake.project_root AssertEqual neomake#utils#get_project_root(bufnr), tmpdir let tmpdir_sub = tmpdir . slash . 'sub' call mkdir(tmpdir_sub) call writefile([], tmpdir_sub . slash . 'setup.cfg') exe 'lcd '.tmpdir_sub unlet b:neomake.project_root AssertEqual neomake#utils#get_project_root(bufnr), tmpdir_sub setfiletype c AssertEqual neomake#utils#get_project_root(bufnr), '' call writefile([], tmpdir. slash . 'CMakeLists.txt') unlet b:neomake.project_root AssertEqual neomake#utils#get_project_root(bufnr), tmpdir setfiletype unknown AssertEqual neomake#utils#get_project_root(bufnr), '' call writefile([], tmpdir. slash . 'Makefile') AssertEqual neomake#utils#get_project_root(bufnr), '' unlet b:neomake.project_root AssertEqual neomake#utils#get_project_root(bufnr), tmpdir bwipe