mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.2825: code in checkreadonly() not fully tested
Problem: Code in checkreadonly() not fully tested. Solution: Add more tests. (Dominique Pellé, closes #8169)
This commit is contained in:
committed by
Bram Moolenaar
parent
1bb0da25a6
commit
2bf6034e5c
@@ -319,6 +319,61 @@ func Test_confirm_q_wq()
|
||||
call delete('Xfoo')
|
||||
endfunc
|
||||
|
||||
func Test_confirm_write_ro()
|
||||
CheckNotGui
|
||||
CheckRunVimInTerminal
|
||||
|
||||
call writefile(['foo'], 'Xconfirm_write_ro')
|
||||
let lines =<< trim END
|
||||
set nobackup ff=unix cmdheight=2
|
||||
edit Xconfirm_write_ro
|
||||
norm Abar
|
||||
END
|
||||
call writefile(lines, 'Xscript')
|
||||
let buf = RunVimInTerminal('-S Xscript', {'rows': 20})
|
||||
|
||||
" Try to write with 'ro' option.
|
||||
call term_sendkeys(buf, ":set ro | confirm w\n")
|
||||
call WaitForAssert({-> assert_match("^'readonly' option is set for \"Xconfirm_write_ro\"\. *$",
|
||||
\ term_getline(buf, 18))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^Do you wish to write anyway? *$',
|
||||
\ term_getline(buf, 19))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000)
|
||||
call term_sendkeys(buf, 'N')
|
||||
call WaitForAssert({-> assert_match('^ *$', term_getline(buf, 19))}, 1000)
|
||||
call WaitForAssert({-> assert_match('.* All$', term_getline(buf, 20))}, 1000)
|
||||
call assert_equal(['foo'], readfile('Xconfirm_write_ro'))
|
||||
|
||||
call term_sendkeys(buf, ":confirm w\n")
|
||||
call WaitForAssert({-> assert_match("^'readonly' option is set for \"Xconfirm_write_ro\"\. *$",
|
||||
\ term_getline(buf, 18))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^Do you wish to write anyway? *$',
|
||||
\ term_getline(buf, 19))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000)
|
||||
call term_sendkeys(buf, 'Y')
|
||||
call WaitForAssert({-> assert_match('^"Xconfirm_write_ro" 1L, 7B written$',
|
||||
\ term_getline(buf, 19))}, 1000)
|
||||
call assert_equal(['foobar'], readfile('Xconfirm_write_ro'))
|
||||
|
||||
" Try to write with read-only file permissions.
|
||||
call setfperm('Xconfirm_write_ro', 'r--r--r--')
|
||||
call term_sendkeys(buf, ":set noro | undo | confirm w\n")
|
||||
call WaitForAssert({-> assert_match("^File permissions of \"Xconfirm_write_ro\" are read-only\. *$",
|
||||
\ term_getline(buf, 17))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^It may still be possible to write it\. *$',
|
||||
\ term_getline(buf, 18))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^Do you wish to try? *$', term_getline(buf, 19))}, 1000)
|
||||
call WaitForAssert({-> assert_match('^(Y)es, \[N\]o: *$', term_getline(buf, 20))}, 1000)
|
||||
call term_sendkeys(buf, 'Y')
|
||||
call WaitForAssert({-> assert_match('^"Xconfirm_write_ro" 1L, 4B written$',
|
||||
\ term_getline(buf, 19))}, 1000)
|
||||
call assert_equal(['foo'], readfile('Xconfirm_write_ro'))
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
call delete('Xscript')
|
||||
call delete('Xconfirm_write_ro')
|
||||
endfunc
|
||||
|
||||
" Test for the :print command
|
||||
func Test_print_cmd()
|
||||
call assert_fails('print', 'E749:')
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2825,
|
||||
/**/
|
||||
2824,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user