diff src/testdir/test_signs.vim @ 15247:336728a577f5 v8.1.0632

patch 8.1.0632: using sign group names is inefficient commit https://github.com/vim/vim/commit/7a2d9892b7158edf8dc48e9bcaaae70a40787b37 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 24 20:23:49 2018 +0100 patch 8.1.0632: using sign group names is inefficient Problem: Using sign group names is inefficient. Solution: Store group names in a hash table and use a reference to them. Also remove unnecessary use of ":exe" from the tests. (Yegappan Lakshmanan, closes #3715)
author Bram Moolenaar <Bram@vim.org>
date Mon, 24 Dec 2018 20:30:04 +0100
parents 3a99b2e6d136
children a6319aca721b
line wrap: on
line diff
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -59,7 +59,7 @@ func Test_sign()
   redraw
 
   " Check that we can't change sign.
-  call assert_fails("exe 'sign place 40 name=Sign1 buffer=' . bufnr('%')", 'E885:')
+  call assert_fails("sign place 40 name=Sign1 buffer=" . bufnr('%'), 'E885:')
 
   " Check placed signs
   let a=execute('sign place')
@@ -68,7 +68,7 @@ func Test_sign()
   " Unplace the sign and try jumping to it again should fail.
   sign unplace 41
   1
-  call assert_fails("exe 'sign jump 41 buffer=' . bufnr('%')", 'E157:')
+  call assert_fails("sign jump 41 buffer=" . bufnr('%'), 'E157:')
   call assert_equal('a', getline('.'))
 
   " Unplace sign on current line.
@@ -132,17 +132,22 @@ func Test_sign()
   sign undefine Sign4
 
   " Error cases
-  call assert_fails("exe 'sign place abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign unplace abc name=Sign1 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign place 1abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign unplace 2abc name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place abc line=3 name=Sign1 buffer=" .
+			  \ bufnr('%'), 'E474:')
+  call assert_fails("sign unplace abc name=Sign1 buffer=" .
+			  \ bufnr('%'), 'E474:')
+  call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" .
+			  \ bufnr('%'), 'E474:')
+  call assert_fails("sign unplace 2abc name=Sign1 buffer=" .
+			  \ bufnr('%'), 'E474:')
   call assert_fails("sign unplace 2 *", 'E474:')
-  call assert_fails("exe 'sign place 1 line=3 name=Sign1 buffer=' . bufnr('%') a", 'E488:')
-  call assert_fails("exe 'sign place name=Sign1 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign place line=10 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign unplace 2 line=10 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign unplace 2 name=Sign1 buffer=' . bufnr('%')", 'E474:')
-  call assert_fails("exe 'sign place 2 line=3 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place 1 line=3 name=Sign1 buffer=" .
+			  \ bufnr('%') . " a", 'E488:')
+  call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:')
+  call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:')
+  call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:')
+  call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:')
+  call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:')
   call assert_fails("sign place 2", 'E474:')
   call assert_fails("sign place abc", 'E474:')
   call assert_fails("sign place 5 line=3", 'E474:')
@@ -157,7 +162,8 @@ func Test_sign()
   sign undefine Sign1
   sign undefine Sign2
   sign undefine Sign3
-  call assert_fails("exe 'sign place 41 line=3 name=Sign1 buffer=' . bufnr('%')", 'E155:')
+  call assert_fails("sign place 41 line=3 name=Sign1 buffer=" .
+			  \ bufnr('%'), 'E155:')
 endfunc
 
 " Undefining placed sign is not recommended.
@@ -236,33 +242,33 @@ func Test_sign_invalid_commands()
   call assert_fails('sign place 1 buffer=999', 'E158:')
   call assert_fails('sign define Sign2 text=', 'E239:')
   " Non-numeric identifier for :sign place
