0
0
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:
Dominique Pelle
2021-05-02 20:16:24 +02:00
committed by Bram Moolenaar
parent 1bb0da25a6
commit 2bf6034e5c
2 changed files with 57 additions and 0 deletions

View File

@@ -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:')

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2825,
/**/
2824,
/**/