diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-10-10 16:46:17 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-10-10 16:46:17 +0200 |
commit | 07282f01da06c158bab4787adc89ec15d7eeb202 (patch) | |
tree | ef74e4e842d0b3f04cd2ebb99f452ee2848f62a8 | |
parent | a129974bc71fcb86e05a29387bcaba9aae2f296a (diff) | |
download | vim-git-07282f01da06c158bab4787adc89ec15d7eeb202.tar.gz |
patch 8.1.2133: some tests fail when run as rootv8.1.2133
Problem: Some tests fail when run as root.
Solution: Add CheckNotRoot and use it. (James McCoy, closes #5020)
-rw-r--r-- | src/testdir/check.vim | 10 | ||||
-rw-r--r-- | src/testdir/shared.vim | 9 | ||||
-rw-r--r-- | src/testdir/test_rename.vim | 4 | ||||
-rw-r--r-- | src/testdir/test_swap.vim | 21 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 3 | ||||
-rw-r--r-- | src/testdir/test_viminfo.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
7 files changed, 39 insertions, 11 deletions
diff --git a/src/testdir/check.vim b/src/testdir/check.vim index f176f8332..6c3b1be4f 100644 --- a/src/testdir/check.vim +++ b/src/testdir/check.vim @@ -1,3 +1,5 @@ +source shared.vim + " Command to check for the presence of a feature. command -nargs=1 CheckFeature call CheckFeature(<f-args>) func CheckFeature(name) @@ -102,3 +104,11 @@ func CheckNotGui() throw 'Skipped: only works in the terminal' endif endfunc + +" Command to check that test is not running as root +command CheckNotRoot call CheckNotRoot() +func CheckNotRoot() + if IsRoot() + throw 'Skipped: cannot run test as root' + endif +endfunc diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim index cf15a4cc4..78f204c10 100644 --- a/src/testdir/shared.vim +++ b/src/testdir/shared.vim @@ -325,3 +325,12 @@ func RunVimPiped(before, after, arguments, pipecmd) endif return 1 endfunc + +func IsRoot() + if !has('unix') + return v:false + elseif $USER == 'root' || system('id -un') =~ '\<root\>' + return v:true + endif + return v:false +endfunc diff --git a/src/testdir/test_rename.vim b/src/testdir/test_rename.vim index 3887fcfab..5359b8492 100644 --- a/src/testdir/test_rename.vim +++ b/src/testdir/test_rename.vim @@ -1,5 +1,7 @@ " Test rename() +source shared.vim + func Test_rename_file_to_file() call writefile(['foo'], 'Xrename1') @@ -81,7 +83,7 @@ func Test_rename_copy() call assert_equal(0, rename('Xrenamedir/Xrenamefile', 'Xrenamefile')) - if !has('win32') + if !has('win32') && !IsRoot() " On Windows, the source file is removed despite " its directory being made not writable. call assert_equal(['foo'], readfile('Xrenamedir/Xrenamefile')) diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim index 6e01ad00d..aa67b430e 100644 --- a/src/testdir/test_swap.vim +++ b/src/testdir/test_swap.vim @@ -1,5 +1,7 @@ " Tests for the swap feature +source shared.vim + func s:swapname() return trim(execute('swapname')) endfunc @@ -196,14 +198,17 @@ func Test_swapfile_delete() quit call assert_equal(fnamemodify(swapfile_name, ':t'), fnamemodify(s:swapname, ':t')) - " Write the swapfile with a modified PID, now it will be automatically - " deleted. Process one should never be Vim. - let swapfile_bytes[24:27] = 0z01000000 - call writefile(swapfile_bytes, swapfile_name) - let s:swapname = '' - split XswapfileText - quit - call assert_equal('', s:swapname) + " This test won't work as root because root can successfully run kill(1, 0) + if !IsRoot() + " Write the swapfile with a modified PID, now it will be automatically + " deleted. Process one should never be Vim. + let swapfile_bytes[24:27] = 0z01000000 + call writefile(swapfile_bytes, swapfile_name) + let s:swapname = '' + split XswapfileText + quit + call assert_equal('', s:swapname) + endif " Now set the modified flag, the swap file will not be deleted let swapfile_bytes[28 + 80 + 899] = 0x55 diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 0041965f3..7e8ef763b 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -570,7 +570,7 @@ func Test_terminal_cwd_failure() " Case 3: Directory exists but is not accessible. " Skip this for root, it will be accessible anyway. - if $USER != 'root' + if !IsRoot() call mkdir('XdirNoAccess', '', '0600') " return early if the directory permissions could not be set properly if getfperm('XdirNoAccess')[2] == 'x' @@ -1353,7 +1353,6 @@ endfunc func Test_terminal_api_call() CheckRunVimInTerminal -call ch_logfile('logfile', 'w') unlet! g:called_bufnum unlet! g:called_arg diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim index 7ea9f78da..a9dc8fd31 100644 --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -736,6 +736,7 @@ endfunc " Test for an unwritable and unreadble 'viminfo' file func Test_viminfo_perm() CheckUnix + CheckNotRoot call writefile([''], 'Xviminfo') call setfperm('Xviminfo', 'r-x------') call assert_fails('wviminfo Xviminfo', 'E137:') diff --git a/src/version.c b/src/version.c index 4e0af78a4..acbcc2d25 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2133, +/**/ 2132, /**/ 2131, |