-  call assert_fails("exe 'sign place abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Non-numeric identifier for :sign unplace
-  call assert_fails("exe 'sign unplace abc name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign unplace abc name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Number followed by an alphabet as sign identifier for :sign place
-  call assert_fails("exe 'sign place 1abc line=3 name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place 1abc line=3 name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Number followed by an alphabet as sign identifier for :sign unplace
-  call assert_fails("exe 'sign unplace 2abc name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign unplace 2abc name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Sign identifier and '*' for :sign unplace
   call assert_fails("sign unplace 2 *", 'E474:')
   " Trailing characters after buffer number for :sign place
-  call assert_fails("exe 'sign place 1 line=3 name=Sign1 buffer=' . bufnr('%') . 'xxx'", 'E488:')
+  call assert_fails("sign place 1 line=3 name=Sign1 buffer=" . bufnr('%') . 'xxx', 'E488:')
   " Trailing characters after buffer number for :sign unplace
-  call assert_fails("exe 'sign unplace 1 buffer=' . bufnr('%') . 'xxx'", 'E488:')
-  call assert_fails("exe 'sign unplace * buffer=' . bufnr('%') . 'xxx'", 'E488:')
+  call assert_fails("sign unplace 1 buffer=" . bufnr('%') . 'xxx', 'E488:')
+  call assert_fails("sign unplace * buffer=" . bufnr('%') . 'xxx', 'E488:')
   call assert_fails("sign unplace 1 xxx", 'E474:')
   call assert_fails("sign unplace * xxx", 'E474:')
   call assert_fails("sign unplace xxx", 'E474:')
   " Placing a sign without line number
-  call assert_fails("exe 'sign place name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Placing a sign without sign name
-  call assert_fails("exe 'sign place line=10 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place line=10 buffer=" . bufnr('%'), 'E474:')
   " Unplacing a sign with line number
-  call assert_fails("exe 'sign unplace 2 line=10 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign unplace 2 line=10 buffer=" . bufnr('%'), 'E474:')
   " Unplacing a sign with sign name
-  call assert_fails("exe 'sign unplace 2 name=Sign1 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign unplace 2 name=Sign1 buffer=" . bufnr('%'), 'E474:')
   " Placing a sign without sign name
-  call assert_fails("exe 'sign place 2 line=3 buffer=' . bufnr('%')", 'E474:')
+  call assert_fails("sign place 2 line=3 buffer=" . bufnr('%'), 'E474:')
   " Placing a sign with only sign identifier
   call assert_fails("sign place 2", 'E474:')
   " Placing a sign with only a name
@@ -574,24 +580,24 @@ func Test_sign_group()
   call sign_unplace('*')
 
   " Test for :sign command and groups
-  exe 'sign place 5 line=10 name=sign1 file=' . fname
-  exe 'sign place 5 group=g1 line=10 name=sign1 file=' . fname
-  exe 'sign place 5 group=g2 line=10 name=sign1 file=' . fname
+  sign place 5 line=10 name=sign1 file=Xsign
+  sign place 5 group=g1 line=10 name=sign1 file=Xsign
+  sign place 5 group=g2 line=10 name=sign1 file=Xsign
 
   " Test for :sign place group={group} file={fname}
-  let a = execute('sign place file=' . fname)
+  let a = execute('sign place file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=10  id=5  name=sign1 priority=10\n", a)
 
-  let a = execute('sign place group=g2 file=' . fname)
+  let a = execute('sign place group=g2 file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n    line=10  id=5  group=g2  name=sign1 priority=10\n", a)
 
-  let a = execute('sign place group=* file=' . fname)
+  let a = execute('sign place group=* file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=10  id=5  group=g2  name=sign1 priority=10\n" .
 	      \ "    line=10  id=5  group=g1  name=sign1 priority=10\n" .
 	      \ "    line=10  id=5  name=sign1 priority=10\n", a)
 
-  let a = execute('sign place group=xyz file=' . fname)
+  let a = execute('sign place group=xyz file=Xsign')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n", a)
 
   call sign_unplace('*')
@@ -624,22 +630,22 @@ func Test_sign_group()
 	      \ "    line=12  id=5  group=g2  name=sign1 priority=10\n", a)
 
   " Test for :sign unplace
-  exe 'sign unplace 5 group=g2 file=' . fname
+  sign unplace 5 group=g2 file=Xsign
   call assert_equal([], sign_getplaced(bnum, {'group' : 'g2'})[0].signs)
 
   exe 'sign unplace 5 group=g1 buffer=' . bnum
   call assert_equal([], sign_getplaced(bnum, {'group' : 'g1'})[0].signs)
 
-  exe 'sign unplace 5 group=xy file=' . fname
+  sign unplace 5 group=xy file=Xsign
   call assert_equal(1, len(sign_getplaced(bnum, {'group' : '*'})[0].signs))
 
   " Test for removing all the signs. Place the signs again for this test
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
-  exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname
-  exe 'sign place 6 line=20 name=sign1 file=' . fname
-  exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname
-  exe 'sign place 6 group=g2 line=22 name=sign1 file=' . fname
-  exe 'sign unplace 5 group=* file=' . fname
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
+  sign place 5 group=g2 line=12 name=sign1 file=Xsign
+  sign place 6 line=20 name=sign1 file=Xsign
+  sign place 6 group=g1 line=21 name=sign1 file=Xsign
+  sign place 6 group=g2 line=22 name=sign1 file=Xsign
+  sign unplace 5 group=* file=Xsign
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=20  id=6  name=sign1 priority=10\n" .
@@ -647,17 +653,17 @@ func Test_sign_group()
 	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
 
   " Remove all the signs from the global group
-  exe 'sign unplace * file=' . fname
+  sign unplace * file=Xsign
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=21  id=6  group=g1  name=sign1 priority=10\n" .
 	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
 
   " Remove all the signs from a particular group
-  exe 'sign place 5 line=10 name=sign1 file=' . fname
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
-  exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname
-  exe 'sign unplace * group=g1 file=' . fname
+  sign place 5 line=10 name=sign1 file=Xsign
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
+  sign place 5 group=g2 line=12 name=sign1 file=Xsign
+  sign unplace * group=g1 file=Xsign
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
 	      \ "    line=10  id=5  name=sign1 priority=10\n" .
@@ -665,26 +671,26 @@ func Test_sign_group()
 	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
 
   " Remove all the signs from all the groups in a file
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
-  exe 'sign place 6 line=20 name=sign1 file=' . fname
-  exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname
-  exe 'sign unplace * group=* file=' . fname
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
+  sign place 6 line=20 name=sign1 file=Xsign
+  sign place 6 group=g1 line=21 name=sign1 file=Xsign
+  sign unplace * group=* file=Xsign
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\n", a)
 
   " Remove a particular sign id in a group from all the files
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
   sign unplace 5 group=g1
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\n", a)
 
   " Remove a particular sign id in all the groups from all the files
-  exe 'sign place 5 line=10 name=sign1 file=' . fname
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
-  exe 'sign place 5 group=g2 line=12 name=sign1 file=' . fname
-  exe 'sign place 6 line=20 name=sign1 file=' . fname
-  exe 'sign place 6 group=g1 line=21 name=sign1 file=' . fname
-  exe 'sign place 6 group=g2 line=22 name=sign1 file=' . fname
+  sign place 5 line=10 name=sign1 file=Xsign
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
+  sign place 5 group=g2 line=12 name=sign1 file=Xsign
+  sign place 6 line=20 name=sign1 file=Xsign
+  sign place 6 group=g1 line=21 name=sign1 file=Xsign
+  sign place 6 group=g2 line=22 name=sign1 file=Xsign
   sign unplace 5 group=*
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\nSigns for Xsign:\n" .
@@ -693,14 +699,14 @@ func Test_sign_group()
 	      \ "    line=22  id=6  group=g2  name=sign1 priority=10\n", a)
 
   " Remove all the signs from all the groups in all the files
-  exe 'sign place 5 line=10 name=sign1 file=' . fname
-  exe 'sign place 5 group=g1 line=11 name=sign1 file=' . fname
+  sign place 5 line=10 name=sign1 file=Xsign
+  sign place 5 group=g1 line=11 name=sign1 file=Xsign
   sign unplace * group=*
   let a = execute('sign place group=*')
   call assert_equal("\n--- Signs ---\n", a)
 
   " Error cases
-  call assert_fails("exe 'sign place 3 group= name=sign1 buffer=' . bnum", 'E474:')
+  call assert_fails("sign place 3 group= name=sign1 buffer=" . bnum, 'E474:')
 
   call delete("Xsign")
   call sign_unplace('*')