Describe init.vim function! s:clear() for key in s:sections unlet! g:airline_section_{key} endfor endfunction let s:sections = ['a', 'b', 'c', 'gutter', 'x', 'y', 'z', 'warning'] call airline#init#bootstrap() Before each call s:clear() call airline#init#sections() End It section a should have mode, paste, spell, iminsert Assert Match(g:airline_section_a, 'mode') Assert Match(g:airline_section_a, 'paste') Assert Match(g:airline_section_a, 'spell') Assert Match(g:airline_section_a, 'iminsert') End It section b should be blank because no extensions are installed Assert Equals(g:airline_section_b, '') End It section c should be file and coc_status set noautochdir call airline#init#sections() Assert Equals(g:airline_section_c, '%<%f%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#%#__accent_bold#%#__restore__#%#__accent_bold#%#__restore__#') End It section c should be path and coc_status set autochdir call s:clear() call airline#init#sections() Assert Equals(g:airline_section_c, '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#%#__accent_bold#%#__restore__#%#__accent_bold#%#__restore__#') End It section x should be filetype Assert Equals(g:airline_section_x, '%#__accent_bold#%#__restore__#%{airline#util#prepend("",0)}%{airline#util#prepend("",0)}%{airline#util#prepend("",0)}%{airline#util#prepend("",0)}%{airline#util#prepend("",0)}%{airline#util#prepend("",0)}%{airline#util#wrap(airline#parts#filetype(),0)}') End It section y should be fenc and ff Assert Equals(g:airline_section_y, '%{airline#util#wrap(airline#parts#ffenc(),0)}') End It section z should be line numbers Assert Match(g:airline_section_z, '%p%%') Assert Match(g:airline_section_z, '%l') Assert Match(g:airline_section_z, '%v') End It section gutter should be blank unless csv extension is installed " Note: the csv extension uses only the window local variable Assert Equals(g:airline_section_gutter, '%=') End It section warning should be blank Assert Match(g:airline_section_warning, '') End It should not redefine sections already defined for s in s:sections let g:airline_section_{s} = s endfor call airline#init#bootstrap() for s in s:sections Assert Equals(g:airline_section_{s}, s) endfor End It all default statusline extensions should be blank Assert Equals(airline#parts#get('ale_error_count').raw, '') Assert Equals(airline#parts#get('ale_warning_count').raw, '') Assert Equals(airline#parts#get('lsp_error_count').raw, '') Assert Equals(airline#parts#get('lsp_warning_count').raw, '') Assert Equals(airline#parts#get('nvimlsp_error_count').raw, '') Assert Equals(airline#parts#get('nvimlsp_warning_count').raw, '') Assert Equals(airline#parts#get('hunks').raw, '') Assert Equals(airline#parts#get('branch').raw, '') Assert Equals(airline#parts#get('eclim').raw, '') Assert Equals(airline#parts#get('neomake_error_count').raw, '') Assert Equals(airline#parts#get('neomake_warning_count').raw, '') Assert Equals(airline#parts#get('obsession').raw, '') Assert Equals(airline#parts#get('syntastic-err').raw, '') Assert Equals(airline#parts#get('syntastic-warn').raw, '') Assert Equals(airline#parts#get('tagbar').raw , '') Assert Equals(airline#parts#get('whitespace').raw, '') Assert Equals(airline#parts#get('windowswap').raw , '') Assert Equals(airline#parts#get('ycm_error_count').raw, '') Assert Equals(airline#parts#get('ycm_warning_count').raw, '') Assert Equals(airline#parts#get('languageclient_error_count').raw, '') Assert Equals(airline#parts#get('languageclient_warning_count').raw, '') Assert Equals(airline#parts#get('coc_status').raw, '') Assert Equals(airline#parts#get('coc_current_function').raw, '') Assert Equals(airline#parts#get('vista').raw, '') Assert Equals(airline#parts#get('coc_warning_count').raw, '') Assert Equals(airline#parts#get('coc_error_count').raw, '') Assert Equals(airline#parts#get('battery').raw, '') End it should not redefine parts already defined call airline#parts#define_raw('linenr', 'bar') call s:clear() call airline#init#sections() Assert Match(g:airline_section_z, 'bar') End End