mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 af23d17388
			
		
	
	af23d17388
	
	
	
		
			
			The new oldtest directory is in test/old/testdir. The reason for this is that many tests have hardcoded the parent directory name to be 'testdir'.
		
			
				
	
	
		
			230 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			230 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Tests for :help
 | ||
| 
 | ||
| source check.vim
 | ||
| source vim9.vim
 | ||
| 
 | ||
| func SetUp()
 | ||
|   let s:vimruntime = $VIMRUNTIME
 | ||
|   let s:runtimepath = &runtimepath
 | ||
|   " Set $VIMRUNTIME to $BUILD_DIR/runtime and remove the original $VIMRUNTIME
 | ||
|   " path from &runtimepath so that ":h local-additions" won't pick up builtin
 | ||
|   " help files.
 | ||
|   let $VIMRUNTIME = expand($BUILD_DIR) .. '/runtime'
 | ||
|   set runtimepath-=../../../runtime
 | ||
| endfunc
 | ||
| 
 | ||
| func TearDown()
 | ||
|   let $VIMRUNTIME = s:vimruntime
 | ||
|   let &runtimepath = s:runtimepath
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_restore_snapshot()
 | ||
|   help
 | ||
|   set buftype=
 | ||
|   help
 | ||
|   edit x
 | ||
|   help
 | ||
|   helpclose
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_restore_snapshot_split()
 | ||
|   " Squeeze the unnamed buffer, Xfoo and the help one side-by-side and focus
 | ||
|   " the first one before calling :help.
 | ||
|   let bnr = bufnr()
 | ||
|   botright vsp Xfoo
 | ||
|   wincmd h
 | ||
|   help
 | ||
|   wincmd L
 | ||
|   let g:did_bufenter = v:false
 | ||
|   augroup T
 | ||
|     au!
 | ||
|     au BufEnter Xfoo let g:did_bufenter = v:true
 | ||
|   augroup END
 | ||
|   helpclose
 | ||
|   augroup! T
 | ||
|   " We're back to the unnamed buffer.
 | ||
|   call assert_equal(bnr, bufnr())
 | ||
|   " No BufEnter was triggered for Xfoo.
 | ||
|   call assert_equal(v:false, g:did_bufenter)
 | ||
| 
 | ||
|   close!
 | ||
|   bwipe!
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_errors()
 | ||
|   call assert_fails('help doesnotexist', 'E149:')
 | ||
|   call assert_fails('help!', 'E478:')
 | ||
|   if has('multi_lang')
 | ||
|     call assert_fails('help help@xy', 'E661:')
 | ||
|   endif
 | ||
| 
 | ||
|   let save_hf = &helpfile
 | ||
|   set helpfile=help_missing
 | ||
|   help
 | ||
|   call assert_equal(1, winnr('$'))
 | ||
|   call assert_notequal('help', &buftype)
 | ||
|   let &helpfile = save_hf
 | ||
| 
 | ||
|   call assert_fails('help ' . repeat('a', 1048), 'E149:')
 | ||
| 
 | ||
|   new
 | ||
|   set keywordprg=:help
 | ||
|   call setline(1, "   ")
 | ||
|   call assert_fails('normal VK', 'E349:')
 | ||
|   bwipe!
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_expr()
 | ||
|   help expr-!~?
 | ||
|   call assert_equal('eval.txt', expand('%:t'))
 | ||
|   close
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_keyword()
 | ||
|   new
 | ||
|   set keywordprg=:help
 | ||
|   call setline(1, "  Visual ")
 | ||
|   normal VK
 | ||
|   call assert_match('^Visual mode', getline('.'))
 | ||
|   call assert_equal('help', &ft)
 | ||
|   close
 | ||
|   bwipe!
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_local_additions()
 | ||
|   call mkdir('Xruntime/doc', 'p')
 | ||
|   call writefile(['*mydoc.txt* my awesome doc'], 'Xruntime/doc/mydoc.txt')
 | ||
|   call writefile(['*mydoc-ext.txt* my extended awesome doc'], 'Xruntime/doc/mydoc-ext.txt')
 | ||
|   let rtp_save = &rtp
 | ||
|   set rtp+=./Xruntime
 | ||
|   help local-additions
 | ||
|   let lines = getline(line(".") + 1, search("^$") - 1)
 | ||
|   call assert_equal([
 | ||
|   \ '|mydoc-ext.txt| my extended awesome doc',
 | ||
|   \ '|mydoc.txt| my awesome doc'
 | ||
|   \ ], lines)
 | ||
|   call delete('Xruntime/doc/mydoc-ext.txt')
 | ||
|   close
 | ||
| 
 | ||
|   call mkdir('Xruntime-ja/doc', 'p')
 | ||
|   call writefile(["local-additions\thelp.jax\t/*local-additions*"], 'Xruntime-ja/doc/tags-ja')
 | ||
|   call writefile(['*help.txt* This is jax file', '',
 | ||
|   \ 'LOCAL ADDITIONS: *local-additions*', ''], 'Xruntime-ja/doc/help.jax')
 | ||
|   call writefile(['*work.txt* This is jax file'], 'Xruntime-ja/doc/work.jax')
 | ||
|   call writefile(['*work2.txt* This is jax file'], 'Xruntime-ja/doc/work2.jax')
 | ||
|   set rtp+=./Xruntime-ja
 | ||
| 
 | ||
|   help local-additions@en
 | ||
|   let lines = getline(line(".") + 1, search("^$") - 1)
 | ||
|   call assert_equal([
 | ||
|   \ '|mydoc.txt| my awesome doc'
 | ||
|   \ ], lines)
 | ||
|   close
 | ||
| 
 | ||
|   help local-additions@ja
 | ||
|   let lines = getline(line(".") + 1, search("^$") - 1)
 | ||
|   call assert_equal([
 | ||
|   \ '|mydoc.txt| my awesome doc',
 | ||
|   \ '|help.txt| This is jax file',
 | ||
|   \ '|work.txt| This is jax file',
 | ||
|   \ '|work2.txt| This is jax file',
 | ||
|   \ ], lines)
 | ||
|   close
 | ||
| 
 | ||
|   call delete('Xruntime', 'rf')
 | ||
|   call delete('Xruntime-ja', 'rf')
 | ||
|   let &rtp = rtp_save
 | ||
| endfunc
 | ||
| 
 | ||
| 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
 | ||
| " NOTE: if you run tests as root this will fail.  Don't run tests as root!
 | ||
| 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')
 | ||
| 
 | ||
|   " Test parsing tags
 | ||
|   call writefile(['*tag1*', 'Example: >', '  *notag*', 'Example end: *tag2*'],
 | ||
|     \ 'Xdir/a/doc/sample.txt')
 | ||
|   helptags Xdir
 | ||
|   call assert_equal(["tag1\ta/doc/sample.txt\t/*tag1*",
 | ||
|                   \  "tag2\ta/doc/sample.txt\t/*tag2*"], readfile('Xdir/tags'))
 | ||
| 
 | ||
|   " 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
 | ||
| 
 | ||
| func Test_helptag_cmd_readonly()
 | ||
|   CheckUnix
 | ||
|   CheckNotRoot
 | ||
| 
 | ||
|   " Read-only tags file
 | ||
|   call mkdir('Xdir/doc', 'p')
 | ||
|   call writefile([''], 'Xdir/doc/tags')
 | ||
|   call writefile([], 'Xdir/doc/sample.txt')
 | ||
|   call setfperm('Xdir/doc/tags', 'r-xr--r--')
 | ||
|   call assert_fails('helptags Xdir/doc', 'E152:', getfperm('Xdir/doc/tags'))
 | ||
| 
 | ||
|   let rtp = &rtp
 | ||
|   let &rtp = 'Xdir'
 | ||
|   helptags ALL
 | ||
|   let &rtp = rtp
 | ||
| 
 | ||
|   call delete('Xdir/doc/tags')
 | ||
| 
 | ||
|   " No permission to read the help file
 | ||
|   call mkdir('Xdir/b/doc', 'p')
 | ||
|   call writefile([], 'Xdir/b/doc/sample.txt')
 | ||
|   call setfperm('Xdir/b/doc/sample.txt', '-w-------')
 | ||
|   call assert_fails('helptags Xdir', 'E153:', getfperm('Xdir/b/doc/sample.txt'))
 | ||
|   call delete('Xdir', 'rf')
 | ||
| endfunc
 | ||
| 
 | ||
| " Test for setting the 'helpheight' option in the help window
 | ||
| func Test_help_window_height()
 | ||
|   let &cmdheight = &lines - 23
 | ||
|   set helpheight=10
 | ||
|   help
 | ||
|   set helpheight=14
 | ||
|   call assert_equal(14, winheight(0))
 | ||
|   set helpheight& cmdheight=1
 | ||
|   close
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_long_argument()
 | ||
|   try
 | ||
|     exe 'help \%' .. repeat('0', 1021)
 | ||
|   catch
 | ||
|     call assert_match("E149:", v:exception)
 | ||
|   endtry
 | ||
| endfunc
 | ||
| 
 | ||
| func Test_help_using_visual_match()
 | ||
|   let lines =<< trim END
 | ||
|       call setline(1, ' ')
 | ||
|       /^
 | ||
|       exe "normal \<C-V>\<C-V>"
 | ||
|       h5\%V]
 | ||
|   END
 | ||
|   call CheckScriptFailure(lines, 'E149:')
 | ||
| endfunc
 | ||
| 
 | ||
| 
 | ||
| " vim: shiftwidth=2 sts=2 expandtab
 |