diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-06-06 00:10:17 -0400 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-07-24 23:17:36 -0400 |
commit | 30bba7a10cfa3af97fdcbb39afb9d0146b2af509 (patch) | |
tree | 3f8f4492ac868e6ce5ff34a8e0e345870321f2e2 | |
parent | 5ed0975ea2366dab642f2b962df9fbeca319a79e (diff) | |
download | rneovim-30bba7a10cfa3af97fdcbb39afb9d0146b2af509.tar.gz rneovim-30bba7a10cfa3af97fdcbb39afb9d0146b2af509.tar.bz2 rneovim-30bba7a10cfa3af97fdcbb39afb9d0146b2af509.zip |
vim-patch:8.0.1017: test for MS-Windows $HOME always passes
Problem: Test for MS-Windows $HOME always passes.
Solution: Rename the test function. Make the test pass.
https://github.com/vim/vim/commit/dde60341115effc9789742c2f4565d184e98b6b5
Assume $HOME contains the literal absolute path.
Nested environment variable expansion is unsupported.
-rw-r--r-- | src/nvim/testdir/test_windows_home.vim | 79 |
1 files changed, 38 insertions, 41 deletions
diff --git a/src/nvim/testdir/test_windows_home.vim b/src/nvim/testdir/test_windows_home.vim index 082f217e11..bbcbf96050 100644 --- a/src/nvim/testdir/test_windows_home.vim +++ b/src/nvim/testdir/test_windows_home.vim @@ -38,76 +38,73 @@ func CheckHomeIsInSubprocessEnvironment(exp) endfunc func CheckHome(exp, ...) - "call assert_equal(a:exp, $HOME) - "call assert_equal(a:exp, expand('~', ':p')) + call assert_equal(a:exp, $HOME) + call assert_equal(a:exp, expand('~', ':p')) if !a:0 call CheckHomeIsMissingFromSubprocessEnvironment() else - call CheckHomeIsInSubprocessEnvironment(a:exp) + call CheckHomeIsInSubprocessEnvironment(a:1) endif endfunc -func TestWindowsHome() +func Test_WindowsHome() command! -nargs=* SaveEnv call <SID>save_env(<f-args>) command! -nargs=* RestoreEnv call <SID>restore_env() command! -nargs=* UnletEnv call <SID>unlet_env(<f-args>) + set noshellslash - SaveEnv $HOME $USERPROFILE $HOMEDRIVE $HOMEPATH + let save_home = $HOME + SaveEnv $USERPROFILE $HOMEDRIVE $HOMEPATH try - RestoreEnv - UnletEnv $HOME $USERPROFILE $HOMEPATH - let $HOMEDRIVE = 'C:' - call CheckHome('C:\') - - RestoreEnv - UnletEnv $HOME $USERPROFILE + " Normal behavior: use $HOMEDRIVE and $HOMEPATH, ignore $USERPROFILE + let $USERPROFILE = 'unused' let $HOMEDRIVE = 'C:' let $HOMEPATH = '\foobar' + let $HOME = '' " Force recomputing "homedir" call CheckHome('C:\foobar') - RestoreEnv - UnletEnv $HOME $HOMEDRIVE $HOMEPATH - let $USERPROFILE = 'C:\foo' - call CheckHome('C:\foo') + " Same, but with $HOMEPATH not set + UnletEnv $HOMEPATH + let $HOME = '' " Force recomputing "homedir" + call CheckHome('C:\') - RestoreEnv - UnletEnv $HOME + " Use $USERPROFILE if $HOMEPATH and $HOMEDRIVE are empty + UnletEnv $HOMEDRIVE $HOMEPATH let $USERPROFILE = 'C:\foo' - let $HOMEDRIVE = 'C:' - let $HOMEPATH = '\baz' + let $HOME = '' " Force recomputing "homedir" call CheckHome('C:\foo') - RestoreEnv + " If $HOME is set the others don't matter let $HOME = 'C:\bar' - let $USERPROFILE = 'C:\foo' - let $HOMEDRIVE = 'C:' - let $HOMEPATH = '\baz' - call CheckHome('C:\bar', 1) + let $USERPROFILE = 'unused' + let $HOMEDRIVE = 'unused' + let $HOMEPATH = 'unused' + call CheckHome('C:\bar', 'C:\bar') - RestoreEnv - let $HOME = '%USERPROFILE%\bar' + " If $HOME contains %USERPROFILE% it is expanded let $USERPROFILE = 'C:\foo' - let $HOMEDRIVE = 'C:' - let $HOMEPATH = '\baz' - call CheckHome('%USERPROFILE%\bar', 1) + let $HOME = '%USERPROFILE%\bar' + let $HOMEDRIVE = 'unused' + let $HOMEPATH = 'unused' + " call CheckHome('C:\foo\bar', '%USERPROFILE%\bar') - RestoreEnv - let $HOME = '%USERPROFILE' + " Invalid $HOME is kept let $USERPROFILE = 'C:\foo' - let $HOMEDRIVE = 'C:' - let $HOMEPATH = '\baz' - call CheckHome('%USERPROFILE', 1) + let $HOME = '%USERPROFILE' + let $HOMEDRIVE = 'unused' + let $HOMEPATH = 'unused' + call CheckHome('%USERPROFILE', '%USERPROFILE') - RestoreEnv + " %USERPROFILE% not at start of $HOME is not expanded + let $USERPROFILE = 'unused' let $HOME = 'C:\%USERPROFILE%' - let $USERPROFILE = 'C:\foo' - let $HOMEDRIVE = 'C:' - let $HOMEPATH = '\baz' - call CheckHome('C:\%USERPROFILE%', 1) + let $HOMEDRIVE = 'unused' + let $HOMEPATH = 'unused' + call CheckHome('C:\%USERPROFILE%', 'C:\%USERPROFILE%') if has('channel') RestoreEnv - UnletEnv $HOME + let $HOME = save_home let env = '' let job = job_start('cmd /c set', {'out_cb': {ch,x->[env,execute('let env=x')]}}) sleep 1 |