view src/testdir/test_command_count.vim @ 34780:54890be01c00 v9.1.0265

patch 9.1.0265: console dialog cannot save unnamed buffers Commit: https://github.com/vim/vim/commit/df46115fc839c8912ed60646e86a412e5180ba1d Author: glepnir <glephunter@gmail.com> Date: Thu Apr 4 22:23:29 2024 +0200 patch 9.1.0265: console dialog cannot save unnamed buffers Problem: console dialog cannot save unnamed buffers Solution: set bufname before save (glepnir). Define dialog_con_gui to test for GUI+Console dialog support, use it to skip the test when the GUI feature has been defined. Note: The dialog_changed() function will also try to call the browse_save_fname() function, when FEAT_BROWSE is defined (which is only defined in a GUI build of Vim). This will eventually lead to a call of do_browse(), which causes an error message if a GUI is not currently running (see the TODO: in do_browse()) and will then lead to a failure in Test_goto_buf_with_onfirm(). Therefore, we must disable the Test_goto_buf_with_onfirm(), when the dialog_con_gui feature is enabled (which basically means dialog feature for GUI and Console builds, in contrast to the dialog_con and dialog_gui feature). (Previously this wasn't a problem, because the test aborted in the YES case for the :confirm :b XgotoConf case and did therefore not run into the browse function call) closes: #14398 Signed-off-by: glepnir <glephunter@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 04 Apr 2024 23:45:02 +0200
parents 08940efa6b4e
children
line wrap: on
line source

" Test for user command counts.

func Test_command_count_0()
  let bufnr = bufnr('%')
  set hidden
  set noswapfile

  split DoesNotExistEver
  let lastbuf = bufnr('$')
  call setline(1, 'asdf')
  quit!

  command! -range -addr=loaded_buffers RangeLoadedBuffers :let lines = [<line1>, <line2>]
  command! -range=% -addr=loaded_buffers RangeLoadedBuffersAll :let lines = [<line1>, <line2>]
  command! -range -addr=buffers RangeBuffers :let lines = [<line1>, <line2>]
  command! -range=% -addr=buffers RangeBuffersAll :let lines = [<line1>, <line2>]

  .,$RangeLoadedBuffers
  call assert_equal([bufnr, bufnr], lines)
  %RangeLoadedBuffers
  call assert_equal([bufnr, bufnr], lines)
  RangeLoadedBuffersAll
  call assert_equal([bufnr, bufnr], lines)
  .,$RangeBuffers
  call assert_equal([bufnr, lastbuf], lines)
  %RangeBuffers
  call assert_equal([bufnr, lastbuf], lines)
  RangeBuffersAll
  call assert_equal([bufnr, lastbuf], lines)

  delcommand RangeLoadedBuffers
  delcommand RangeLoadedBuffersAll
  delcommand RangeBuffers
  delcommand RangeBuffersAll

  set hidden&
  set swapfile&
endfunc

func Test_command_count_1()
  silent! %argd
  arga a b c d e
  argdo echo "loading buffers"
  argu 3
  command! -range -addr=arguments RangeArguments :let lines = [<line1>, <line2>]
  command! -range=% -addr=arguments RangeArgumentsAll :let lines = [<line1>, <line2>]
  .-,$-RangeArguments
  call assert_equal([2, 4], lines)
  %RangeArguments
  call assert_equal([1, 5], lines)
  RangeArgumentsAll
  call assert_equal([1, 5], lines)
  N
  .RangeArguments
  call assert_equal([2, 2], lines)
  delcommand RangeArguments
  delcommand RangeArgumentsAll

  split|split|split|split
  3wincmd w
  command! -range -addr=windows RangeWindows :let lines = [<line1>, <line2>]
  .,$RangeWindows
  call assert_equal([3, 5], lines)
  %RangeWindows
  call assert_equal([1, 5], lines)
  delcommand RangeWindows

  command! -range=% -addr=windows RangeWindowsAll :let lines = [<line1>, <line2>]
  RangeWindowsAll
  call assert_equal([1, 5], lines)
  delcommand RangeWindowsAll
  only
  blast|bd

  tabe|tabe|tabe|tabe
  normal 2gt
  command! -range -addr=tabs RangeTabs :let lines = [<line1>, <line2>]
  .,$RangeTabs
  call assert_equal([2, 5], lines)
  %RangeTabs
  call assert_equal([1, 5], lines)
  delcommand RangeTabs

  command! -range=% -addr=tabs RangeTabsAll :let lines = [<line1>, <line2>]
  RangeTabsAll
  call assert_equal([1, 5], lines)
  delcommand RangeTabsAll
  1tabonly

  s/\n/\r\r\r\r\r/
  2ma<
  $-ma>
  command! -range=% RangeLines :let lines = [<line1>, <line2>]
  '<,'>RangeLines
  call assert_equal([2, 5], lines)
  delcommand RangeLines

  command! -range=% -buffer LocalRangeLines :let lines = [<line1>, <line2>]
  '<,'>LocalRangeLines
  call assert_equal([2, 5], lines)
  delcommand LocalRangeLines
endfunc

func Test_command_count_2()
  silent! %argd
  arga a b c d
  call assert_fails('5argu', 'E16:')

  $argu
  call assert_equal('d', expand('%:t'))

  1argu
  call assert_equal('a', expand('%:t'))

  call assert_fails('300b', 'E16:')

  split|split|split|split
  0close

  $wincmd w
  $close
  call assert_equal(3, winnr())

  call assert_fails('$+close', 'E16:')

  $tabe
  call assert_equal(2, tabpagenr())

  call assert_fails('$+tabe', 'E16:')

  only!
  e x
  0tabm
  normal 1gt
  call assert_equal('x', expand('%:t'))

  tabonly!
  only!
endfunc

func Test_command_count_3()
  let bufnr = bufnr('%')
  se nohidden
  e aaa
  let buf_aaa = bufnr('%')
  e bbb
  let buf_bbb = bufnr('%')
  e ccc
  let buf_ccc = bufnr('%')
  exe bufnr . 'buf'
  call assert_equal([1, 1, 1], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
  exe buf_bbb . "," . buf_ccc . "bdelete"
  call assert_equal([1, 0, 0], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
  exe buf_aaa . "bdelete"
  call assert_equal([0, 0, 0], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
endfunc

func Test_command_count_4()
  %argd
  let bufnr = bufnr('$')
  next aa bb cc dd ee ff
  call assert_equal(bufnr, bufnr('%'))

  3argu
  let args = []
  .,$-argdo call add(args, expand('%'))
  call assert_equal(['cc', 'dd', 'ee'], args)

  " create windows to get 5
  split|split|split|split
  2wincmd w
  let windows = []
  .,$-windo call add(windows, winnr())
  call assert_equal([2, 3, 4], windows)
  only!

  exe bufnr . 'buf'
  let bufnr = bufnr('%')
  let buffers = []
  .,$-bufdo call add(buffers, bufnr('%'))
  call assert_equal([bufnr, bufnr + 1, bufnr + 2, bufnr + 3, bufnr + 4], buffers)

  exe (bufnr + 3) . 'bdel'
  let buffers = []
  exe (bufnr + 2) . ',' . (bufnr + 5) . "bufdo call add(buffers, bufnr('%'))"
  call assert_equal([bufnr + 2, bufnr + 4, bufnr +  5], buffers)

  " create tabpages to get 5
  tabe|tabe|tabe|tabe
  normal! 2gt
  let tabpages = []
  .,$-tabdo call add(tabpages, tabpagenr())
  call assert_equal([2, 3, 4], tabpages)
  tabonly!
  bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab