diff options
40 files changed, 765 insertions, 616 deletions
diff --git a/src/nvim/testdir/test101.in b/src/nvim/testdir/test101.in deleted file mode 100644 index 04c934f2c5..0000000000 --- a/src/nvim/testdir/test101.in +++ /dev/null @@ -1,45 +0,0 @@ -Test for v:hlsearch vim: set ft=vim : - -STARTTEST -:" Last abc: Q -:so small.vim -:new -:call setline(1, repeat(['aaa'], 10)) -:set hlsearch nolazyredraw -:let r=[] -:command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch]) -/aaa -:AddR -:nohlsearch -:AddR -:let v:hlsearch=1 -:AddR -:let v:hlsearch=0 -:AddR -:set hlsearch -:AddR -:let v:hlsearch=0 -:AddR -n:AddR -:let v:hlsearch=0 -:AddR -/ -:AddR -:let r1=r[0][0] -:" I guess it is not guaranteed that screenattr outputs always the same character -:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")') -:try -: let v:hlsearch=[] -:catch -: call add(r, matchstr(v:exception,'^Vim(let):E\d\+:')) -:endtry -:bwipeout! -:$put=r -:call garbagecollect(1) -:" -:/^start:/,$wq! test.out -:" vim: et ts=4 isk-=\: -:call getchar() -ENDTEST - -start: diff --git a/src/nvim/testdir/test101.ok b/src/nvim/testdir/test101.ok deleted file mode 100644 index 3ed7436cf7..0000000000 --- a/src/nvim/testdir/test101.ok +++ /dev/null @@ -1,11 +0,0 @@ -start: -1:highlighted -0:not highlighted -1:highlighted -0:not highlighted -1:highlighted -0:not highlighted -1:highlighted -0:not highlighted -1:highlighted -Vim(let):E706: diff --git a/src/nvim/testdir/test104.in b/src/nvim/testdir/test104.in deleted file mode 100644 index fd847131e9..0000000000 --- a/src/nvim/testdir/test104.in +++ /dev/null @@ -1,30 +0,0 @@ -Tests for :let. vim: set ft=vim ts=8 : - -STARTTEST -:so small.vim -:set runtimepath+=./sautest -:" Test to not autoload when assigning. It causes internal error. -:try -: let Test104#numvar = function('tr') -: $put ='OK: ' . string(Test104#numvar) -:catch -: $put ='FAIL: ' . v:exception -:endtry -:let a = 1 -:let b = 2 -:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0 == 1 ? "a" : "b"}'] -: try -: redir => messages -: execute 'let' letargs -: redir END -: $put ='OK:' -: $put =split(substitute(messages, '\n', '\0 ', 'g'), '\n') -: catch -: $put ='FAIL: ' . v:exception -: redir END -: endtry -:endfor -:/^Results/,$wq! test.out -ENDTEST - -Results of test104: diff --git a/src/nvim/testdir/test104.ok b/src/nvim/testdir/test104.ok deleted file mode 100644 index 5fb20945c3..0000000000 --- a/src/nvim/testdir/test104.ok +++ /dev/null @@ -1,13 +0,0 @@ -Results of test104: -OK: function('tr') -OK: - a #1 - b #2 -OK: - b #2 -OK: - b #2 - a #1 -OK: - a #1 - b #2 diff --git a/src/nvim/testdir/test105.in b/src/nvim/testdir/test105.in deleted file mode 100644 index bfb4b65fbb..0000000000 --- a/src/nvim/testdir/test105.in +++ /dev/null @@ -1,45 +0,0 @@ -Test filename modifiers vim: set ft=vim : - -STARTTEST -:source small.vim -:%delete _ -:set shell=sh -:set shellslash -:let tab="\t" -:command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr))) -:let $HOME=fnamemodify('.', ':p:h:h:h') -:Put fnamemodify('.', ':p' )[-1:] -:Put fnamemodify('.', ':p:h' )[-1:] -:Put fnamemodify('test.out', ':p' )[-1:] -:Put fnamemodify('test.out', ':.' ) -:Put fnamemodify('../testdir/a', ':.' ) -:Put fnamemodify('test.out', ':~' ) -:Put fnamemodify('../testdir/a', ':~' ) -:Put fnamemodify('../testdir/a', ':t' ) -:Put fnamemodify('.', ':p:t' ) -:Put fnamemodify('test.out', ':p:t' ) -:Put fnamemodify('test.out', ':p:e' ) -:Put fnamemodify('test.out', ':p:t:e' ) -:Put fnamemodify('abc.fb2.tar.gz', ':r' ) -:Put fnamemodify('abc.fb2.tar.gz', ':r:r' ) -:Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) -:Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(nvim/testdir/.*\)', '\1', '') -:Put fnamemodify('abc.fb2.tar.gz', ':e' ) -:Put fnamemodify('abc.fb2.tar.gz', ':e:e' ) -:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) -:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') -:Put fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) -:Put fnamemodify('abc def', ':S' ) -:Put fnamemodify('abc" "def', ':S' ) -:Put fnamemodify('abc"%"def', ':S' ) -:Put fnamemodify('abc'' ''def', ':S' ) -:Put fnamemodify('abc''%''def', ':S' ) -:Put fnamemodify("abc\ndef", ':S' ) -:set shell=tcsh -:Put fnamemodify("abc\ndef", ':S' ) -:$put ='vim: ts=8' -:1 delete _ -:w! test.out -:qa! -ENDTEST - diff --git a/src/nvim/testdir/test105.ok b/src/nvim/testdir/test105.ok deleted file mode 100644 index 0b30ee4281..0000000000 --- a/src/nvim/testdir/test105.ok +++ /dev/null @@ -1,29 +0,0 @@ -fnamemodify('.', ':p' )[-1:] '/' -fnamemodify('.', ':p:h' )[-1:] 'r' -fnamemodify('test.out', ':p' )[-1:] 't' -fnamemodify('test.out', ':.' ) 'test.out' -fnamemodify('../testdir/a', ':.' ) 'a' -fnamemodify('test.out', ':~' ) '~/nvim/testdir/test.out' -fnamemodify('../testdir/a', ':~' ) '~/nvim/testdir/a' -fnamemodify('../testdir/a', ':t' ) 'a' -fnamemodify('.', ':p:t' ) '' -fnamemodify('test.out', ':p:t' ) 'test.out' -fnamemodify('test.out', ':p:e' ) 'out' -fnamemodify('test.out', ':p:t:e' ) 'out' -fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' -fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' -fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' -substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(nvim/testdir/.*\)', '\1', '') 'nvim/testdir/abc.fb2' -fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' -fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' -fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' -fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') 'fb2.tar.gz' -fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) 'tar' -fnamemodify('abc def', ':S' ) '''abc def''' -fnamemodify('abc" "def', ':S' ) '''abc" "def''' -fnamemodify('abc"%"def', ':S' ) '''abc"%"def''' -fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def''' -fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def''' -fnamemodify("abc\ndef", ':S' ) '''abc^@def''' -fnamemodify("abc\ndef", ':S' ) '''abc\^@def''' -vim: ts=8 diff --git a/src/nvim/testdir/test21.in b/src/nvim/testdir/test21.in deleted file mode 100644 index 491b9f7404..0000000000 --- a/src/nvim/testdir/test21.in +++ /dev/null @@ -1,19 +0,0 @@ -Tests for [ CTRL-I with a count and CTRL-W CTRL-I with a count - -STARTTEST -:so small.vim -/start -6[ :.w! test.out -?start here -6 :.w >>test.out -:qa! -ENDTEST - -#include test21.in - -/* test text test tex start here - some text - test text - start OK if found this line - start found wrong line -test text diff --git a/src/nvim/testdir/test21.ok b/src/nvim/testdir/test21.ok deleted file mode 100644 index d9f1b759ce..0000000000 --- a/src/nvim/testdir/test21.ok +++ /dev/null @@ -1,2 +0,0 @@ - start OK if found this line - start OK if found this line diff --git a/src/nvim/testdir/test25.in b/src/nvim/testdir/test25.in deleted file mode 100644 index 4139865daf..0000000000 --- a/src/nvim/testdir/test25.in +++ /dev/null @@ -1,31 +0,0 @@ -Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag. -This only works for Unix, because of the symbolic link. - -STARTTEST -:so small.vim -:set hidden -:" Create a link from test25.dir to the current directory. -:!rm -f test25.dir -:!ln -s . test25.dir -:" Create tags.text, with the current directory name inserted. -/tags line -:r !pwd -d$/test -hP:.w! tags.test -:" Try jumping to a tag in the current file, but with a path that contains a -:" symbolic link. When wrong, this will give the ATTENTION message. The next -:" space will then be eaten by hit-return, instead of moving the cursor to 'd'. -:set tags=tags.test -G x:.w! test.out -:!rm -f test25.dir tags.test -:qa! -ENDTEST - -tags line: -SECTION_OFF /test25.dir/test25.in /^#define SECTION_OFF 3$/ - -/*tx.c*/ -#define SECTION_OFF 3 -#define NUM_SECTIONS 3 - -SECTION_OFF diff --git a/src/nvim/testdir/test25.ok b/src/nvim/testdir/test25.ok deleted file mode 100644 index 08fc070b7b..0000000000 --- a/src/nvim/testdir/test25.ok +++ /dev/null @@ -1 +0,0 @@ -#efine SECTION_OFF 3 diff --git a/src/nvim/testdir/test26.in b/src/nvim/testdir/test26.in deleted file mode 100644 index e7cd757661..0000000000 --- a/src/nvim/testdir/test26.in +++ /dev/null @@ -1,44 +0,0 @@ -Test for :execute, :while and :if - -STARTTEST -:so small.vim -mt:let i = 0 -:while i < 12 -: let i = i + 1 -: if has("ebcdic") -: execute "normal o" . i . "\047" -: else -: execute "normal o" . i . "\033" -: endif -: if i % 2 -: normal Ax -: if i == 9 -: break -: endif -: if i == 5 -: continue -: else -: let j = 9 -: while j > 0 -: if has("ebcdic") -: execute "normal" j . "a" . j . "\x27" -: else -: execute "normal" j . "a" . j . "\x1b" -: endif -: let j = j - 1 -: endwhile -: endif -: endif -: if i == 9 -: if has("ebcdic") -: execute "normal Az\047" -: else -: execute "normal Az\033" -: endif -: endif -:endwhile -:unlet i j -:'t,$w! test.out -:qa! -ENDTEST - diff --git a/src/nvim/testdir/test26.ok b/src/nvim/testdir/test26.ok deleted file mode 100644 index bc44761187..0000000000 --- a/src/nvim/testdir/test26.ok +++ /dev/null @@ -1,10 +0,0 @@ - -1x999999999888888887777777666666555554444333221 -2 -3x999999999888888887777777666666555554444333221 -4 -5x -6 -7x999999999888888887777777666666555554444333221 -8 -9x diff --git a/src/nvim/testdir/test33.in b/src/nvim/testdir/test33.in deleted file mode 100644 index 5644760402..0000000000 --- a/src/nvim/testdir/test33.in +++ /dev/null @@ -1,34 +0,0 @@ -Test for 'lisp' -If the lisp feature is not enabled, this will fail! - -STARTTEST -:so small.vim -:set lisp -/^(defun -=G:/^(defun/,$w! test.out -:q! -ENDTEST - -(defun html-file (base) -(format nil "~(~A~).html" base)) - -(defmacro page (name title &rest body) -(let ((ti (gensym))) -`(with-open-file (*standard-output* -(html-file ,name) -:direction :output -:if-exists :supersede) -(let ((,ti ,title)) -(as title ,ti) -(with center -(as h2 (string-upcase ,ti))) -(brs 3) -,@body)))) - -;;; Utilities for generating links - -(defmacro with-link (dest &rest body) -`(progn -(format t "<a href=\"~A\">" (html-file ,dest)) -,@body -(princ "</a>"))) diff --git a/src/nvim/testdir/test33.ok b/src/nvim/testdir/test33.ok deleted file mode 100644 index cd1d87a14b..0000000000 --- a/src/nvim/testdir/test33.ok +++ /dev/null @@ -1,23 +0,0 @@ -(defun html-file (base) - (format nil "~(~A~).html" base)) - -(defmacro page (name title &rest body) - (let ((ti (gensym))) - `(with-open-file (*standard-output* - (html-file ,name) - :direction :output - :if-exists :supersede) - (let ((,ti ,title)) - (as title ,ti) - (with center - (as h2 (string-upcase ,ti))) - (brs 3) - ,@body)))) - -;;; Utilities for generating links - -(defmacro with-link (dest &rest body) - `(progn - (format t "<a href=\"~A\">" (html-file ,dest)) - ,@body - (princ "</a>"))) diff --git a/src/nvim/testdir/test43.in b/src/nvim/testdir/test43.in deleted file mode 100644 index 7c545073da..0000000000 --- a/src/nvim/testdir/test43.in +++ /dev/null @@ -1,34 +0,0 @@ -Tests for regexp with various magic settings. - -STARTTEST -:so small.vim -:set nocompatible viminfo+=nviminfo -/^1 -/a*b\{2}c\+/e -x/\Md\*e\{2}f\+/e -x:set nomagic -/g\*h\{2}i\+/e -x/\mj*k\{2}l\+/e -x/\vm*n{2}o+/e -x/\V^aa$ -x:set magic -/\v(a)(b)\2\1\1/e -x/\V[ab]\(\[xy]\)\1 -x:$ -:set undolevels=100 -dv?bar? -Yup:" -:?^1?,$w! test.out -:qa! -ENDTEST - -1 a aa abb abbccc -2 d dd dee deefff -3 g gg ghh ghhiii -4 j jj jkk jkklll -5 m mm mnn mnnooo -6 x ^aa$ x -7 (a)(b) abbaa -8 axx [ab]xx -9 foobar - diff --git a/src/nvim/testdir/test43.ok b/src/nvim/testdir/test43.ok deleted file mode 100644 index 0b37a6a61e..0000000000 --- a/src/nvim/testdir/test43.ok +++ /dev/null @@ -1,11 +0,0 @@ -1 a aa abb abbcc -2 d dd dee deeff -3 g gg ghh ghhii -4 j jj jkk jkkll -5 m mm mnn mnnoo -6 x aa$ x -7 (a)(b) abba -8 axx ab]xx -9 foobar -9 foo - diff --git a/src/nvim/testdir/test5.in b/src/nvim/testdir/test5.in deleted file mode 100644 index e19e20d59b..0000000000 --- a/src/nvim/testdir/test5.in +++ /dev/null @@ -1,29 +0,0 @@ -Test for autocommand that deletes the current buffer on BufLeave event. -Also test deleting the last buffer, should give a new, empty buffer. - -STARTTEST -:so small.vim -:au BufLeave Xxx bwipe -/start of -:.,/end of/w! Xxx " write test file Xxx -:sp Xxx " split to Xxx -:bwipe " delete buffer Xxx, now we're back here -G?this is a -othis is some more text -: " Append some text to this file -:?start?,$w! test.out " Write current file contents -:bwipe test.out " delete alternate buffer -:au bufleave test5.in bwipe -:bwipe! " delete current buffer, get an empty one -ithis is another test line:w >>test.out -: " append an extra line to the output file -:qa! -ENDTEST - -start of test file Xxx -vim: set noai : - this is a test - this is a test - this is a test - this is a test -end of test file Xxx diff --git a/src/nvim/testdir/test5.ok b/src/nvim/testdir/test5.ok deleted file mode 100644 index 6743060794..0000000000 --- a/src/nvim/testdir/test5.ok +++ /dev/null @@ -1,9 +0,0 @@ -start of test file Xxx -vim: set noai : - this is a test - this is a test - this is a test - this is a test -this is some more text -end of test file Xxx -this is another test line diff --git a/src/nvim/testdir/test51.in b/src/nvim/testdir/test51.in deleted file mode 100644 index b4f45d1f75..0000000000 --- a/src/nvim/testdir/test51.in +++ /dev/null @@ -1,36 +0,0 @@ -Tests for ":highlight". vim: set ft=vim : - -STARTTEST -:so small.vim -:" basic test if ":highlight" doesn't crash -:highlight -:hi Search -:" test setting colors. -:" test clearing one color and all doesn't generate error or warning -:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#00ff00 guibg=Cyan -:hi Group2 term= cterm= -:hi Group3 term=underline cterm=bold -:redir! >test.out -:hi NewGroup -:hi Group2 -:hi Group3 -:hi clear NewGroup -:hi NewGroup -:hi Group2 -:hi Group2 NONE -:hi Group2 -:hi clear -:hi Group3 -:hi Crash term='asdf -:redir END -:" filter ctermfg and ctermbg, the numbers depend on the terminal -:e test.out -:%s/ctermfg=\d*/ctermfg=2/ -:%s/ctermbg=\d*/ctermbg=3/ -:" filter out possibly translated error message -:%s/E475: [^:]*:/E475:/ -:" fix the fileformat -:set ff& -:wq! -ENDTEST - diff --git a/src/nvim/testdir/test51.ok b/src/nvim/testdir/test51.ok deleted file mode 100644 index be9ff7862c..0000000000 --- a/src/nvim/testdir/test51.ok +++ /dev/null @@ -1,20 +0,0 @@ - - -NewGroup xxx term=bold cterm=italic ctermfg=2 ctermbg=3 - -Group2 xxx cleared - -Group3 xxx term=underline cterm=bold - - -NewGroup xxx cleared - -Group2 xxx cleared - - -Group2 xxx cleared - - -Group3 xxx cleared - -E475: term='asdf diff --git a/src/nvim/testdir/test66.in b/src/nvim/testdir/test66.in deleted file mode 100644 index f1fdce3792..0000000000 --- a/src/nvim/testdir/test66.in +++ /dev/null @@ -1,33 +0,0 @@ - -Test for visual block shift and tab characters. - -STARTTEST -:so small.vim -/^one -fe4jRugvr1:'<,'>w! test.out -/^abcdefgh -4jI j<<11|D -7|a -7|a -7|a 4k13|4j< -:$-5,$w >> test.out -:$-4,$s/\s\+//g -4kI j<< -7|a -7|a -7|a 4k13|4j3< -:$-4,$w >> test.out -:qa! -ENDTEST - -one two three -one two three -one two three -one two three -one two three - -abcdefghijklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz -abcdefghijklmnopqrstuvwxyz diff --git a/src/nvim/testdir/test66.ok b/src/nvim/testdir/test66.ok deleted file mode 100644 index 4c3ab0fb56..0000000000 --- a/src/nvim/testdir/test66.ok +++ /dev/null @@ -1,16 +0,0 @@ -on1 two three -on1 two three -on1 two three -on1 two three -on1 two three - - abcdefghijklmnopqrstuvwxyz -abcdefghij - abc defghijklmnopqrstuvwxyz - abc defghijklmnopqrstuvwxyz - abc defghijklmnopqrstuvwxyz - abcdefghijklmnopqrstuvwxyz -abcdefghij - abc defghijklmnopqrstuvwxyz - abc defghijklmnopqrstuvwxyz - abc defghijklmnopqrstuvwxyz diff --git a/src/nvim/testdir/test67.in b/src/nvim/testdir/test67.in deleted file mode 100644 index 08b4e3701f..0000000000 --- a/src/nvim/testdir/test67.in +++ /dev/null @@ -1,33 +0,0 @@ -Test that groups and patterns are tested correctly when calling exists() for -autocommands. - -STARTTEST -:so small.vim -:let results=[] -:augroup auexists -:augroup END -:call add(results, "##BufEnter: " . exists("##BufEnter")) -:call add(results, "#BufEnter: " . exists("#BufEnter")) -:au BufEnter * let g:entered=1 -:call add(results, "#BufEnter: " . exists("#BufEnter")) -:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter")) -:augroup auexists -:au BufEnter * let g:entered=1 -:augroup END -:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter")) -:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test")) -:au BufEnter *.test let g:entered=1 -:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test")) -:edit testfile.test -:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>")) -:au BufEnter <buffer> let g:entered=1 -:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>")) -:edit testfile2.test -:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>")) -:e test.out -:call append(0, results) -:$d -:w -:qa! -ENDTEST - diff --git a/src/nvim/testdir/test67.ok b/src/nvim/testdir/test67.ok deleted file mode 100644 index 51188e5afd..0000000000 --- a/src/nvim/testdir/test67.ok +++ /dev/null @@ -1,10 +0,0 @@ -##BufEnter: 1 -#BufEnter: 0 -#BufEnter: 1 -#auexists#BufEnter: 0 -#auexists#BufEnter: 1 -#BufEnter#*.test: 0 -#BufEnter#*.test: 1 -#BufEnter#<buffer>: 0 -#BufEnter#<buffer>: 1 -#BufEnter#<buffer>: 0 diff --git a/src/nvim/testdir/test75.in b/src/nvim/testdir/test75.in deleted file mode 100644 index 8fabccdf52..0000000000 --- a/src/nvim/testdir/test75.in +++ /dev/null @@ -1,41 +0,0 @@ -Tests for maparg(). -Also test utf8 map with a 0x80 byte. - -STARTTEST -:so small.vim -:so mbyte.vim -:set cpo-=< -:set encoding=utf8 -:" Test maparg() with a string result -:map foo<C-V> is<F4>foo -:vnoremap <script> <buffer> <expr> <silent> bar isbar -:call append('$', maparg('foo<C-V>')) -:call append('$', string(maparg('foo<C-V>', '', 0, 1))) -:call append('$', string(maparg('bar', '', 0, 1))) -:map <buffer> <nowait> foo bar -:call append('$', string(maparg('foo', '', 0, 1))) -:" -:map abc x<char-114>x -:call append('$', maparg('abc')) -:map abc y<S-char-114>y -:call append('$', maparg('abc')) -:" -Go:" -:" Outside of the range, minimum -:inoremap <Char-0x1040> a -:execute "normal a\u1040\<Esc>" -:" Inside of the range, minimum -:inoremap <Char-0x103f> b -:execute "normal a\u103f\<Esc>" -:" Inside of the range, maximum -:inoremap <Char-0xf03f> c -:execute "normal a\uf03f\<Esc>" -:" Outside of the range, maximum -:inoremap <Char-0xf040> d -:execute "normal a\uf040\<Esc>" -:" -:/^eof/+1,$w! test.out -:qa! -ENDTEST - -eof diff --git a/src/nvim/testdir/test75.ok b/src/nvim/testdir/test75.ok deleted file mode 100644 index a2c5c5ac3d..0000000000 --- a/src/nvim/testdir/test75.ok +++ /dev/null @@ -1,7 +0,0 @@ -is<F4>foo -{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0} -{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1} -{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1} -xrx -yRy -abcd diff --git a/src/nvim/testdir/sautest/autoload/Test104.vim b/test/functional/fixtures/autoload/Test104.vim index d1e0e17a3b..d1e0e17a3b 100644 --- a/src/nvim/testdir/sautest/autoload/Test104.vim +++ b/test/functional/fixtures/autoload/Test104.vim diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua index 6c3f5190c9..2c08fb7818 100644 --- a/test/functional/helpers.lua +++ b/test/functional/helpers.lua @@ -182,6 +182,16 @@ local function execute(...) end end +local function source(code) + local tmpname = os.tmpname() + local tmpfile = io.open(tmpname, "w") + tmpfile:write(code) + tmpfile:flush() + tmpfile:close() + nvim_command('source '..tmpname) + os.remove(tmpname) +end + local function eq(expected, actual) return assert.are.same(expected, actual) end @@ -247,6 +257,7 @@ clear() return { clear = clear, dedent = dedent, + source = source, rawfeed = rawfeed, insert = insert, feed = feed, diff --git a/test/functional/legacy/005_bufleave_delete_buffer.lua b/test/functional/legacy/005_bufleave_delete_buffer.lua new file mode 100644 index 0000000000..e8459ad4a7 --- /dev/null +++ b/test/functional/legacy/005_bufleave_delete_buffer.lua @@ -0,0 +1,71 @@ +-- Test for autocommand that deletes the current buffer on BufLeave event. +-- Also test deleting the last buffer, should give a new, empty buffer. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('test5', function() + setup(clear) + + it('is working', function() + insert([[ + start of test file Xxx + vim: set noai : + this is a test + this is a test + this is a test + this is a test + end of test file Xxx]]) + + execute('w! Xxx0') + execute('au BufLeave Xxx bwipe') + execute('/start of') + + -- Write test file Xxx. + execute('.,/end of/w! Xxx') + + -- Split to Xxx. + execute('sp Xxx') + + -- Delete buffer Xxx, now we're back here. + execute('bwipe') + feed('G?this is a<cr>') + feed('othis is some more text<esc>') + + -- Append some text to this file. + + -- Write current file contents. + execute('?start?,$yank A') + + -- Delete alternate buffer. + execute('bwipe test.out') + execute('au bufleave test5.in bwipe') + + -- Delete current buffer, get an empty one. + execute('bwipe!') + feed('ithis is another test line<esc>:yank A<cr>') + + -- Output results + execute('%d') + execute('0put a') + execute('1d | $d') + + -- Assert buffer contents. + expect([[ + start of test file Xxx + vim: set noai : + this is a test + this is a test + this is a test + this is a test + this is some more text + end of test file Xxx + this is another test line]]) + end) + + teardown(function() + os.remove('Xxx') + os.remove('Xxx0') + end) +end) diff --git a/test/functional/legacy/025_jump_tag_hidden_spec.lua b/test/functional/legacy/025_jump_tag_hidden_spec.lua new file mode 100644 index 0000000000..bd434c013c --- /dev/null +++ b/test/functional/legacy/025_jump_tag_hidden_spec.lua @@ -0,0 +1,50 @@ +-- Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag. +-- This only works for Unix, because of the symbolic link. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('jump to a tag with hidden set', function() + setup(clear) + + it('is working', function() + insert([[ + tags line: + SECTION_OFF /test25.dir/Xxx /^#define SECTION_OFF 3$/ + + /*tx.c*/ + #define SECTION_OFF 3 + #define NUM_SECTIONS 3 + + SECTION_OFF]]) + + execute('w! Xxx') + execute('set hidden') + + -- Create a link from test25.dir to the current directory. + execute('!rm -f test25.dir') + execute('!ln -s . test25.dir') + + -- Create tags.text, with the current directory name inserted. + execute('/tags line') + execute('r !pwd') + feed('d$/test<cr>') + feed('hP:.w! tags.test<cr>') + + -- Try jumping to a tag in the current file, but with a path that contains a + -- symbolic link. When wrong, this will give the ATTENTION message. The next + -- space will then be eaten by hit-return, instead of moving the cursor to 'd'. + execute('set tags=tags.test') + feed('G<C-]> x:yank a<cr>') + execute('!rm -f Xxx test25.dir tags.test') + + -- Put @a and remove empty line + execute('%d') + execute('0put a') + execute('$d') + + -- Assert buffer contents. + expect("#efine SECTION_OFF 3") + end) +end) diff --git a/test/functional/legacy/026_execute_while_if_spec.lua b/test/functional/legacy/026_execute_while_if_spec.lua new file mode 100644 index 0000000000..9acbf76673 --- /dev/null +++ b/test/functional/legacy/026_execute_while_if_spec.lua @@ -0,0 +1,66 @@ +-- Test for :execute, :while and :if + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect +local source = helpers.source + +describe(':execute, :while and :if', function() + setup(clear) + + it('is working', function() + source([[ + let i = 0 + while i < 12 + let i = i + 1 + if has("ebcdic") + execute "normal o" . i . "\047" + else + execute "normal o" . i . "\033" + endif + if i % 2 + normal Ax + if i == 9 + break + endif + if i == 5 + continue + else + let j = 9 + while j > 0 + if has("ebcdic") + execute "normal" j . "a" . j . "\x27" + else + execute "normal" j . "a" . j . "\x1b" + endif + let j = j - 1 + endwhile + endif + endif + if i == 9 + if has("ebcdic") + execute "normal Az\047" + else + execute "normal Az\033" + endif + endif + endwhile + unlet i j + ]]) + + -- Remove empty line + execute('1d') + + -- Assert buffer contents. + expect([[ + 1x999999999888888887777777666666555554444333221 + 2 + 3x999999999888888887777777666666555554444333221 + 4 + 5x + 6 + 7x999999999888888887777777666666555554444333221 + 8 + 9x]]) + end) +end) diff --git a/test/functional/legacy/033_lisp_indent_spec.lua b/test/functional/legacy/033_lisp_indent_spec.lua new file mode 100644 index 0000000000..3ee248815d --- /dev/null +++ b/test/functional/legacy/033_lisp_indent_spec.lua @@ -0,0 +1,73 @@ +-- vim: set foldmethod=marker foldmarker=[[,]] : +-- Test for 'lisp' +-- If the lisp feature is not enabled, this will fail! + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('lisp indent', function() + setup(clear) + + it('is working', function() + insert([[ + (defun html-file (base) + (format nil "~(~A~).html" base)) + + (defmacro page (name title &rest body) + (let ((ti (gensym))) + `(with-open-file (*standard-output* + (html-file ,name) + :direction :output + :if-exists :supersede) + (let ((,ti ,title)) + (as title ,ti) + (with center + (as h2 (string-upcase ,ti))) + (brs 3) + ,@body)))) + + ;;; Utilities for generating links + + (defmacro with-link (dest &rest body) + `(progn + (format t "<a href=\"~A\">" (html-file ,dest)) + ,@body + (princ "</a>")))]]) + + execute('set lisp expandtab') + execute('/^(defun') + feed('=G:/^(defun/,$yank A<cr>') + + -- Put @a and clean empty line + execute('%d') + execute('0put a') + execute('$d') + + -- Assert buffer contents. + expect([[ + (defun html-file (base) + (format nil "~(~A~).html" base)) + + (defmacro page (name title &rest body) + (let ((ti (gensym))) + `(with-open-file (*standard-output* + (html-file ,name) + :direction :output + :if-exists :supersede) + (let ((,ti ,title)) + (as title ,ti) + (with center + (as h2 (string-upcase ,ti))) + (brs 3) + ,@body)))) + + ;;; Utilities for generating links + + (defmacro with-link (dest &rest body) + `(progn + (format t "<a href=\"~A\">" (html-file ,dest)) + ,@body + (princ "</a>")))]]) + end) +end) diff --git a/test/functional/legacy/043_magic_settings_spec.lua b/test/functional/legacy/043_magic_settings_spec.lua new file mode 100644 index 0000000000..ccef298cdd --- /dev/null +++ b/test/functional/legacy/043_magic_settings_spec.lua @@ -0,0 +1,61 @@ +-- vim: set foldmethod=marker foldmarker=[[,]] : +-- Tests for regexp with various magic settings. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('regexp with magic settings', function() + setup(clear) + + it('is working', function() + insert([[ + 1 a aa abb abbccc + 2 d dd dee deefff + 3 g gg ghh ghhiii + 4 j jj jkk jkklll + 5 m mm mnn mnnooo + 6 x ^aa$ x + 7 (a)(b) abbaa + 8 axx [ab]xx + 9 foobar + ]]) + + execute('set nocompatible viminfo+=nviminfo') + execute('/^1') + execute([[/a*b\{2}c\+/e]]) + feed([[x/\Md\*e\{2}f\+/e<cr>]]) + feed('x:set nomagic<cr>') + execute([[/g\*h\{2}i\+/e]]) + feed([[x/\mj*k\{2}l\+/e<cr>]]) + feed([[x/\vm*n{2}o+/e<cr>]]) + feed([[x/\V^aa$<cr>]]) + feed('x:set magic<cr>') + execute([[/\v(a)(b)\2\1\1/e]]) + feed([[x/\V[ab]\(\[xy]\)\1<cr>]]) + feed('x:$<cr>') + execute('set undolevels=100') + feed('dv?bar?<cr>') + feed('Yup:<cr>') + execute('?^1?,$yank A') + + -- Put @a and clean empty line + execute('%d') + execute('0put a') + execute('$d') + + -- Assert buffer contents. + expect([[ + 1 a aa abb abbcc + 2 d dd dee deeff + 3 g gg ghh ghhii + 4 j jj jkk jkkll + 5 m mm mnn mnnoo + 6 x aa$ x + 7 (a)(b) abba + 8 axx ab]xx + 9 foobar + 9 foo + ]]) + end) +end) diff --git a/test/functional/legacy/051_highlight_spec.lua b/test/functional/legacy/051_highlight_spec.lua new file mode 100644 index 0000000000..f35b70f93f --- /dev/null +++ b/test/functional/legacy/051_highlight_spec.lua @@ -0,0 +1,70 @@ +-- vim: set foldmethod=marker foldmarker=[[,]] : +-- Tests for ":highlight". + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe(':highlight', function() + setup(clear) + + it('is working', function() + -- Basic test if ":highlight" doesn't crash + execute('highlight') + execute('hi Search') + + -- Test setting colors. + -- Test clearing one color and all doesn't generate error or warning + execute('hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#00ff00 guibg=Cyan') + execute('hi Group2 term= cterm=') + execute('hi Group3 term=underline cterm=bold') + execute('redir! @a') + execute('hi NewGroup') + execute('hi Group2') + execute('hi Group3') + execute('hi clear NewGroup') + execute('hi NewGroup') + execute('hi Group2') + execute('hi Group2 NONE') + execute('hi Group2') + execute('hi clear') + execute('hi Group3') + execute([[hi Crash term='asdf]]) + execute('redir END') + + -- Filter ctermfg and ctermbg, the numbers depend on the terminal + execute('0put a') + execute([[%s/ctermfg=\d*/ctermfg=2/]]) + execute([[%s/ctermbg=\d*/ctermbg=3/]]) + + -- Filter out possibly translated error message + execute('%s/E475: [^:]*:/E475:/') + + -- Fix the fileformat + execute('set ff&') + execute('$d') + + -- Assert buffer contents. + expect([[ + + + NewGroup xxx term=bold cterm=italic ctermfg=2 ctermbg=3 + + Group2 xxx cleared + + Group3 xxx term=underline cterm=bold + + + NewGroup xxx cleared + + Group2 xxx cleared + + + Group2 xxx cleared + + + Group3 xxx cleared + + E475: term='asdf]]) + end) +end) diff --git a/test/functional/legacy/066_visual_block_tab_spec.lua b/test/functional/legacy/066_visual_block_tab_spec.lua new file mode 100644 index 0000000000..cd283e6746 --- /dev/null +++ b/test/functional/legacy/066_visual_block_tab_spec.lua @@ -0,0 +1,64 @@ +-- vim: set foldmethod=marker foldmarker=[[,]] : +-- Test for visual block shift and tab characters. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('visual block shift and tab characters', function() + setup(clear) + + it('is working', function() + insert([[ + one two three + one two three + one two three + one two three + one two three + + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz]]) + + feed('gg') + feed([[fe<C-v>4jR<esc>ugvr1:'<,'>yank A<cr>]]) + execute('/^abcdefgh') + feed('<C-v>4jI <esc>j<<11|D') + feed('j7|a <esc>') + feed('j7|a <esc>') + feed('j7|a <esc>4k13|<C-v>4j<') + execute('$-5,$yank A') + execute([[$-4,$s/\s\+//g]]) + feed('<C-v>4kI <esc>j<<') + feed('j7|a <esc>') + feed('j7|a <esc>') + feed('j7|a <esc>4k13|<C-v>4j3<') + execute('$-4,$yank A') + + -- Put @a and clean empty lines + execute('%d') + execute('0put a') + execute('$d') + + -- Assert buffer contents. + expect([[ + on1 two three + on1 two three + on1 two three + on1 two three + on1 two three + + abcdefghijklmnopqrstuvwxyz + abcdefghij + abc defghijklmnopqrstuvwxyz + abc defghijklmnopqrstuvwxyz + abc defghijklmnopqrstuvwxyz + abcdefghijklmnopqrstuvwxyz + abcdefghij + abc defghijklmnopqrstuvwxyz + abc defghijklmnopqrstuvwxyz + abc defghijklmnopqrstuvwxyz]]) + end) +end) diff --git a/test/functional/legacy/067_augroup_exists_spec.lua b/test/functional/legacy/067_augroup_exists_spec.lua new file mode 100644 index 0000000000..6d89ad6d55 --- /dev/null +++ b/test/functional/legacy/067_augroup_exists_spec.lua @@ -0,0 +1,46 @@ +-- Test that groups and patterns are tested correctly when calling exists() for +-- autocommands. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('augroup when calling exists()', function() + setup(clear) + + it('is working', function() + execute('let results=[]') + execute('call add(results, "##BufEnter: " . exists("##BufEnter"))') + execute('call add(results, "#BufEnter: " . exists("#BufEnter"))') + execute('au BufEnter * let g:entered=1') + execute('call add(results, "#BufEnter: " . exists("#BufEnter"))') + execute('call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))') + execute('augroup auexists', 'au BufEnter * let g:entered=1', 'augroup END') + execute('call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))') + execute('call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))') + execute('au BufEnter *.test let g:entered=1') + execute('call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))') + execute('edit testfile.test') + execute('call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))') + execute('au BufEnter <buffer> let g:entered=1') + execute('call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))') + execute('edit testfile2.test') + execute('call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))') + execute('bf') + execute('call append(0, results)') + execute('$d') + + -- Assert buffer contents. + expect([[ + ##BufEnter: 1 + #BufEnter: 0 + #BufEnter: 1 + #auexists#BufEnter: 0 + #auexists#BufEnter: 1 + #BufEnter#*.test: 0 + #BufEnter#*.test: 1 + #BufEnter#<buffer>: 0 + #BufEnter#<buffer>: 1 + #BufEnter#<buffer>: 0]]) + end) +end) diff --git a/test/functional/legacy/075_maparg_spec.lua b/test/functional/legacy/075_maparg_spec.lua new file mode 100644 index 0000000000..dac8940314 --- /dev/null +++ b/test/functional/legacy/075_maparg_spec.lua @@ -0,0 +1,58 @@ +-- Tests for maparg(). +-- Also test utf8 map with a 0x80 byte. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('maparg()', function() + setup(clear) + + it('is working', function() + execute('set cpo-=<') + execute('set encoding=utf8') + + -- Test maparg() with a string result + execute('map foo<C-V> is<F4>foo') + execute('vnoremap <script> <buffer> <expr> <silent> bar isbar') + execute([[call append('$', maparg('foo<C-V>'))]]) + execute([[call append('$', string(maparg('foo<C-V>', '', 0, 1)))]]) + execute([[call append('$', string(maparg('bar', '', 0, 1)))]]) + execute('map <buffer> <nowait> foo bar') + execute([[call append('$', string(maparg('foo', '', 0, 1)))]]) + execute('map abc x<char-114>x') + execute([[call append('$', maparg('abc'))]]) + execute('map abc y<S-char-114>y') + execute([[call append('$', maparg('abc'))]]) + feed('Go<esc>:<cr>') + + -- Outside of the range, minimum + execute('inoremap <Char-0x1040> a') + execute([[execute "normal a\u1040\<Esc>"]]) + + -- Inside of the range, minimum + execute('inoremap <Char-0x103f> b') + execute([[execute "normal a\u103f\<Esc>"]]) + + -- Inside of the range, maximum + execute('inoremap <Char-0xf03f> c') + execute([[execute "normal a\uf03f\<Esc>"]]) + + -- Outside of the range, maximum + execute('inoremap <Char-0xf040> d') + execute([[execute "normal a\uf040\<Esc>"]]) + + -- Remove empty line + execute('1d') + + -- Assert buffer contents. + expect([[ + is<F4>foo + {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0} + {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1} + {'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1} + xrx + yRy + abcd]]) + end) +end) diff --git a/test/functional/legacy/101_hlsearch_spec.lua b/test/functional/legacy/101_hlsearch_spec.lua new file mode 100644 index 0000000000..4a3abb19ce --- /dev/null +++ b/test/functional/legacy/101_hlsearch_spec.lua @@ -0,0 +1,62 @@ +-- Test for v:hlsearch + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('v:hlsearch', function() + setup(clear) + + it('is working', function() + -- Last abc: Q + execute('new') + execute([[call setline(1, repeat(['aaa'], 10))]]) + execute('set hlsearch nolazyredraw') + execute('let r=[]') + execute('command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])') + execute('/aaa') + execute('AddR') + execute('nohlsearch') + execute('AddR') + execute('let v:hlsearch=1') + execute('AddR') + execute('let v:hlsearch=0') + execute('AddR') + execute('set hlsearch') + execute('AddR') + execute('let v:hlsearch=0') + execute('AddR') + feed('n:AddR<cr>') + execute('let v:hlsearch=0') + execute('AddR') + execute('/') + execute('AddR') + execute('let r1=r[0][0]') + + -- I guess it is not guaranteed that screenattr outputs always the same character + execute([[call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')]]) + execute('try') + execute(' let v:hlsearch=[]') + execute('catch') + execute([[ call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))]]) + execute('endtry') + execute('bwipeout!') + execute('$put=r') + execute('call garbagecollect(1)') + execute('call getchar()') + execute('1d') + + -- Assert buffer contents. + expect([[ + 1:highlighted + 0:not highlighted + 1:highlighted + 0:not highlighted + 1:highlighted + 0:not highlighted + 1:highlighted + 0:not highlighted + 1:highlighted + Vim(let):E706:]]) + end) +end) diff --git a/test/functional/legacy/104_let_assignment.lua b/test/functional/legacy/104_let_assignment.lua new file mode 100644 index 0000000000..a2431da835 --- /dev/null +++ b/test/functional/legacy/104_let_assignment.lua @@ -0,0 +1,54 @@ +-- Tests for :let. + +local helpers = require('test.functional.helpers') +local clear, source = helpers.clear, helpers.source +local execute, expect = helpers.execute, helpers.expect + +describe(':let', function() + setup(clear) + + it('is working', function() + execute('set runtimepath+=test/functional/fixtures') + + -- Test to not autoload when assigning. It causes internal error. + source([[ + try + let Test104#numvar = function('tr') + $put ='OK: ' . string(Test104#numvar) + catch + $put ='FAIL: ' . v:exception + endtry + let a = 1 + let b = 2 + for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0 == 1 ? "a" : "b"}'] + try + redir => messages + execute 'let' letargs + redir END + $put ='OK:' + $put =split(substitute(messages, '\n', '\0 ', 'g'), '\n') + catch + $put ='FAIL: ' . v:exception + redir END + endtry + endfor]]) + + -- Remove empty line + execute('1d') + + -- Assert buffer contents. + expect([[ + OK: function('tr') + OK: + a #1 + b #2 + OK: + b #2 + OK: + b #2 + a #1 + OK: + a #1 + b #2]]) + end) +end) diff --git a/test/functional/legacy/105_filename_modifiers_spec.lua b/test/functional/legacy/105_filename_modifiers_spec.lua new file mode 100644 index 0000000000..32fa6ac7eb --- /dev/null +++ b/test/functional/legacy/105_filename_modifiers_spec.lua @@ -0,0 +1,79 @@ +-- Test filename modifiers. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect = helpers.execute, helpers.expect + +describe('filename modifiers', function() + setup(clear) + + it('is working', function() + execute('cd /tmp') + execute([=[set shell=sh]=]) + execute([=[set shellslash]=]) + execute([=[let tab="\t"]=]) + execute([=[command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr)))]=]) + execute([=[let $HOME=fnamemodify('.', ':p:h:h:h')]=]) + execute([=[Put fnamemodify('.', ':p' )[-1:]]=]) + execute([=[Put fnamemodify('.', ':p:h' )[-1:]]=]) + execute([=[Put fnamemodify('test.out', ':p' )[-1:]]=]) + execute([=[Put fnamemodify('test.out', ':.' )]=]) + execute([=[Put fnamemodify('../testdir/a', ':.' )]=]) + execute([=[Put fnamemodify('test.out', ':~' )]=]) + execute([=[Put fnamemodify('../testdir/a', ':~' )]=]) + execute([=[Put fnamemodify('../testdir/a', ':t' )]=]) + execute([=[Put fnamemodify('.', ':p:t' )]=]) + execute([=[Put fnamemodify('test.out', ':p:t' )]=]) + execute([=[Put fnamemodify('test.out', ':p:e' )]=]) + execute([=[Put fnamemodify('test.out', ':p:t:e' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':r' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':r:r' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' )]=]) + execute([=[Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(nvim/testdir/.*\)', '\1', '')]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':e' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':e:e' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' )]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e')]=]) + execute([=[Put fnamemodify('abc.fb2.tar.gz', ':e:e:r' )]=]) + execute([=[Put fnamemodify('abc def', ':S' )]=]) + execute([=[Put fnamemodify('abc" "def', ':S' )]=]) + execute([=[Put fnamemodify('abc"%"def', ':S' )]=]) + execute([=[Put fnamemodify('abc'' ''def', ':S' )]=]) + execute([=[Put fnamemodify('abc''%''def', ':S' )]=]) + execute([=[Put fnamemodify("abc\ndef", ':S' )]=]) + execute([=[set shell=tcsh]=]) + execute([=[Put fnamemodify("abc\ndef", ':S' )]=]) + execute([=[1 delete _]=]) + + -- Assert buffer contents. + expect([=[ + fnamemodify('.', ':p' )[-1:] '/' + fnamemodify('.', ':p:h' )[-1:] 'p' + fnamemodify('test.out', ':p' )[-1:] 't' + fnamemodify('test.out', ':.' ) 'test.out' + fnamemodify('../testdir/a', ':.' ) '../testdir/a' + fnamemodify('test.out', ':~' ) 'test.out' + fnamemodify('../testdir/a', ':~' ) '../testdir/a' + fnamemodify('../testdir/a', ':t' ) 'a' + fnamemodify('.', ':p:t' ) '' + fnamemodify('test.out', ':p:t' ) 'test.out' + fnamemodify('test.out', ':p:e' ) 'out' + fnamemodify('test.out', ':p:t:e' ) 'out' + fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' + fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' + substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(nvim/testdir/.*\)', '\1', '') '/tmp/abc.fb2' + fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' + fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' + fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' + fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') 'fb2.tar.gz' + fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) 'tar' + fnamemodify('abc def', ':S' ) '''abc def''' + fnamemodify('abc" "def', ':S' ) '''abc" "def''' + fnamemodify('abc"%"def', ':S' ) '''abc"%"def''' + fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def''' + fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def''' + fnamemodify("abc\ndef", ':S' ) '''abc^@def''' + fnamemodify("abc\ndef", ':S' ) '''abc\^@def''']=]) + end) +end) |