1function! StatuslineWithCaughtError()
2  let s:func_in_statusline_called = 1
3  try
4    call eval('unknown expression')
5  catch
6  endtry
7  return ''
8endfunction
9
10function! StatuslineWithError()
11  let s:func_in_statusline_called = 1
12  call eval('unknown expression')
13  return ''
14endfunction
15
16function! Test_caught_error_in_statusline()
17  let s:func_in_statusline_called = 0
18  set laststatus=2
19  let statusline = '%{StatuslineWithCaughtError()}'
20  let &statusline = statusline
21  redrawstatus
22  call assert_true(s:func_in_statusline_called)
23  call assert_equal(statusline, &statusline)
24  set statusline=
25endfunction
26
27function! Test_statusline_will_be_disabled_with_error()
28  let s:func_in_statusline_called = 0
29  set laststatus=2
30  let statusline = '%{StatuslineWithError()}'
31  try
32    let &statusline = statusline
33    redrawstatus
34  catch
35  endtry
36  call assert_true(s:func_in_statusline_called)
37  call assert_equal('', &statusline)
38  set statusline=
39endfunction
40