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 -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.