summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-10-10 16:46:17 +0200
committerBram Moolenaar <Bram@vim.org>2019-10-10 16:46:17 +0200
commit07282f01da06c158bab4787adc89ec15d7eeb202 (patch)
treeef74e4e842d0b3f04cd2ebb99f452ee2848f62a8
parenta129974bc71fcb86e05a29387bcaba9aae2f296a (diff)
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.vim10
-rw-r--r--src/testdir/shared.vim9
-rw-r--r--src/testdir/test_rename.vim4
-rw-r--r--src/testdir/test_swap.vim21
-rw-r--r--src/testdir/test_terminal.vim3
-rw-r--r--src/testdir/test_viminfo.vim1
-rw-r--r--src/version.c2
7 files changed, 39 insertions, 11 deletions
diff --git a/src/testdir/check.vim b/src/testdir/check.vim
index f176f83329..6c3b1be4ff 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 cf15a4cc41..78f204c10e 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 3887fcfabf..5359b84923 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 6e01ad00da..aa67b430e6 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 0041965f30..7e8ef763b4 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 7ea9f78da4..a9dc8fd31a 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 4e0af78a45..acbcc2d258 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,