Mercurial > vim
view src/testdir/test_windows_home.vim @ 30421:425b686c5244 v9.0.0546
patch 9.0.0546: supporting Ruby 1.8 makes code complicated
Commit: https://github.com/vim/vim/commit/236ccbf6f8a671a45b773de4b34558ecfdf9ac02
Author: K.Takata <kentkt@csc.jp>
Date: Thu Sep 22 16:12:06 2022 +0100
patch 9.0.0546: supporting Ruby 1.8 makes code complicated
Problem: Supporting Ruby 1.8 makes code complicated.
Solution: Drop Ruby 1.8 support, it is ancient. (Ken Takata, closes https://github.com/vim/vim/issues/11195)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 22 Sep 2022 17:15:03 +0200 |
parents | 08940efa6b4e |
children | 1ee567e88a22 |
line wrap: on
line source
" Test for $HOME on Windows. source check.vim CheckMSWindows let s:env = {} func s:restore_env() for i in keys(s:env) exe 'let ' . i . '=s:env["' . i . '"]' endfor endfunc func s:save_env(...) for i in a:000 exe 'let s:env["' . i . '"]=' . i endfor endfunc func s:unlet_env(...) for i in a:000 exe 'let ' . i . '=""' endfor endfunc func CheckHomeIsMissingFromSubprocessEnvironment() silent! let out = system('set') let env = filter(split(out, "\n"), 'v:val=~"^HOME="') call assert_equal(0, len(env)) endfunc func CheckHomeIsInSubprocessEnvironment(exp) silent! let out = system('set') let env = filter(split(out, "\n"), 'v:val=~"^HOME="') let home = len(env) == 0 ? "" : substitute(env[0], '[^=]\+=', '', '') call assert_equal(a:exp, home) endfunc func CheckHome(exp, ...) call assert_equal(a:exp, $HOME) call assert_equal(a:exp, expand('~', ':p')) if !a:0 call CheckHomeIsMissingFromSubprocessEnvironment() else call CheckHomeIsInSubprocessEnvironment(a:1) endif endfunc 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 let save_home = $HOME SaveEnv $USERPROFILE $HOMEDRIVE $HOMEPATH try " 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') " Same, but with $HOMEPATH not set UnletEnv $HOMEPATH let $HOME = '' " Force recomputing "homedir" call CheckHome('C:\') " Use $USERPROFILE if $HOMEPATH and $HOMEDRIVE are empty UnletEnv $HOMEDRIVE $HOMEPATH let $USERPROFILE = 'C:\foo' let $HOME = '' " Force recomputing "homedir" call CheckHome('C:\foo') " If $HOME is set the others don't matter let $HOME = 'C:\bar' let $USERPROFILE = 'unused' let $HOMEDRIVE = 'unused' let $HOMEPATH = 'unused' call CheckHome('C:\bar', 'C:\bar') " If $HOME contains %USERPROFILE% it is expanded let $USERPROFILE = 'C:\foo' let $HOME = '%USERPROFILE%\bar' let $HOMEDRIVE = 'unused' let $HOMEPATH = 'unused' call CheckHome('C:\foo\bar', '%USERPROFILE%\bar') " Invalid $HOME is kept let $USERPROFILE = 'C:\foo' let $HOME = '%USERPROFILE' let $HOMEDRIVE = 'unused' let $HOMEPATH = 'unused' call CheckHome('%USERPROFILE', '%USERPROFILE') " %USERPROFILE% not at start of $HOME is not expanded let $USERPROFILE = 'unused' let $HOME = 'C:\%USERPROFILE%' let $HOMEDRIVE = 'unused' let $HOMEPATH = 'unused' call CheckHome('C:\%USERPROFILE%', 'C:\%USERPROFILE%') if has('channel') RestoreEnv let $HOME = save_home let env = '' let job = job_start('cmd /c set', {'out_cb': {ch,x->[env,execute('let env=x')]}}) sleep 1 let env = filter(split(env, "\n"), 'v:val=="HOME"') let home = len(env) == 0 ? "" : env[0] call assert_equal('', home) endif finally RestoreEnv delcommand SaveEnv delcommand RestoreEnv delcommand UnletEnv endtry endfunc " vim: shiftwidth=2 sts=2 expandtab