From 67435d9983965c5c77fc74f0559779ce4554dacb Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 19 Oct 2017 21:04:37 +0200 Subject: patch 8.0.1207: profiling skips the first and last script line Problem: Profiling skips the first and last script line. Solution: Check for BOM after setting script ID. (Lemonboy, closes #2103, closes #2112) Add a test. List the trailing script lines. --- src/testdir/test_profile.vim | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/testdir') diff --git a/src/testdir/test_profile.vim b/src/testdir/test_profile.vim index f0ef923f3..ab39bcb64 100644 --- a/src/testdir/test_profile.vim +++ b/src/testdir/test_profile.vim @@ -115,7 +115,7 @@ func Test_profile_file() 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_equal(' func! Foo()', lines[6]) + call assert_match(' 2 0.\d\+ func! Foo()', lines[6]) call assert_equal(' endfunc', lines[7]) " Loop iterates 10 times. Since script runs twice, body executes 20 times. " First line of loop executes one more time than body to detect end of loop. @@ -132,6 +132,42 @@ func Test_profile_file() call delete('Xprofile_file.log') endfunc +func Test_profile_file_with_cont() + let lines = [ + \ 'echo "hello', + \ ' \ world"', + \ 'echo "foo ', + \ ' \bar"', + \ ] + + 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"' + \ . ' -c "qall!"') + call assert_equal(0, v:shell_error) + + 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') +endfunc + func Test_profile_completion() call feedkeys(":profile \\\"\", 'tx') call assert_equal('"profile continue file func pause start', @:) -- cgit v1.2.1