test/old: restore test_backspace_opt.vim

Porting it to test/functional/legacy/backspace_opt_spec.lua
was a mistake.
Tests pass after commenting out some lines for Vi compatibility.

File is copied from Vim as of patch v8.2.0540.
Patch v8.2.0540 cannot be fully ported yet.
This file is a prequisite for future v8.2.x patches.
This commit is contained in:
Jan Edmund Lazo 2021-01-05 00:18:07 -05:00
parent 4f53ebaceb
commit 5b897acfc1
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
2 changed files with 110 additions and 67 deletions

View File

@ -0,0 +1,110 @@
" Tests for 'backspace' settings
func Exec(expr)
let str=''
try
exec a:expr
catch /.*/
let str=v:exception
endtry
return str
endfunc
func Test_backspace_option()
set backspace=
call assert_equal('', &backspace)
set backspace=indent
call assert_equal('indent', &backspace)
set backspace=eol
call assert_equal('eol', &backspace)
set backspace=start
call assert_equal('start', &backspace)
" Add the value
set backspace=
set backspace=indent
call assert_equal('indent', &backspace)
set backspace+=eol
call assert_equal('indent,eol', &backspace)
set backspace+=start
call assert_equal('indent,eol,start', &backspace)
" Delete the value
set backspace-=indent
call assert_equal('eol,start', &backspace)
set backspace-=start
call assert_equal('eol', &backspace)
set backspace-=eol
call assert_equal('', &backspace)
" Check the error
call assert_equal(0, match(Exec('set backspace=ABC'), '.*E474'))
call assert_equal(0, match(Exec('set backspace+=def'), '.*E474'))
" NOTE: Vim doesn't check following error...
"call assert_equal(0, match(Exec('set backspace-=ghi'), '.*E474'))
" Check backwards compatibility with version 5.4 and earlier
set backspace=0
call assert_equal('0', &backspace)
set backspace=1
call assert_equal('1', &backspace)
set backspace=2
call assert_equal('2', &backspace)
call assert_false(match(Exec('set backspace=3'), '.*E474'))
call assert_false(match(Exec('set backspace=10'), '.*E474'))
" Cleared when 'compatible' is set
" set compatible
" call assert_equal('', &backspace)
set nocompatible viminfo+=nviminfo
endfunc
" Test with backspace set to the non-compatible setting
func Test_backspace_ctrl_u()
new
call append(0, [
\ "1 this shouldn't be deleted",
\ "2 this shouldn't be deleted",
\ "3 this shouldn't be deleted",
\ "4 this should be deleted",
\ "5 this shouldn't be deleted",
\ "6 this shouldn't be deleted",
\ "7 this shouldn't be deleted",
\ "8 this shouldn't be deleted (not touched yet)"])
call cursor(2, 1)
" set compatible
set backspace=2
exe "normal Avim1\<C-U>\<Esc>\<CR>"
exe "normal Avim2\<C-G>u\<C-U>\<Esc>\<CR>"
set cpo-=<
inoremap <c-u> <left><c-u>
exe "normal Avim3\<C-U>\<Esc>\<CR>"
iunmap <c-u>
exe "normal Avim4\<C-U>\<C-U>\<Esc>\<CR>"
" Test with backspace set to the compatible setting
set backspace= visualbell
exe "normal A vim5\<Esc>A\<C-U>\<C-U>\<Esc>\<CR>"
exe "normal A vim6\<Esc>Azwei\<C-G>u\<C-U>\<Esc>\<CR>"
inoremap <c-u> <left><c-u>
exe "normal A vim7\<C-U>\<C-U>\<Esc>\<CR>"
call assert_equal([
\ "1 this shouldn't be deleted",
\ "2 this shouldn't be deleted",
\ "3 this shouldn't be deleted",
\ "4 this should be deleted3",
\ "",
\ "6 this shouldn't be deleted vim5",
\ "7 this shouldn't be deleted vim6",
\ "8 this shouldn't be deleted (not touched yet) vim7",
\ ""], getline(1, '$'))
set compatible&vim
set visualbell&vim
set backspace&vim
close!
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -1,67 +0,0 @@
local helpers = require('test.functional.helpers')(after_each)
local call, clear = helpers.call, helpers.clear
local source, eq, nvim = helpers.source, helpers.eq, helpers.meths
describe("test 'backspace' settings", function()
before_each(function()
clear()
source([[
func Exec(expr)
let str=''
try
exec a:expr
catch /.*/
let str=v:exception
endtry
return str
endfunc
func Test_backspace_option()
set backspace=
call assert_equal('', &backspace)
set backspace=indent
call assert_equal('indent', &backspace)
set backspace=eol
call assert_equal('eol', &backspace)
set backspace=start
call assert_equal('start', &backspace)
" Add the value
set backspace=
set backspace=indent
call assert_equal('indent', &backspace)
set backspace+=eol
call assert_equal('indent,eol', &backspace)
set backspace+=start
call assert_equal('indent,eol,start', &backspace)
" Delete the value
set backspace-=indent
call assert_equal('eol,start', &backspace)
set backspace-=start
call assert_equal('eol', &backspace)
set backspace-=eol
call assert_equal('', &backspace)
" Check the error
call assert_equal(0, match(Exec('set backspace=ABC'), '.*E474'))
call assert_equal(0, match(Exec('set backspace+=def'), '.*E474'))
" NOTE: Vim doesn't check following error...
"call assert_equal(0, match(Exec('set backspace-=ghi'), '.*E474'))
" Check backwards compatibility with version 5.4 and earlier
set backspace=0
call assert_equal('0', &backspace)
set backspace=1
call assert_equal('1', &backspace)
set backspace=2
call assert_equal('2', &backspace)
call assert_false(match(Exec('set backspace=3'), '.*E474'))
call assert_false(match(Exec('set backspace=10'), '.*E474'))
endfunc
]])
end)
it('works', function()
call('Test_backspace_option')
eq({}, nvim.get_vvar('errors'))
end)
end)