summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-06-30 21:18:13 +0200
committerBram Moolenaar <Bram@vim.org>2018-06-30 21:18:13 +0200
commit1fbfe7c48cb711f5a6deae535b3ec3bfe7952ce9 (patch)
tree0fdb61cdefa797b72789e678edaf4a21e769554c
parentad6480961080f80a455b2394f27b02935a2ded52 (diff)
downloadvim-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.vim100
-rw-r--r--src/version.c2
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,