diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-06-22 14:55:25 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-06-23 18:17:09 -0400 |
commit | ca6b42d7fdb4e533e7875b1ed23e4a07b900b09d (patch) | |
tree | 02519d69037c9348941e4ccfa00d4a93b3a014fa | |
parent | 25f99dde9480bcfa32f172c0032a2d24d7c32153 (diff) | |
download | rneovim-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.vim | 45 |
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 |