mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	patch 8.2.0203: :helptags and some other functionality not tested
Problem: :helptags and some other functionality not tested. Solution: Add more tests. (Yegappan Lakshmanan, closes #5567)
This commit is contained in:
		| @@ -60,5 +60,9 @@ func Test_compiler_completion() | ||||
| endfunc | ||||
|  | ||||
| func Test_compiler_error() | ||||
|   let g:current_compiler = 'abc' | ||||
|   call assert_fails('compiler doesnotexist', 'E666:') | ||||
|   call assert_equal('abc', g:current_compiler) | ||||
|   call assert_fails('compiler! doesnotexist', 'E666:') | ||||
|   unlet! g:current_compiler | ||||
| endfunc | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| " Test editing line in Ex mode (see :help Q and :help gQ). | ||||
|  | ||||
| source check.vim | ||||
|  | ||||
| " Helper function to test editing line in Q Ex mode | ||||
| func Ex_Q(cmd) | ||||
|   " Is there a simpler way to test editing Ex line? | ||||
| @@ -52,3 +54,34 @@ func Test_ex_mode() | ||||
|   set sw& | ||||
|   let &encoding = encoding_save | ||||
| endfunc | ||||
|  | ||||
| " Test subsittute confirmation prompt :%s/pat/str/c in Ex mode | ||||
| func Test_Ex_substitute() | ||||
|   CheckRunVimInTerminal | ||||
|   let buf = RunVimInTerminal('', {'rows': 6}) | ||||
|  | ||||
|   call term_sendkeys(buf, ":call setline(1, ['foo foo', 'foo foo', 'foo foo'])\<CR>") | ||||
|   call term_sendkeys(buf, ":set number\<CR>") | ||||
|   call term_sendkeys(buf, "gQ") | ||||
|   call WaitForAssert({-> assert_match(':', term_getline(buf, 6))}, 1000) | ||||
|  | ||||
|   call term_sendkeys(buf, "%s/foo/bar/gc\<CR>") | ||||
|   call WaitForAssert({-> assert_match('  1 foo foo', term_getline(buf, 5))}, | ||||
|         \ 1000) | ||||
|   call WaitForAssert({-> assert_match('    ^^^', term_getline(buf, 6))}, 1000) | ||||
|   call term_sendkeys(buf, "n\<CR>") | ||||
|   call WaitForAssert({-> assert_match('        ^^^', term_getline(buf, 6))}, | ||||
|         \ 1000) | ||||
|   call term_sendkeys(buf, "y\<CR>") | ||||
|  | ||||
|   call term_sendkeys(buf, "q\<CR>") | ||||
|   call WaitForAssert({-> assert_match(':', term_getline(buf, 6))}, 1000) | ||||
|  | ||||
|   call term_sendkeys(buf, ":vi\<CR>") | ||||
|   call WaitForAssert({-> assert_match('foo bar', term_getline(buf, 1))}, 1000) | ||||
|  | ||||
|   call term_sendkeys(buf, ":q!\n") | ||||
|   call StopVimInTerminal(buf) | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| " Tests for various Ex commands. | ||||
|  | ||||
| source check.vim | ||||
|  | ||||
| func Test_ex_delete() | ||||
|   new | ||||
|   call setline(1, ['a', 'b', 'c']) | ||||
| @@ -169,4 +171,74 @@ func Test_change_cmd() | ||||
|   close! | ||||
| endfunc | ||||
|  | ||||
| " Test for the :language command | ||||
| func Test_language_cmd() | ||||
|   CheckFeature multi_lang | ||||
|  | ||||
|   call assert_fails('language ctype non_existing_lang', 'E197:') | ||||
|   call assert_fails('language time non_existing_lang', 'E197:') | ||||
| endfunc | ||||
|  | ||||
| " Test for the :confirm command dialog | ||||
| func Test_confirm_cmd() | ||||
|   CheckNotGui | ||||
|   CheckRunVimInTerminal | ||||
|  | ||||
|   call writefile(['foo1'], 'foo') | ||||
|   call writefile(['bar1'], 'bar') | ||||
|  | ||||
|   " Test for saving all the modified buffers | ||||
|   let buf = RunVimInTerminal('', {'rows': 20}) | ||||
|   call term_sendkeys(buf, ":set nomore\n") | ||||
|   call term_sendkeys(buf, ":new foo\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'foo2')\n") | ||||
|   call term_sendkeys(buf, ":new bar\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'bar2')\n") | ||||
|   call term_sendkeys(buf, ":wincmd b\n") | ||||
|   call term_sendkeys(buf, ":confirm qall\n") | ||||
|   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) | ||||
|   call term_sendkeys(buf, "A") | ||||
|   call StopVimInTerminal(buf) | ||||
|  | ||||
|   call assert_equal(['foo2'], readfile('foo')) | ||||
|   call assert_equal(['bar2'], readfile('bar')) | ||||
|  | ||||
|   " Test for discarding all the changes to modified buffers | ||||
|   let buf = RunVimInTerminal('', {'rows': 20}) | ||||
|   call term_sendkeys(buf, ":set nomore\n") | ||||
|   call term_sendkeys(buf, ":new foo\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'foo3')\n") | ||||
|   call term_sendkeys(buf, ":new bar\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'bar3')\n") | ||||
|   call term_sendkeys(buf, ":wincmd b\n") | ||||
|   call term_sendkeys(buf, ":confirm qall\n") | ||||
|   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) | ||||
|   call term_sendkeys(buf, "D") | ||||
|   call StopVimInTerminal(buf) | ||||
|  | ||||
|   call assert_equal(['foo2'], readfile('foo')) | ||||
|   call assert_equal(['bar2'], readfile('bar')) | ||||
|  | ||||
|   " Test for saving and discarding changes to some buffers | ||||
|   let buf = RunVimInTerminal('', {'rows': 20}) | ||||
|   call term_sendkeys(buf, ":set nomore\n") | ||||
|   call term_sendkeys(buf, ":new foo\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'foo4')\n") | ||||
|   call term_sendkeys(buf, ":new bar\n") | ||||
|   call term_sendkeys(buf, ":call setline(1, 'bar4')\n") | ||||
|   call term_sendkeys(buf, ":wincmd b\n") | ||||
|   call term_sendkeys(buf, ":confirm qall\n") | ||||
|   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, Save (A)ll, (D)iscard All, (C)ancel: ', term_getline(buf, 20))}, 1000) | ||||
|   call term_sendkeys(buf, "N") | ||||
|   call WaitForAssert({-> assert_match('\[Y\]es, (N)o, (C)ancel: ', term_getline(buf, 20))}, 1000) | ||||
|   call term_sendkeys(buf, "Y") | ||||
|   call StopVimInTerminal(buf) | ||||
|  | ||||
|   call assert_equal(['foo4'], readfile('foo')) | ||||
|   call assert_equal(['bar2'], readfile('bar')) | ||||
|  | ||||
|   call delete('foo') | ||||
|   call delete('bar') | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -138,7 +138,7 @@ func Test_file_changed_dialog() | ||||
|   sleep 2 | ||||
|   silent !touch Xchanged_d | ||||
|   let v:warningmsg = '' | ||||
|   checktime | ||||
|   checktime Xchanged_d | ||||
|   call assert_equal('', v:warningmsg) | ||||
|   call assert_equal(1, line('$')) | ||||
|   call assert_equal('new line', getline(1)) | ||||
|   | ||||
| @@ -72,3 +72,41 @@ func Test_help_completion() | ||||
|   call feedkeys(":help :undo\<C-A>\<C-B>\"\<CR>", 'tx') | ||||
|   call assert_equal('"help :undo :undoj :undol :undojoin :undolist', @:) | ||||
| endfunc | ||||
|  | ||||
| " Test for the :helptags command | ||||
| func Test_helptag_cmd() | ||||
|   call mkdir('Xdir/a/doc', 'p') | ||||
|  | ||||
|   " No help file to process in the directory | ||||
|   call assert_fails('helptags Xdir', 'E151:') | ||||
|  | ||||
|   call writefile([], 'Xdir/a/doc/sample.txt') | ||||
|  | ||||
|   " Test for ++t argument | ||||
|   helptags ++t Xdir | ||||
|   call assert_equal(["help-tags\ttags\t1"], readfile('Xdir/tags')) | ||||
|   call delete('Xdir/tags') | ||||
|  | ||||
|   " The following tests fail on FreeBSD for some reason | ||||
|   if has('unix') && !has('bsd') | ||||
|     " Read-only tags file | ||||
|     call writefile([''], 'Xdir/tags') | ||||
|     call setfperm('Xdir/tags', 'r-xr--r--') | ||||
|     call assert_fails('helptags Xdir', 'E152:', getfperm('Xdir/tags')) | ||||
|     call delete('Xdir/tags') | ||||
|  | ||||
|     " No permission to read the help file | ||||
|     call setfperm('Xdir/a/doc/sample.txt', '-w-------') | ||||
|     call assert_fails('helptags Xdir', 'E153:', getfperm('Xdir/a/doc/sample.txt')) | ||||
|     call delete('Xdir/a/doc/sample.txt') | ||||
|     call delete('Xdir/tags') | ||||
|   endif | ||||
|  | ||||
|   " Duplicate tags in the help file | ||||
|   call writefile(['*tag1*', '*tag1*', '*tag2*'], 'Xdir/a/doc/sample.txt') | ||||
|   call assert_fails('helptags Xdir', 'E154:') | ||||
|  | ||||
|   call delete('Xdir', 'rf') | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -99,6 +99,11 @@ func Test_help_tagjump() | ||||
|   call assert_true(getline('.') =~ '\*/\\bar\*') | ||||
|   helpclose | ||||
|  | ||||
|   help \_$ | ||||
|   call assert_equal("help", &filetype) | ||||
|   call assert_true(getline('.') =~ '\*/\\_$\*') | ||||
|   helpclose | ||||
|  | ||||
|   help CTRL-\_CTRL-N | ||||
|   call assert_equal("help", &filetype) | ||||
|   call assert_true(getline('.') =~ '\*CTRL-\\_CTRL-N\*') | ||||
|   | ||||
| @@ -110,6 +110,8 @@ func Test_timer_info() | ||||
|  | ||||
|   call timer_stop(id) | ||||
|   call assert_equal([], timer_info(id)) | ||||
|  | ||||
|   call assert_fails('call timer_info("abc")', 'E39:') | ||||
| endfunc | ||||
|  | ||||
| func Test_timer_stopall() | ||||
| @@ -152,6 +154,8 @@ func Test_timer_paused() | ||||
|   else | ||||
|     call assert_inrange(0, 10, slept) | ||||
|   endif | ||||
|  | ||||
|   call assert_fails('call timer_pause("abc", 1)', 'E39:') | ||||
| endfunc | ||||
|  | ||||
| func StopMyself(timer) | ||||
| @@ -246,6 +250,10 @@ func Test_timer_errors() | ||||
|   call WaitForAssert({-> assert_equal(3, g:call_count)}) | ||||
|   sleep 50m | ||||
|   call assert_equal(3, g:call_count) | ||||
|  | ||||
|   call assert_fails('call timer_start(100, "MyHandler", "abc")', 'E475:') | ||||
|   call assert_fails('call timer_start(100, [])', 'E921:') | ||||
|   call assert_fails('call timer_stop("abc")', 'E39:') | ||||
| endfunc | ||||
|  | ||||
| func FuncWithCaughtError(timer) | ||||
| @@ -405,4 +413,13 @@ func Test_timer_error_in_timer_callback() | ||||
|   exe buf .. 'bwipe!' | ||||
| endfunc | ||||
|  | ||||
| " Test for garbage collection when a timer is still running | ||||
| func Test_timer_garbage_collect() | ||||
|   let timer = timer_start(1000, function('MyHandler'), {'repeat' : 10}) | ||||
|   call test_garbagecollect_now() | ||||
|   let l = timer_info(timer) | ||||
|   call assert_equal(function('MyHandler'), l[0].callback) | ||||
|   call timer_stop(timer) | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -933,4 +933,13 @@ func Test_win_splitmove() | ||||
|   tabclose | ||||
| endfunc | ||||
|  | ||||
| " Test for the :only command | ||||
| func Test_window_only() | ||||
|   new | ||||
|   set modified | ||||
|   new | ||||
|   call assert_fails('only', 'E445:') | ||||
|   only! | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -742,6 +742,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     203, | ||||
| /**/ | ||||
|     202, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user