0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

patch 9.0.0323: using common name in tests leads to flaky tests

Problem:    Using common name in tests leads to flaky tests.
Solution:   Rename files and directories to be more specific.
This commit is contained in:
Bram Moolenaar
2022-08-29 22:31:20 +01:00
parent 4f1b083be4
commit 3b0d70f4ff
25 changed files with 531 additions and 530 deletions

View File

@@ -347,9 +347,9 @@ func Test_resolve_unix()
call delete('Xlink2')
call delete('Xlink3')
silent !ln -s -f Xdir//Xfile Xlink
call assert_equal('Xdir/Xfile', resolve('Xlink'))
call delete('Xlink')
silent !ln -s -f Xresolvedir//Xfile Xresolvelink
call assert_equal('Xresolvedir/Xfile', resolve('Xresolvelink'))
call delete('Xresolvelink')
silent !ln -s -f Xlink2/ Xlink1
call assert_equal('Xlink2', 'Xlink1'->resolve())
@@ -375,22 +375,22 @@ func Test_resolve_win32()
" test for shortcut file
if executable('cscript')
new Xfile
new Xresfile
wq
let lines =<< trim END
Set fs = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
Set shortcut = ws.CreateShortcut("Xlink.lnk")
shortcut.TargetPath = fs.BuildPath(ws.CurrentDirectory, "Xfile")
shortcut.TargetPath = fs.BuildPath(ws.CurrentDirectory, "Xresfile")
shortcut.Save
END
call writefile(lines, 'link.vbs')
silent !cscript link.vbs
call delete('link.vbs')
call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
call delete('Xfile')
call assert_equal(s:normalize_fname(getcwd() . '\Xresfile'), s:normalize_fname(resolve('./Xlink.lnk')))
call delete('Xresfile')
call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink.lnk')))
call assert_equal(s:normalize_fname(getcwd() . '\Xresfile'), s:normalize_fname(resolve('./Xlink.lnk')))
call delete('Xlink.lnk')
else
echomsg 'skipped test for shortcut file'
@@ -398,52 +398,51 @@ func Test_resolve_win32()
" remove files
call delete('Xlink')
call delete('Xdir', 'd')
call delete('Xfile')
call delete('Xresfile')
" test for symbolic link to a file
new Xfile
new Xslinkfile
wq
call assert_equal('Xfile', resolve('Xfile'))
silent !mklink Xlink Xfile
call assert_equal('Xslinkfile', resolve('Xslinkfile'))
silent !mklink Xlink Xslinkfile
if !v:shell_error
call assert_equal(s:normalize_fname(getcwd() . '\Xfile'), s:normalize_fname(resolve('./Xlink')))
call assert_equal(s:normalize_fname(getcwd() . '\Xslinkfile'), s:normalize_fname(resolve('./Xlink')))
call delete('Xlink')
else
echomsg 'skipped test for symbolic link to a file'
endif
call delete('Xfile')
call delete('Xslinkfile')
" test for junction to a directory
call mkdir('Xdir')
silent !mklink /J Xlink Xdir
call mkdir('Xjuncdir')
silent !mklink /J Xlink Xjuncdir
if !v:shell_error
call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call assert_equal(s:normalize_fname(getcwd() . '\Xjuncdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call delete('Xdir', 'd')
call delete('Xjuncdir', 'd')
" test for junction already removed
call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call delete('Xlink')
else
echomsg 'skipped test for junction to a directory'
call delete('Xdir', 'd')
call delete('Xjuncdir', 'd')
endif
" test for symbolic link to a directory
call mkdir('Xdir')
silent !mklink /D Xlink Xdir
call mkdir('Xjuncdir')
silent !mklink /D Xlink Xjuncdir
if !v:shell_error
call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call assert_equal(s:normalize_fname(getcwd() . '\Xjuncdir'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call delete('Xdir', 'd')
call delete('Xjuncdir', 'd')
" test for symbolic link already removed
call assert_equal(s:normalize_fname(getcwd() . '\Xlink'), s:normalize_fname(resolve(getcwd() . '/Xlink')))
call delete('Xlink')
else
echomsg 'skipped test for symbolic link to a directory'
call delete('Xdir', 'd')
call delete('Xjuncdir', 'd')
endif
" test for buffer name
@@ -461,20 +460,20 @@ func Test_resolve_win32()
call delete('Xfile')
" test for reparse point
call mkdir('Xdir')
call assert_equal('Xdir', resolve('Xdir'))
silent !mklink /D Xdirlink Xdir
call mkdir('Xparsedir')
call assert_equal('Xdir', resolve('Xparsedir'))
silent !mklink /D Xdirlink Xparsedir
if !v:shell_error
w Xdir/text.txt
call assert_equal('Xdir/text.txt', resolve('Xdir/text.txt'))
call assert_equal(s:normalize_fname(getcwd() . '\Xdir\text.txt'), s:normalize_fname(resolve('Xdirlink\text.txt')))
call assert_equal(s:normalize_fname(getcwd() . '\Xdir'), s:normalize_fname(resolve('Xdirlink')))
w Xparsedir/text.txt
call assert_equal('Xparsedir/text.txt', resolve('Xparsedir/text.txt'))
call assert_equal(s:normalize_fname(getcwd() . '\Xparsedir\text.txt'), s:normalize_fname(resolve('Xdirlink\text.txt')))
call assert_equal(s:normalize_fname(getcwd() . '\Xparsedir'), s:normalize_fname(resolve('Xdirlink')))
call delete('Xdirlink')
else
echomsg 'skipped test for reparse point'
endif
call delete('Xdir', 'rf')
call delete('Xparsedir', 'rf')
endfunc
func Test_simplify()
@@ -497,9 +496,9 @@ func Test_simplify()
call assert_equal('./file', simplify('dir/.././file'))
call assert_equal('../dir', simplify('./../dir'))
call assert_equal('..', simplify('../testdir/..'))
call mkdir('Xdir')
call assert_equal('.', simplify('Xdir/../.'))
call delete('Xdir', 'd')
call mkdir('Xsimpdir')
call assert_equal('.', simplify('Xsimpdir/../.'))
call delete('Xsimpdir', 'd')
call assert_fails('call simplify({->0})', 'E729:')
call assert_fails('call simplify([])', 'E730:')
@@ -1336,9 +1335,9 @@ func Test_filewritable()
call assert_equal(0, filewritable('doesnotexist'))
call mkdir('Xdir')
call assert_equal(2, filewritable('Xdir'))
call delete('Xdir', 'd')
call mkdir('Xwritedir')
call assert_equal(2, filewritable('Xwritedir'))
call delete('Xwritedir', 'd')
call delete('Xfilewritable')
bw!
@@ -1364,17 +1363,17 @@ func Test_Executable()
bwipe
" create "notepad.bat"
call mkdir('Xdir')
let notepadbat = fnamemodify('Xdir/notepad.bat', ':p')
call mkdir('Xnotedir')
let notepadbat = fnamemodify('Xnotedir/notepad.bat', ':p')
call writefile([], notepadbat)
new
" check that the path and the pathext order is valid
lcd Xdir
lcd Xnotedir
let [pathext, $PATHEXT] = [$PATHEXT, '.com;.exe;.bat;.cmd']
call assert_equal(notepadbat, exepath('notepad'))
let $PATHEXT = pathext
bwipe
eval 'Xdir'->delete('rf')
eval 'Xnotedir'->delete('rf')
elseif has('unix')
call assert_equal(1, 'cat'->executable())
call assert_equal(0, executable('nodogshere'))
@@ -2073,88 +2072,88 @@ func Test_platform_name()
endfunc
func Test_readdir()
call mkdir('Xdir')
call writefile([], 'Xdir/foo.txt')
call writefile([], 'Xdir/bar.txt')
call mkdir('Xdir/dir')
call mkdir('Xreaddir')
call writefile([], 'Xreaddir/foo.txt')
call writefile([], 'Xreaddir/bar.txt')
call mkdir('Xreaddir/dir')
" All results
let files = readdir('Xdir')
let files = readdir('Xreaddir')
call assert_equal(['bar.txt', 'dir', 'foo.txt'], sort(files))
" Only results containing "f"
let files = 'Xdir'->readdir({ x -> stridx(x, 'f') != -1 })
let files = 'Xreaddir'->readdir({ x -> stridx(x, 'f') != -1 })
call assert_equal(['foo.txt'], sort(files))
" Only .txt files
let files = readdir('Xdir', { x -> x =~ '.txt$' })
let files = readdir('Xreaddir', { x -> x =~ '.txt$' })
call assert_equal(['bar.txt', 'foo.txt'], sort(files))
" Only .txt files with string
let files = readdir('Xdir', 'v:val =~ ".txt$"')
let files = readdir('Xreaddir', 'v:val =~ ".txt$"')
call assert_equal(['bar.txt', 'foo.txt'], sort(files))
" Limit to 1 result.
let l = []
let files = readdir('Xdir', {x -> len(add(l, x)) == 2 ? -1 : 1})
let files = readdir('Xreaddir', {x -> len(add(l, x)) == 2 ? -1 : 1})
call assert_equal(1, len(files))
" Nested readdir() must not crash
let files = readdir('Xdir', 'readdir("Xdir", "1") != []')
let files = readdir('Xreaddir', 'readdir("Xreaddir", "1") != []')
call sort(files)->assert_equal(['bar.txt', 'dir', 'foo.txt'])
eval 'Xdir'->delete('rf')
eval 'Xreaddir'->delete('rf')
endfunc
func Test_readdirex()
call mkdir('Xdir')
call writefile(['foo'], 'Xdir/foo.txt')
call writefile(['barbar'], 'Xdir/bar.txt')
call mkdir('Xdir/dir')
call mkdir('Xexdir')
call writefile(['foo'], 'Xexdir/foo.txt')
call writefile(['barbar'], 'Xexdir/bar.txt')
call mkdir('Xexdir/dir')
" All results
let files = readdirex('Xdir')->map({-> v:val.name})
let files = readdirex('Xexdir')->map({-> v:val.name})
call assert_equal(['bar.txt', 'dir', 'foo.txt'], sort(files))
let sizes = readdirex('Xdir')->map({-> v:val.size})
let sizes = readdirex('Xexdir')->map({-> v:val.size})
call assert_equal([0, 4, 7], sort(sizes))
" Only results containing "f"
let files = 'Xdir'->readdirex({ e -> stridx(e.name, 'f') != -1 })
let files = 'Xexdir'->readdirex({ e -> stridx(e.name, 'f') != -1 })
\ ->map({-> v:val.name})
call assert_equal(['foo.txt'], sort(files))
" Only .txt files
let files = readdirex('Xdir', { e -> e.name =~ '.txt$' })
let files = readdirex('Xexdir', { e -> e.name =~ '.txt$' })
\ ->map({-> v:val.name})
call assert_equal(['bar.txt', 'foo.txt'], sort(files))
" Only .txt files with string
let files = readdirex('Xdir', 'v:val.name =~ ".txt$"')
let files = readdirex('Xexdir', 'v:val.name =~ ".txt$"')
\ ->map({-> v:val.name})
call assert_equal(['bar.txt', 'foo.txt'], sort(files))
" Limit to 1 result.
let l = []
let files = readdirex('Xdir', {e -> len(add(l, e.name)) == 2 ? -1 : 1})
let files = readdirex('Xexdir', {e -> len(add(l, e.name)) == 2 ? -1 : 1})
\ ->map({-> v:val.name})
call assert_equal(1, len(files))
" Nested readdirex() must not crash
let files = readdirex('Xdir', 'readdirex("Xdir", "1") != []')
let files = readdirex('Xexdir', 'readdirex("Xexdir", "1") != []')
\ ->map({-> v:val.name})
call sort(files)->assert_equal(['bar.txt', 'dir', 'foo.txt'])
" report broken link correctly
if has("unix")
call writefile([], 'Xdir/abc.txt')
call system("ln -s Xdir/abc.txt Xdir/link")
call delete('Xdir/abc.txt')
let files = readdirex('Xdir', 'readdirex("Xdir", "1") != []')
call writefile([], 'Xexdir/abc.txt')
call system("ln -s Xexdir/abc.txt Xexdir/link")
call delete('Xexdir/abc.txt')
let files = readdirex('Xexdir', 'readdirex("Xexdir", "1") != []')
\ ->map({-> v:val.name .. '_' .. v:val.type})
call sort(files)->assert_equal(
\ ['bar.txt_file', 'dir_dir', 'foo.txt_file', 'link_link'])
endif
eval 'Xdir'->delete('rf')
eval 'Xexdir'->delete('rf')
call assert_fails('call readdirex("doesnotexist")', 'E484:')
endfunc
@@ -2166,34 +2165,34 @@ func Test_readdirex_sort()
throw 'Skipped: Test_readdirex_sort on systems that do not allow this using the default filesystem'
endif
let _collate = v:collate
call mkdir('Xdir2')
call writefile(['1'], 'Xdir2/README.txt')
call writefile(['2'], 'Xdir2/Readme.txt')
call writefile(['3'], 'Xdir2/readme.txt')
call mkdir('Xsortdir2')
call writefile(['1'], 'Xsortdir2/README.txt')
call writefile(['2'], 'Xsortdir2/Readme.txt')
call writefile(['3'], 'Xsortdir2/readme.txt')
" 1) default
let files = readdirex('Xdir2')->map({-> v:val.name})
let files = readdirex('Xsortdir2')->map({-> v:val.name})
let default = copy(files)
call assert_equal(['README.txt', 'Readme.txt', 'readme.txt'], files, 'sort using default')
" 2) no sorting
let files = readdirex('Xdir2', 1, #{sort: 'none'})->map({-> v:val.name})
let files = readdirex('Xsortdir2', 1, #{sort: 'none'})->map({-> v:val.name})
let unsorted = copy(files)
call assert_equal(['README.txt', 'Readme.txt', 'readme.txt'], sort(files), 'unsorted')
call assert_fails("call readdirex('Xdir2', 1, #{slort: 'none'})", 'E857: Dictionary key "sort" required')
call assert_fails("call readdirex('Xsortdir2', 1, #{slort: 'none'})", 'E857: Dictionary key "sort" required')
" 3) sort by case (same as default)
let files = readdirex('Xdir2', 1, #{sort: 'case'})->map({-> v:val.name})
let files = readdirex('Xsortdir2', 1, #{sort: 'case'})->map({-> v:val.name})
call assert_equal(default, files, 'sort by case')
" 4) sort by ignoring case
let files = readdirex('Xdir2', 1, #{sort: 'icase'})->map({-> v:val.name})
let files = readdirex('Xsortdir2', 1, #{sort: 'icase'})->map({-> v:val.name})
call assert_equal(unsorted->sort('i'), files, 'sort by icase')
" 5) Default Collation
let collate = v:collate
lang collate C
let files = readdirex('Xdir2', 1, #{sort: 'collate'})->map({-> v:val.name})
let files = readdirex('Xsortdir2', 1, #{sort: 'collate'})->map({-> v:val.name})
call assert_equal(['README.txt', 'Readme.txt', 'readme.txt'], files, 'sort by C collation')
" 6) Collation de_DE
@@ -2201,20 +2200,20 @@ func Test_readdirex_sort()
" available
try
lang collate de_DE
let files = readdirex('Xdir2', 1, #{sort: 'collate'})->map({-> v:val.name})
let files = readdirex('Xsortdir2', 1, #{sort: 'collate'})->map({-> v:val.name})
call assert_equal(['readme.txt', 'Readme.txt', 'README.txt'], files, 'sort by de_DE collation')
catch
throw 'Skipped: de_DE collation is not available'
finally
exe 'lang collate' collate
eval 'Xdir2'->delete('rf')
eval 'Xsortdir2'->delete('rf')
endtry
endfunc
func Test_readdir_sort()
" some more cases for testing sorting for readdirex
let dir = 'Xdir3'
let dir = 'Xsortdir3'
call mkdir(dir)
call writefile(['1'], dir .. '/README.txt')
call writefile(['2'], dir .. '/Readm.txt')
@@ -2259,26 +2258,26 @@ func Test_readdir_sort()
endfunc
func Test_delete_rf()
call mkdir('Xdir')
call writefile([], 'Xdir/foo.txt')
call writefile([], 'Xdir/bar.txt')
call mkdir('Xdir/[a-1]') " issue #696
call writefile([], 'Xdir/[a-1]/foo.txt')
call writefile([], 'Xdir/[a-1]/bar.txt')
call assert_true(filereadable('Xdir/foo.txt'))
call assert_true('Xdir/[a-1]/foo.txt'->filereadable())
call mkdir('Xrfdir')
call writefile([], 'Xrfdir/foo.txt')
call writefile([], 'Xrfdir/bar.txt')
call mkdir('Xrfdir/[a-1]') " issue #696
call writefile([], 'Xrfdir/[a-1]/foo.txt')
call writefile([], 'Xrfdir/[a-1]/bar.txt')
call assert_true(filereadable('Xrfdir/foo.txt'))
call assert_true('Xrfdir/[a-1]/foo.txt'->filereadable())
call assert_equal(0, delete('Xdir', 'rf'))
call assert_false(filereadable('Xdir/foo.txt'))
call assert_false(filereadable('Xdir/[a-1]/foo.txt'))
call assert_equal(0, delete('Xrfdir', 'rf'))
call assert_false(filereadable('Xrfdir/foo.txt'))
call assert_false(filereadable('Xrfdir/[a-1]/foo.txt'))
if has('unix')
call mkdir('Xdir/Xdir2', 'p')
silent !chmod 555 Xdir
call assert_equal(-1, delete('Xdir/Xdir2', 'rf'))
call assert_equal(-1, delete('Xdir', 'rf'))
silent !chmod 755 Xdir
call assert_equal(0, delete('Xdir', 'rf'))
call mkdir('Xrfdir/Xdir2', 'p')
silent !chmod 555 Xrfdir
call assert_equal(-1, delete('Xrfdir/Xdir2', 'rf'))
call assert_equal(-1, delete('Xrfdir', 'rf'))
silent !chmod 755 Xrfdir
call assert_equal(0, delete('Xrfdir', 'rf'))
endif
endfunc