mirror of
https://github.com/neovim/neovim.git
synced 2024-12-29 14:41:06 -07:00
Merge PR #1420 'Migrate legacy tests (2nd batch)'
This commit is contained in:
commit
bc1b9c1d90
@ -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:
|
@ -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:
|
@ -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:
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -1,2 +0,0 @@
|
||||
start OK if found this line
|
||||
start OK if found this line
|
@ -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
|
@ -1 +0,0 @@
|
||||
#efine SECTION_OFF 3
|
@ -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
|
||||
|
@ -1,10 +0,0 @@
|
||||
|
||||
1x999999999888888887777777666666555554444333221
|
||||
2
|
||||
3x999999999888888887777777666666555554444333221
|
||||
4
|
||||
5x
|
||||
6
|
||||
7x999999999888888887777777666666555554444333221
|
||||
8
|
||||
9x
|
@ -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>")))
|
@ -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>")))
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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,
|
||||
|
71
test/functional/legacy/005_bufleave_delete_buffer.lua
Normal file
71
test/functional/legacy/005_bufleave_delete_buffer.lua
Normal file
@ -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)
|
50
test/functional/legacy/025_jump_tag_hidden_spec.lua
Normal file
50
test/functional/legacy/025_jump_tag_hidden_spec.lua
Normal file
@ -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)
|
66
test/functional/legacy/026_execute_while_if_spec.lua
Normal file
66
test/functional/legacy/026_execute_while_if_spec.lua
Normal file
@ -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)
|
73
test/functional/legacy/033_lisp_indent_spec.lua
Normal file
73
test/functional/legacy/033_lisp_indent_spec.lua
Normal file
@ -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)
|
61
test/functional/legacy/043_magic_settings_spec.lua
Normal file
61
test/functional/legacy/043_magic_settings_spec.lua
Normal file
@ -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)
|
70
test/functional/legacy/051_highlight_spec.lua
Normal file
70
test/functional/legacy/051_highlight_spec.lua
Normal file
@ -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)
|
64
test/functional/legacy/066_visual_block_tab_spec.lua
Normal file
64
test/functional/legacy/066_visual_block_tab_spec.lua
Normal file
@ -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)
|
46
test/functional/legacy/067_augroup_exists_spec.lua
Normal file
46
test/functional/legacy/067_augroup_exists_spec.lua
Normal file
@ -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)
|
58
test/functional/legacy/075_maparg_spec.lua
Normal file
58
test/functional/legacy/075_maparg_spec.lua
Normal file
@ -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)
|
62
test/functional/legacy/101_hlsearch_spec.lua
Normal file
62
test/functional/legacy/101_hlsearch_spec.lua
Normal file
@ -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)
|
54
test/functional/legacy/104_let_assignment.lua
Normal file
54
test/functional/legacy/104_let_assignment.lua
Normal file
@ -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)
|
79
test/functional/legacy/105_filename_modifiers_spec.lua
Normal file
79
test/functional/legacy/105_filename_modifiers_spec.lua
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user