Bram Moolenaar | 6d91bcb | 2020-08-12 18:50:36 +0200 | [diff] [blame] | 1 | " Test for environment variables. |
| 2 | |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 3 | scriptencoding utf-8 |
| 4 | |
Bram Moolenaar | a5fe91e | 2020-09-27 16:03:15 +0200 | [diff] [blame] | 5 | source check.vim |
| 6 | |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 7 | func Test_environ() |
| 8 | unlet! $TESTENV |
| 9 | call assert_equal(0, has_key(environ(), 'TESTENV')) |
| 10 | let $TESTENV = 'foo' |
| 11 | call assert_equal(1, has_key(environ(), 'TESTENV')) |
| 12 | let $TESTENV = 'こんにちわ' |
| 13 | call assert_equal('こんにちわ', environ()['TESTENV']) |
| 14 | endfunc |
| 15 | |
| 16 | func Test_getenv() |
| 17 | unlet! $TESTENV |
Bram Moolenaar | 4c313b1 | 2019-08-24 22:58:31 +0200 | [diff] [blame] | 18 | call assert_equal(v:null, 'TESTENV'->getenv()) |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 19 | let $TESTENV = 'foo' |
| 20 | call assert_equal('foo', getenv('TESTENV')) |
| 21 | endfunc |
| 22 | |
| 23 | func Test_setenv() |
| 24 | unlet! $TESTENV |
Bram Moolenaar | 196b466 | 2019-09-06 21:34:30 +0200 | [diff] [blame] | 25 | eval 'foo'->setenv('TEST ENV') |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 26 | call assert_equal('foo', getenv('TEST ENV')) |
| 27 | call setenv('TEST ENV', v:null) |
| 28 | call assert_equal(v:null, getenv('TEST ENV')) |
| 29 | endfunc |
| 30 | |
LemonBoy | 7714231 | 2022-04-15 20:50:46 +0100 | [diff] [blame] | 31 | func Test_special_env() |
| 32 | " The value for $HOME is cached internally by Vim, ensure the value is up to |
| 33 | " date. |
| 34 | let orig_ENV = $HOME |
| 35 | |
| 36 | let $HOME = 'foo' |
| 37 | call assert_equal('foo', expand('~')) |
| 38 | " old $HOME value is kept until a new one is set |
| 39 | unlet $HOME |
| 40 | call assert_equal('foo', expand('~')) |
| 41 | |
| 42 | call setenv('HOME', 'bar') |
| 43 | call assert_equal('bar', expand('~')) |
| 44 | " old $HOME value is kept until a new one is set |
| 45 | call setenv('HOME', v:null) |
| 46 | call assert_equal('bar', expand('~')) |
| 47 | |
| 48 | let $HOME = orig_ENV |
| 49 | endfunc |
| 50 | |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 51 | func Test_external_env() |
| 52 | call setenv('FOO', 'HelloWorld') |
| 53 | if has('win32') |
| 54 | let result = system('echo %FOO%') |
| 55 | else |
| 56 | let result = system('echo $FOO') |
| 57 | endif |
| 58 | let result = substitute(result, '[ \r\n]', '', 'g') |
| 59 | call assert_equal('HelloWorld', result) |
| 60 | |
| 61 | call setenv('FOO', v:null) |
| 62 | if has('win32') |
Bram Moolenaar | c974022 | 2019-06-04 08:22:53 +0200 | [diff] [blame] | 63 | let result = system('set | findstr "^FOO="') |
Bram Moolenaar | 691ddee | 2019-05-09 14:52:41 +0200 | [diff] [blame] | 64 | else |
| 65 | let result = system('env | grep ^FOO=') |
| 66 | endif |
| 67 | call assert_equal('', result) |
| 68 | endfunc |
Bram Moolenaar | 6d91bcb | 2020-08-12 18:50:36 +0200 | [diff] [blame] | 69 | |
Bram Moolenaar | a5fe91e | 2020-09-27 16:03:15 +0200 | [diff] [blame] | 70 | func Test_mac_locale() |
| 71 | CheckFeature osxdarwin |
| 72 | |
| 73 | " If $LANG is not set then the system locale will be used. |
| 74 | " Run Vim after unsetting all the locale environmental vars, and capture the |
| 75 | " output of :lang. |
| 76 | let lang_results = system("unset LANG; unset LC_MESSAGES; " .. |
| 77 | \ shellescape(v:progpath) .. |
| 78 | \ " --clean -esX -c 'redir @a' -c 'lang' -c 'put a' -c 'print' -c 'qa!' ") |
| 79 | |
| 80 | " Check that: |
| 81 | " 1. The locale is the form of <locale>.UTF-8. |
| 82 | " 2. Check that fourth item (LC_NUMERIC) is properly set to "C". |
| 83 | " Example match: "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8" |
| 84 | call assert_match('"\([a-zA-Z_]\+\.UTF-8/\)\{3}C\(/[a-zA-Z_]\+\.UTF-8\)\{2}"', |
| 85 | \ lang_results, |
| 86 | \ "Default locale should have UTF-8 encoding set, and LC_NUMERIC set to 'C'") |
| 87 | endfunc |
| 88 | |
Bram Moolenaar | 6d91bcb | 2020-08-12 18:50:36 +0200 | [diff] [blame] | 89 | " vim: shiftwidth=2 sts=2 expandtab |