view src/testdir/test_environ.vim @ 33591:288da62613ba v9.0.2040

patch 9.0.2040: trim(): hard to use default mask Commit: https://github.com/vim/vim/commit/6e6386716f9494ae86027c6d34f657fd03dfec42 Author: Illia Bobyr <illia.bobyr@gmail.com> Date: Tue Oct 17 11:09:45 2023 +0200 patch 9.0.2040: trim(): hard to use default mask Problem: trim(): hard to use default mask Solution: Use default 'mask' when it is v:none The default 'mask' value is pretty complex, as it includes many characters. Yet, if one needs to specify the trimming direction, the third argument, 'trim()' currently requires the 'mask' value to be provided explicitly. 'v:none' is already used to mean "use the default argument value" in user defined functions. See |none-function_argument| in help. closes: #13363 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Illia Bobyr <illia.bobyr@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Tue, 17 Oct 2023 11:15:09 +0200
parents e3ab1d0f2ef9
children
line wrap: on
line source

" Test for environment variables.

scriptencoding utf-8

source check.vim

func Test_environ()
  unlet! $TESTENV
  call assert_equal(0, has_key(environ(), 'TESTENV'))
  let $TESTENV = 'foo'
  call assert_equal(1, has_key(environ(), 'TESTENV'))
  let $TESTENV = 'こんにちわ'
  call assert_equal('こんにちわ', environ()['TESTENV'])
endfunc

func Test_getenv()
  unlet! $TESTENV
  call assert_equal(v:null, 'TESTENV'->getenv())
  let $TESTENV = 'foo'
  call assert_equal('foo', getenv('TESTENV'))
endfunc

func Test_setenv()
  unlet! $TESTENV
  eval 'foo'->setenv('TEST ENV')
  call assert_equal('foo', getenv('TEST ENV'))
  call setenv('TEST ENV', v:null)
  call assert_equal(v:null, getenv('TEST ENV'))
endfunc

func Test_special_env()
  " The value for $HOME is cached internally by Vim, ensure the value is up to
  " date.
  let orig_ENV = $HOME

  let $HOME = 'foo'
  call assert_equal('foo', expand('~'))
  " old $HOME value is kept until a new one is set
  unlet $HOME
  call assert_equal('foo', expand('~'))

  call setenv('HOME', 'bar')
  call assert_equal('bar', expand('~'))
  " old $HOME value is kept until a new one is set
  call setenv('HOME', v:null)
  call assert_equal('bar', expand('~'))

  let $HOME = orig_ENV
endfunc

func Test_external_env()
  call setenv('FOO', 'HelloWorld')
  if has('win32')
    let result = system('echo %FOO%')
  else
    let result = system('echo $FOO')
  endif
  let result = substitute(result, '[ \r\n]', '', 'g')
  call assert_equal('HelloWorld', result)

  call setenv('FOO', v:null)
  if has('win32')
    let result = system('set | findstr "^FOO="')
  else
    let result = system('env | grep ^FOO=')
  endif
  call assert_equal('', result)
endfunc

func Test_mac_locale()
  CheckFeature osxdarwin

  " If $LANG is not set then the system locale will be used.
  " Run Vim after unsetting all the locale environmental vars, and capture the
  " output of :lang.
  let lang_results = system("unset LANG; unset LC_MESSAGES; unset LC_CTYPE; " ..
            \ shellescape(v:progpath) ..
            \ " --clean -esX -c 'redir @a' -c 'lang' -c 'put a' -c 'print' -c 'qa!' ")

  " Check that:
  " 1. The locale is the form of <locale>.UTF-8.
  " 2. Check that fourth item (LC_NUMERIC) is properly set to "C".
  " Example match: "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
  call assert_match('"\([a-zA-Z_]\+\.UTF-8/\)\{3}C\(/[a-zA-Z_]\+\.UTF-8\)\{2}"',
        \ lang_results,
        \ "Default locale should have UTF-8 encoding set, and LC_NUMERIC set to 'C'")
endfunc

" vim: shiftwidth=2 sts=2 expandtab