mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.3311: Vim9: check for DO_NOT_FREE_CNT is very slow
Problem: Vim9: check for DO_NOT_FREE_CNT is very slow. Solution: Move to a separate function so it can be skipped by setting $TEST_SKIP_PAT.
This commit is contained in:
parent
4270d8b762
commit
dae453f339
@ -13,6 +13,9 @@
|
||||
" For csh:
|
||||
" setenv TEST_FILTER Test_channel
|
||||
"
|
||||
" If the environment variable $TEST_SKIP_PAT is set then test functions
|
||||
" matching this pattern will be skipped. It's the opposite of $TEST_FILTER.
|
||||
"
|
||||
" While working on a test you can make $TEST_NO_RETRY non-empty to not retry:
|
||||
" export TEST_NO_RETRY=yes
|
||||
"
|
||||
@ -329,13 +332,17 @@ func FinishTesting()
|
||||
|
||||
if s:done == 0
|
||||
if s:filtered > 0
|
||||
if $TEST_FILTER != ''
|
||||
let message = "NO tests match $TEST_FILTER: '" .. $TEST_FILTER .. "'"
|
||||
else
|
||||
let message = "ALL tests match $TEST_SKIP_PAT: '" .. $TEST_SKIP_PAT .. "'"
|
||||
endif
|
||||
else
|
||||
let message = 'NO tests executed'
|
||||
endif
|
||||
else
|
||||
if s:filtered > 0
|
||||
call add(s:messages, "Filtered " .. s:filtered .. " tests with $TEST_FILTER")
|
||||
call add(s:messages, "Filtered " .. s:filtered .. " tests with $TEST_FILTER and $TEST_SKIP_PAT")
|
||||
endif
|
||||
let message = 'Executed ' . s:done . (s:done > 1 ? ' tests' : ' test')
|
||||
endif
|
||||
@ -461,6 +468,12 @@ endif
|
||||
|
||||
" Execute the tests in alphabetical order.
|
||||
for g:testfunc in sort(s:tests)
|
||||
if $TEST_SKIP_PAT != '' && g:testfunc =~ $TEST_SKIP_PAT
|
||||
call add(s:messages, g:testfunc .. ' matches $TEST_SKIP_PAT')
|
||||
let s:filtered += 1
|
||||
continue
|
||||
endif
|
||||
|
||||
" Silence, please!
|
||||
set belloff=all
|
||||
let prev_error = ''
|
||||
|
@ -2832,16 +2832,49 @@ def Test_expr7_namespace()
|
||||
assert_equal('some', get(t:, 'some_var', 'xxx'))
|
||||
assert_equal('xxx', get(t:, 'no_var', 'xxx'))
|
||||
unlet t:some_var
|
||||
|
||||
# check using g: in a for loop more than DO_NOT_FREE_CNT times
|
||||
for i in range(100000)
|
||||
if has_key(g:, 'does-not-exist')
|
||||
endif
|
||||
endfor
|
||||
END
|
||||
CheckDefAndScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_expr7_namespace_loop_def()
|
||||
var lines =<< trim END
|
||||
# check using g: in a for loop more than DO_NOT_FREE_CNT times
|
||||
var exists = 0
|
||||
var exists_not = 0
|
||||
for i in range(100000)
|
||||
if has_key(g:, 'does-not-exist')
|
||||
exists += 1
|
||||
else
|
||||
exists_not += 1
|
||||
endif
|
||||
endfor
|
||||
assert_equal(0, exists)
|
||||
assert_equal(100000, exists_not)
|
||||
END
|
||||
CheckDefSuccess(lines)
|
||||
enddef
|
||||
|
||||
" NOTE: this is known to be slow. To skip use:
|
||||
" :let $TEST_SKIP_PAT = 'Test_expr7_namespace_loop_script'
|
||||
def Test_expr7_namespace_loop_script()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
# check using g: in a for loop more than DO_NOT_FREE_CNT times
|
||||
var exists = 0
|
||||
var exists_not = 0
|
||||
for i in range(100000)
|
||||
if has_key(g:, 'does-not-exist')
|
||||
exists += 1
|
||||
else
|
||||
exists_not += 1
|
||||
endif
|
||||
endfor
|
||||
assert_equal(0, exists)
|
||||
assert_equal(100000, exists_not)
|
||||
END
|
||||
CheckScriptSuccess(lines)
|
||||
enddef
|
||||
|
||||
def Test_expr7_parens()
|
||||
# (expr)
|
||||
var lines =<< trim END
|
||||
|
@ -755,6 +755,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
3311,
|
||||
/**/
|
||||
3310,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user