xref: /vim-8.2.3635/src/testdir/test_environ.vim (revision a5fe91e6)
16d91bcb4SBram Moolenaar" Test for environment variables.
26d91bcb4SBram Moolenaar
3691ddeefSBram Moolenaarscriptencoding utf-8
4691ddeefSBram Moolenaar
5*a5fe91e6SBram Moolenaarsource check.vim
6*a5fe91e6SBram Moolenaar
7691ddeefSBram Moolenaarfunc Test_environ()
8691ddeefSBram Moolenaar  unlet! $TESTENV
9691ddeefSBram Moolenaar  call assert_equal(0, has_key(environ(), 'TESTENV'))
10691ddeefSBram Moolenaar  let $TESTENV = 'foo'
11691ddeefSBram Moolenaar  call assert_equal(1, has_key(environ(), 'TESTENV'))
12691ddeefSBram Moolenaar  let $TESTENV = 'こんにちわ'
13691ddeefSBram Moolenaar  call assert_equal('こんにちわ', environ()['TESTENV'])
14691ddeefSBram Moolenaarendfunc
15691ddeefSBram Moolenaar
16691ddeefSBram Moolenaarfunc Test_getenv()
17691ddeefSBram Moolenaar  unlet! $TESTENV
184c313b13SBram Moolenaar  call assert_equal(v:null, 'TESTENV'->getenv())
19691ddeefSBram Moolenaar  let $TESTENV = 'foo'
20691ddeefSBram Moolenaar  call assert_equal('foo', getenv('TESTENV'))
21691ddeefSBram Moolenaarendfunc
22691ddeefSBram Moolenaar
23691ddeefSBram Moolenaarfunc Test_setenv()
24691ddeefSBram Moolenaar  unlet! $TESTENV
25196b4664SBram Moolenaar  eval 'foo'->setenv('TEST ENV')
26691ddeefSBram Moolenaar  call assert_equal('foo', getenv('TEST ENV'))
27691ddeefSBram Moolenaar  call setenv('TEST ENV', v:null)
28691ddeefSBram Moolenaar  call assert_equal(v:null, getenv('TEST ENV'))
29691ddeefSBram Moolenaarendfunc
30691ddeefSBram Moolenaar
31691ddeefSBram Moolenaarfunc Test_external_env()
32691ddeefSBram Moolenaar  call setenv('FOO', 'HelloWorld')
33691ddeefSBram Moolenaar  if has('win32')
34691ddeefSBram Moolenaar    let result = system('echo %FOO%')
35691ddeefSBram Moolenaar  else
36691ddeefSBram Moolenaar    let result = system('echo $FOO')
37691ddeefSBram Moolenaar  endif
38691ddeefSBram Moolenaar  let result = substitute(result, '[ \r\n]', '', 'g')
39691ddeefSBram Moolenaar  call assert_equal('HelloWorld', result)
40691ddeefSBram Moolenaar
41691ddeefSBram Moolenaar  call setenv('FOO', v:null)
42691ddeefSBram Moolenaar  if has('win32')
43c974022cSBram Moolenaar    let result = system('set | findstr "^FOO="')
44691ddeefSBram Moolenaar  else
45691ddeefSBram Moolenaar    let result = system('env | grep ^FOO=')
46691ddeefSBram Moolenaar  endif
47691ddeefSBram Moolenaar  call assert_equal('', result)
48691ddeefSBram Moolenaarendfunc
496d91bcb4SBram Moolenaar
50*a5fe91e6SBram Moolenaarfunc Test_mac_locale()
51*a5fe91e6SBram Moolenaar  CheckFeature osxdarwin
52*a5fe91e6SBram Moolenaar
53*a5fe91e6SBram Moolenaar  " If $LANG is not set then the system locale will be used.
54*a5fe91e6SBram Moolenaar  " Run Vim after unsetting all the locale environmental vars, and capture the
55*a5fe91e6SBram Moolenaar  " output of :lang.
56*a5fe91e6SBram Moolenaar  let lang_results = system("unset LANG; unset LC_MESSAGES; " ..
57*a5fe91e6SBram Moolenaar            \ shellescape(v:progpath) ..
58*a5fe91e6SBram Moolenaar            \ " --clean -esX -c 'redir @a' -c 'lang' -c 'put a' -c 'print' -c 'qa!' ")
59*a5fe91e6SBram Moolenaar
60*a5fe91e6SBram Moolenaar  " Check that:
61*a5fe91e6SBram Moolenaar  " 1. The locale is the form of <locale>.UTF-8.
62*a5fe91e6SBram Moolenaar  " 2. Check that fourth item (LC_NUMERIC) is properly set to "C".
63*a5fe91e6SBram Moolenaar  " Example match: "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
64*a5fe91e6SBram Moolenaar  call assert_match('"\([a-zA-Z_]\+\.UTF-8/\)\{3}C\(/[a-zA-Z_]\+\.UTF-8\)\{2}"',
65*a5fe91e6SBram Moolenaar        \ lang_results,
66*a5fe91e6SBram Moolenaar        \ "Default locale should have UTF-8 encoding set, and LC_NUMERIC set to 'C'")
67*a5fe91e6SBram Moolenaarendfunc
68*a5fe91e6SBram Moolenaar
696d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
70