To: vim_dev@googlegroups.com Subject: Patch 8.1.0131 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.0131 Problem: :profdel is not tested. Solution: Add a test. (Dominique Pelle, closes #3123) Files: src/testdir/test_profile.vim *** ../vim-8.1.0130/src/testdir/test_profile.vim 2017-12-05 16:42:08.000000000 +0100 --- src/testdir/test_profile.vim 2018-06-30 21:16:50.974593817 +0200 *************** *** 5,10 **** --- 5,12 ---- func Test_profile_func() let lines = [ + \ 'profile start Xprofile_func.log', + \ 'profile func Foo*"', \ "func! Foo1()", \ "endfunc", \ "func! Foo2()", *************** *** 33,41 **** 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*"' \ . ' -c "so Xprofile_func.vim"' \ . ' -c "qall!"') call assert_equal(0, v:shell_error) --- 35,41 ---- call writefile(lines, 'Xprofile_func.vim') call system(v:progpath ! \ . ' -es --clean' \ . ' -c "so Xprofile_func.vim"' \ . ' -c "qall!"') call assert_equal(0, v:shell_error) *************** *** 97,103 **** call writefile(lines, 'Xprofile_file.vim') call system(v:progpath ! \ . ' -es -u NONE -U NONE -i NONE --noplugin' \ . ' -c "profile start Xprofile_file.log"' \ . ' -c "profile file Xprofile_file.vim"' \ . ' -c "so Xprofile_file.vim"' --- 97,103 ---- call writefile(lines, 'Xprofile_file.vim') call system(v:progpath ! \ . ' -es --clean' \ . ' -c "profile start Xprofile_file.log"' \ . ' -c "profile file Xprofile_file.vim"' \ . ' -c "so Xprofile_file.vim"' *************** *** 152,168 **** 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 delete('Xprofile_file.vim') call delete('Xprofile_file.log') --- 152,168 ---- 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 delete('Xprofile_file.vim') call delete('Xprofile_file.log') *************** *** 221,224 **** --- 221,294 ---- 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 *** ../vim-8.1.0130/src/version.c 2018-06-30 18:27:59.901025116 +0200 --- src/version.c 2018-06-30 21:16:22.754692467 +0200 *************** *** 791,792 **** --- 791,794 ---- { /* Add new patch number below this line */ + /**/ + 131, /**/ -- hundred-and-one symptoms of being an internet addict: 154. You fondle your mouse. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///