Mercurial > vim
view src/testdir/test_expand_func.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 | dbec60b8c253 |
children |
line wrap: on
line source
" Tests for expand() source shared.vim let s:sfile = expand('<sfile>') let s:slnum = str2nr(expand('<slnum>')) let s:sflnum = str2nr(expand('<sflnum>')) func s:expand_sfile() return expand('<sfile>') endfunc func s:expand_slnum() return str2nr(expand('<slnum>')) endfunc func s:expand_sflnum() return str2nr(expand('<sflnum>')) endfunc " This test depends on the location in the test file, put it first. func Test_expand_sflnum() call assert_equal(7, s:sflnum) call assert_equal(24, str2nr(expand('<sflnum>'))) " Line-continuation call assert_equal( \ 27, \ str2nr(expand('<sflnum>'))) " Call in script-local function call assert_equal(18, s:expand_sflnum()) " Call in command command Flnum echo expand('<sflnum>') call assert_equal(36, str2nr(trim(execute('Flnum')))) delcommand Flnum endfunc func Test_expand_sfile_and_stack() call assert_match('test_expand_func\.vim$', s:sfile) let expected = 'script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack' call assert_match(expected .. '$', expand('<sfile>')) call assert_match(expected .. '\[4\]$' , expand('<stack>')) " Call in script-local function call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack\[7\]\.\.<SNR>\d\+_expand_sfile$', s:expand_sfile()) " Call in command command Sfile echo expand('<sfile>') call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack$', trim(execute('Sfile'))) delcommand Sfile " Use <stack> from sourced script. let lines =<< trim END " comment here let g:stack_value = expand('<stack>') END call writefile(lines, 'Xstack', 'D') source Xstack call assert_match('\<Xstack\[2\]$', g:stack_value) unlet g:stack_value if exists('+shellslash') call mkdir('Xshellslash', 'R') let lines =<< trim END let g:stack1 = expand('<stack>') set noshellslash let g:stack2 = expand('<stack>') set shellslash let g:stack3 = expand('<stack>') END call writefile(lines, 'Xshellslash/Xstack') " Test that changing 'shellslash' always affects the result of expand() " when sourcing a script multiple times. for i in range(2) source Xshellslash/Xstack call assert_match('\<Xshellslash/Xstack\[1\]$', g:stack1) call assert_match('\<Xshellslash\\Xstack\[3\]$', g:stack2) call assert_match('\<Xshellslash/Xstack\[5\]$', g:stack3) unlet g:stack1 unlet g:stack2 unlet g:stack3 endfor endif endfunc func Test_expand_slnum() call assert_equal(6, s:slnum) call assert_equal(2, str2nr(expand('<slnum>'))) " Line-continuation call assert_equal( \ 5, \ str2nr(expand('<slnum>'))) " Call in script-local function call assert_equal(1, s:expand_slnum()) " Call in command command Slnum echo expand('<slnum>') call assert_equal(14, str2nr(trim(execute('Slnum')))) delcommand Slnum endfunc func Test_expand() new call assert_equal("", expand('%:S')) call assert_equal('3', '<slnum>'->expand()) call assert_equal(['4'], expand('<slnum>', v:false, v:true)) " Don't add any line above this, otherwise <slnum> will change. call assert_equal("", expand('%')) set verbose=1 call assert_equal("", expand('%')) set verbose=0 call assert_equal("", expand('%:p')) quit endfunc func s:sid_test() return 'works' endfunc func Test_expand_SID() let sid = expand('<SID>') execute 'let g:sid_result = ' .. sid .. 'sid_test()' call assert_equal('works', g:sid_result) endfunc " Test for 'wildignore' with expand() func Test_expand_wildignore() set wildignore=*.vim call assert_equal('', expand('test_expand_func.vim')) call assert_equal('', expand('test_expand_func.vim', 0)) call assert_equal([], expand('test_expand_func.vim', 0, 1)) call assert_equal('test_expand_func.vim', expand('test_expand_func.vim', 1)) call assert_equal(['test_expand_func.vim'], \ expand('test_expand_func.vim', 1, 1)) call assert_fails("call expand('*', [])", 'E745:') set wildignore& endfunc " vim: shiftwidth=2 sts=2 expandtab