aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/testdir/test101.in45
-rw-r--r--src/nvim/testdir/test101.ok11
-rw-r--r--src/nvim/testdir/test104.in30
-rw-r--r--src/nvim/testdir/test104.ok13
-rw-r--r--src/nvim/testdir/test105.in45
-rw-r--r--src/nvim/testdir/test105.ok29
-rw-r--r--src/nvim/testdir/test21.in19
-rw-r--r--src/nvim/testdir/test21.ok2
-rw-r--r--src/nvim/testdir/test25.in31
-rw-r--r--src/nvim/testdir/test25.ok1
-rw-r--r--src/nvim/testdir/test26.in44
-rw-r--r--src/nvim/testdir/test26.ok10
-rw-r--r--src/nvim/testdir/test33.in34
-rw-r--r--src/nvim/testdir/test33.ok23
-rw-r--r--src/nvim/testdir/test43.in34
-rw-r--r--src/nvim/testdir/test43.ok11
-rw-r--r--src/nvim/testdir/test5.in29
-rw-r--r--src/nvim/testdir/test5.ok9
-rw-r--r--src/nvim/testdir/test51.in36
-rw-r--r--src/nvim/testdir/test51.ok20
-rw-r--r--src/nvim/testdir/test66.in33
-rw-r--r--src/nvim/testdir/test66.ok16
-rw-r--r--src/nvim/testdir/test67.in33
-rw-r--r--src/nvim/testdir/test67.ok10
-rw-r--r--src/nvim/testdir/test75.in41
-rw-r--r--src/nvim/testdir/test75.ok7
-rw-r--r--test/functional/fixtures/autoload/Test104.vim (renamed from src/nvim/testdir/sautest/autoload/Test104.vim)0
-rw-r--r--test/functional/helpers.lua11
-rw-r--r--test/functional/legacy/005_bufleave_delete_buffer.lua71
-rw-r--r--test/functional/legacy/025_jump_tag_hidden_spec.lua50
-rw-r--r--test/functional/legacy/026_execute_while_if_spec.lua66
-rw-r--r--test/functional/legacy/033_lisp_indent_spec.lua73
-rw-r--r--test/functional/legacy/043_magic_settings_spec.lua61
-rw-r--r--test/functional/legacy/051_highlight_spec.lua70
-rw-r--r--test/functional/legacy/066_visual_block_tab_spec.lua64
-rw-r--r--test/functional/legacy/067_augroup_exists_spec.lua46
-rw-r--r--test/functional/legacy/075_maparg_spec.lua58
-rw-r--r--test/functional/legacy/101_hlsearch_spec.lua62
-rw-r--r--test/functional/legacy/104_let_assignment.lua54
-rw-r--r--test/functional/legacy/105_filename_modifiers_spec.lua79
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)