To: vim_dev@googlegroups.com Subject: Patch 8.2.2825 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2825 Problem: Code in checkreadonly() not fully tested. Solution: Add more tests. (Dominique Pellé, closes #8169) Files: src/testdir/test_excmd.vim *** ../vim-8.2.2824/src/testdir/test_excmd.vim 2021-03-20 12:49:12.078222904 +0100 --- src/testdir/test_excmd.vim 2021-05-02 20:13:50.303465899 +0200 *************** *** 319,324 **** --- 319,379 ---- 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:') *** ../vim-8.2.2824/src/version.c 2021-05-02 19:14:55.466643569 +0200 --- src/version.c 2021-05-02 20:16:05.427198759 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2825, /**/ -- A scientist is someone who knows exactly how an engine works, but can't fix his car when it fails to start. An engineer is someone who knows only some things about an engine, but can fix his car when it's broken. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///