view src/testdir/test_hide.vim @ 33503:f72004b37b2b v9.0.2001

patch 9.0.2001: Vim9: segfault with islocked() Commit: https://github.com/vim/vim/commit/9771b2a67f825bdc6e5c615141d22c665952dc86 Author: Ernie Rael <errael@raelity.com> Date: Sat Oct 7 22:05:40 2023 +0200 patch 9.0.2001: Vim9: segfault with islocked() Problem: Vim9: segfault with islocked() Solution: Check that the lval pointer is not null for objects and class variables closes: #13295 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Ernie Rael <errael@raelity.com>
author Christian Brabandt <cb@256bit.org>
date Sat, 07 Oct 2023 22:15:09 +0200
parents e373843e2980
children
line wrap: on
line source

" Tests for :hide command/modifier and 'hidden' option

func SetUp()
  let s:save_hidden = &hidden
  let s:save_bufhidden = &bufhidden
  let s:save_autowrite = &autowrite
  set nohidden
  set bufhidden=
  set noautowrite
endfunc

function TearDown()
  let &hidden = s:save_hidden
  let &bufhidden = s:save_bufhidden
  let &autowrite = s:save_autowrite
endfunc

function Test_hide()
  let orig_bname = bufname('')
  let orig_winnr = winnr('$')

  new Xf1
  set modified
  call assert_fails('edit Xf2')
  bwipeout! Xf1

  new Xf1
  set modified
  edit! Xf2
  call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
  call assert_equal([1, 0], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1
  bwipeout! Xf2

  new Xf1
  set modified
  " :hide as a command
  hide
  call assert_equal([orig_bname, orig_winnr], [bufname(''), winnr('$')])
  call assert_equal([1, 1], ['Xf1'->buflisted(), 'Xf1'->bufloaded()])
  bwipeout! Xf1

  new Xf1
  set modified
  " :hide as a command with trailing comment
  hide " comment
  call assert_equal([orig_bname, orig_winnr], [bufname(''), winnr('$')])
  call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1

  new Xf1
  set modified
  " :hide as a command with bar
  hide | new Xf2 " comment
  call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
  call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1
  bwipeout! Xf2

  new Xf1
  set modified
  " :hide as a modifier with trailing comment
  hide edit Xf2 " comment
  call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
  call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1
  bwipeout! Xf2

  new Xf1
  set modified
  " To check that the bar is not recognized to separate commands
  hide echo "one|two"
  call assert_equal(['Xf1', 2], [bufname(''), winnr('$')])
  call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1

  " set hidden
  new Xf1
  set hidden
  set modified
  edit Xf2 " comment
  call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
  call assert_equal([1, 1], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf1
  bwipeout! Xf2

  " set hidden bufhidden=wipe
  new Xf1
  set bufhidden=wipe
  set modified
  hide edit! Xf2 " comment
  call assert_equal(['Xf2', 2], [bufname(''), winnr('$')])
  call assert_equal([0, 0], [buflisted('Xf1'), bufloaded('Xf1')])
  bwipeout! Xf2
endfunc

" vim: shiftwidth=2 sts=2 expandtab