aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-06-22 14:55:25 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-06-23 18:17:09 -0400
commitca6b42d7fdb4e533e7875b1ed23e4a07b900b09d (patch)
tree02519d69037c9348941e4ccfa00d4a93b3a014fa
parent25f99dde9480bcfa32f172c0032a2d24d7c32153 (diff)
downloadrneovim-ca6b42d7fdb4e533e7875b1ed23e4a07b900b09d.tar.gz
rneovim-ca6b42d7fdb4e533e7875b1ed23e4a07b900b09d.tar.bz2
rneovim-ca6b42d7fdb4e533e7875b1ed23e4a07b900b09d.zip
vim-patch:8.1.0850: test for 'backupskip' is not correct
Problem: Test for 'backupskip' is not correct. Solution: Split the option in parts and use expand(). (Michael Soyka) https://github.com/vim/vim/commit/98ad1e17c3f71962862f959c6ba57dd01e8a83c2
-rw-r--r--src/nvim/testdir/test_options.vim45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim
index 9aa003f475..eedf8c23c4 100644
--- a/src/nvim/testdir/test_options.vim
+++ b/src/nvim/testdir/test_options.vim
@@ -92,9 +92,6 @@ function! Test_path_keep_commas()
endfunction
func Test_filetype_valid()
- if !has('autocmd')
- return
- endif
set ft=valid_name
call assert_equal("valid_name", &filetype)
set ft=valid-name
@@ -347,17 +344,49 @@ func Test_set_indentexpr()
endfunc
func Test_backupskip()
+ " Option 'backupskip' may contain several comma-separated path
+ " specifications if one or more of the environment variables TMPDIR, TMP,
+ " or TEMP is defined. To simplify testing, convert the string value into a
+ " list.
+ let bsklist = split(&bsk, ',')
+
if has("mac")
- call assert_match('/private/tmp/\*', &bsk)
+ let found = (index(bsklist, '/private/tmp/*') >= 0)
+ call assert_true(found, '/private/tmp not in option bsk: ' . &bsk)
elseif has("unix")
- call assert_match('/tmp/\*', &bsk)
+ let found = (index(bsklist, '/tmp/*') >= 0)
+ call assert_true(found, '/tmp not in option bsk: ' . &bsk)
+ endif
+
+ " If our test platform is Windows, the path(s) in option bsk will use
+ " backslash for the path separator and the components could be in short
+ " (8.3) format. As such, we need to replace the backslashes with forward
+ " slashes and convert the path components to long format. The expand()
+ " function will do this but it cannot handle comma-separated paths. This is
+ " why bsk was converted from a string into a list of strings above.
+ "
+ " One final complication is that the wildcard "/*" is at the end of each
+ " path and so expand() might return a list of matching files. To prevent
+ " this, we need to remove the wildcard before calling expand() and then
+ " append it afterwards.
+ if has('win32')
+ let item_nbr = 0
+ while item_nbr < len(bsklist)
+ let path_spec = bsklist[item_nbr]
+ let path_spec = strcharpart(path_spec, 0, strlen(path_spec)-2)
+ let path_spec = substitute(expand(path_spec), '\\', '/', 'g')
+ let bsklist[item_nbr] = path_spec . '/*'
+ let item_nbr += 1
+ endwhile
endif
- let bskvalue = substitute(&bsk, '\\', '/', 'g')
- for var in ['$TEMPDIR', '$TMP', '$TEMP']
+ " Option bsk will also include these environment variables if defined.
+ " If they're defined, verify they appear in the option value.
+ for var in ['$TMPDIR', '$TMP', '$TEMP']
if exists(var)
let varvalue = substitute(expand(var), '\\', '/', 'g')
- call assert_match(varvalue . '/\=\*', bskvalue)
+ let found = (index(bsklist, varvalue.'/*') >= 0)
+ call assert_true(found, var . ' not in option bsk: ' . &bsk)
endif
endfor
endfunc