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:
|
" For csh:
|
||||||
" setenv TEST_FILTER Test_channel
|
" 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:
|
" While working on a test you can make $TEST_NO_RETRY non-empty to not retry:
|
||||||
" export TEST_NO_RETRY=yes
|
" export TEST_NO_RETRY=yes
|
||||||
"
|
"
|
||||||
@ -329,13 +332,17 @@ func FinishTesting()
|
|||||||
|
|
||||||
if s:done == 0
|
if s:done == 0
|
||||||
if s:filtered > 0
|
if s:filtered > 0
|
||||||
|
if $TEST_FILTER != ''
|
||||||
let message = "NO tests match $TEST_FILTER: '" .. $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
|
else
|
||||||
let message = 'NO tests executed'
|
let message = 'NO tests executed'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if s:filtered > 0
|
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
|
endif
|
||||||
let message = 'Executed ' . s:done . (s:done > 1 ? ' tests' : ' test')
|
let message = 'Executed ' . s:done . (s:done > 1 ? ' tests' : ' test')
|
||||||
endif
|
endif
|
||||||
@ -461,6 +468,12 @@ endif
|
|||||||
|
|
||||||
" Execute the tests in alphabetical order.
|
" Execute the tests in alphabetical order.
|
||||||
for g:testfunc in sort(s:tests)
|
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!
|
" Silence, please!
|
||||||
set belloff=all
|
set belloff=all
|
||||||
let prev_error = ''
|
let prev_error = ''
|
||||||
|
@ -2832,16 +2832,49 @@ def Test_expr7_namespace()
|
|||||||
assert_equal('some', get(t:, 'some_var', 'xxx'))
|
assert_equal('some', get(t:, 'some_var', 'xxx'))
|
||||||
assert_equal('xxx', get(t:, 'no_var', 'xxx'))
|
assert_equal('xxx', get(t:, 'no_var', 'xxx'))
|
||||||
unlet t:some_var
|
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
|
END
|
||||||
CheckDefAndScriptSuccess(lines)
|
CheckDefAndScriptSuccess(lines)
|
||||||
enddef
|
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()
|
def Test_expr7_parens()
|
||||||
# (expr)
|
# (expr)
|
||||||
var lines =<< trim END
|
var lines =<< trim END
|
||||||
|
@ -755,6 +755,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
3311,
|
||||||
/**/
|
/**/
|
||||||
3310,
|
3310,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user