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