]> granicus.if.org Git - vim/commitdiff
patch 8.1.0131: :profdel is not tested v8.1.0131
authorBram Moolenaar <Bram@vim.org>
Sat, 30 Jun 2018 19:18:13 +0000 (21:18 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 30 Jun 2018 19:18:13 +0000 (21:18 +0200)
Problem:    :profdel is not tested.
Solution:   Add a test. (Dominique Pelle, closes #3123)

src/testdir/test_profile.vim
src/version.c

index ee617760f8105b39d748c92a3465e3e29529017e..6c24d31100fd9e177e7f4101192087e94f8db95f 100644 (file)
@@ -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
index bc3d06a3219d13ad2c5d7ce40a0f0b8fbd7d5b63..0efebc67a673b970f75dfe80b5661ecec9d36bc0 100644 (file)
@@ -789,6 +789,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    131,
 /**/
     130,
 /**/