summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-30 21:51:27 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-30 21:51:27 +0100
commit98ad1e17c3f71962862f959c6ba57dd01e8a83c2 (patch)
tree04bbd11e8f6833ec19f3adb429c24e6060319006
parentc07ff5c60ad35982e9cdaa9dd72d3d1669935e87 (diff)
downloadvim-git-98ad1e17c3f71962862f959c6ba57dd01e8a83c2.tar.gz
patch 8.1.0850: test for 'backupskip' is not correctv8.1.0850
Problem: Test for 'backupskip' is not correct. Solution: Split the option in parts and use expand(). (Michael Soyka)
-rw-r--r--src/testdir/test_options.vim45
-rw-r--r--src/version.c2
2 files changed, 39 insertions, 8 deletions
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 70f6b96de..4d2c477c4 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -75,9 +75,6 @@ func Test_signcolumn()
endfunc
func Test_filetype_valid()
- if !has('autocmd')
- return
- endif
set ft=valid_name
call assert_equal("valid_name", &filetype)
set ft=valid-name
@@ -349,17 +346,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
diff --git a/src/version.c b/src/version.c
index 864ca44c2..31bfb9a02 100644
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 850,
+/**/
849,
/**/
848,