diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-06-30 21:18:13 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-06-30 21:18:13 +0200 |
commit | 1fbfe7c48cb711f5a6deae535b3ec3bfe7952ce9 (patch) | |
tree | 0fdb61cdefa797b72789e678edaf4a21e769554c | |
parent | ad6480961080f80a455b2394f27b02935a2ded52 (diff) | |
download | vim-1fbfe7c48cb711f5a6deae535b3ec3bfe7952ce9.zip |
patch 8.1.0131: :profdel is not tested
Problem: :profdel is not tested.
Solution: Add a test. (Dominique Pelle, closes #3123)
-rw-r--r-- | src/testdir/test_profile.vim | 100 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 87 insertions, 15 deletions
diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim index ee617760f..6c24d3110 100644 --- a/src/testdir/test_profile.vim +++ b/src/testdir/test_profile.vim @@ -5,6 +5,8 @@ endif func Test_profile_func() let lines = [ + \ 'profile start Xprofile_func.log', + \ 'profile func Foo*"', \ "func! Foo1()", \ "endfunc", \ "func! Foo2()", @@ -33,9 +35,7 @@ func Test_profile_func() call writefile(lines, 'Xprofile_func.vim') call system(v:progpath - \ . ' -es -u NONE -U NONE -i NONE --noplugin' - \ . ' -c "profile start Xprofile_func.log"' - \ . ' -c "profile func Foo*"' + \ . ' -es --clean' \ . ' -c "so Xprofile_func.vim"' \ . ' -c "qall!"') call assert_equal(0, v:shell_error) @@ -97,7 +97,7 @@ func Test_profile_file() call writefile(lines, 'Xprofile_file.vim') call system(v:progpath - \ . ' -es -u NONE -U NONE -i NONE --noplugin' + \ . ' -es --clean' \ . ' -c "profile start Xprofile_file.log"' \ . ' -c "profile file Xprofile_file.vim"' \ . ' -c "so Xprofile_file.vim"' @@ -152,17 +152,17 @@ func Test_profile_file_with_cont() let lines = readfile('Xprofile_file.log') call assert_equal(11, len(lines)) - call assert_match('^SCRIPT .*Xprofile_file.vim$', lines[0]) - call assert_equal('Sourced 1 time', lines[1]) - call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[2]) - call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[3]) - call assert_equal('', lines[4]) - call assert_equal('count total (s) self (s)', lines[5]) - call assert_match(' 1 0.\d\+ echo "hello', lines[6]) - call assert_equal(' \ world"', lines[7]) - call assert_match(' 1 0.\d\+ echo "foo ', lines[8]) - call assert_equal(' \bar"', lines[9]) - call assert_equal('', lines[10]) + call assert_match('^SCRIPT .*Xprofile_file.vim$', lines[0]) + call assert_equal('Sourced 1 time', lines[1]) + call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[2]) + call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[3]) + call assert_equal('', lines[4]) + call assert_equal('count total (s) self (s)', lines[5]) + call assert_match(' 1 0.\d\+ echo "hello', lines[6]) + call assert_equal(' \ world"', lines[7]) + call assert_match(' 1 0.\d\+ echo "foo ', lines[8]) + call assert_equal(' \bar"', lines[9]) + call assert_equal('', lines[10]) call delete('Xprofile_file.vim') call delete('Xprofile_file.log') @@ -222,3 +222,73 @@ func Test_profile_truncate_mbyte() call delete('Xprofile_file.vim') call delete('Xprofile_file.log') endfunc + +func Test_profdel_func() + let lines = [ + \ 'profile start Xprofile_file.log', + \ 'func! Foo1()', + \ 'endfunc', + \ 'func! Foo2()', + \ 'endfunc', + \ 'func! Foo3()', + \ 'endfunc', + \ '', + \ 'profile func Foo1', + \ 'profile func Foo2', + \ 'call Foo1()', + \ 'call Foo2()', + \ '', + \ 'profile func Foo3', + \ 'profdel func Foo2', + \ 'profdel func Foo3', + \ 'call Foo1()', + \ 'call Foo2()', + \ 'call Foo3()' ] + call writefile(lines, 'Xprofile_file.vim') + call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q') + call assert_equal(0, v:shell_error) + + let lines = readfile('Xprofile_file.log') + call assert_equal(24, len(lines)) + + " Check that: + " - Foo1() is called twice (profdel not invoked) + " - Foo2() is called once (profdel invoked after it was called) + " - Foo3() is not called (profdel invoked before it was called) + call assert_equal('FUNCTION Foo1()', lines[0]) + call assert_equal('Called 2 times', lines[1]) + call assert_equal('FUNCTION Foo2()', lines[7]) + call assert_equal('Called 1 time', lines[8]) + call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[14]) + call assert_equal('FUNCTIONS SORTED ON SELF TIME', lines[19]) + + call delete('Xprofile_file.vim') + call delete('Xprofile_file.log') +endfunc + +func Test_profdel_star() + " Foo() is invoked once before and once after 'profdel *'. + " So profiling should report it only once. + let lines = [ + \ 'profile start Xprofile_file.log', + \ 'func! Foo()', + \ 'endfunc', + \ 'profile func Foo', + \ 'call Foo()', + \ 'profdel *', + \ 'call Foo()' ] + call writefile(lines, 'Xprofile_file.vim') + call system(v:progpath . ' -es --clean -c "so Xprofile_file.vim" -c q') + call assert_equal(0, v:shell_error) + + let lines = readfile('Xprofile_file.log') + call assert_equal(15, len(lines)) + + call assert_equal('FUNCTION Foo()', lines[0]) + call assert_equal('Called 1 time', lines[1]) + call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[7]) + call assert_equal('FUNCTIONS SORTED ON SELF TIME', lines[11]) + + call delete('Xprofile_file.vim') + call delete('Xprofile_file.log') +endfunc diff --git a/src/version.c b/src/version.c index bc3d06a32..0efebc67a 100644 --- a/src/version.c +++ b/src/version.c @@ -790,6 +790,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 131, +/**/ 130, /**/ 129, |