comparison src/testdir/test_profile.vim @ 23723:14e92f4c98c9 v8.2.2403

patch 8.2.2403: Vim9: profiling if/elseif/endif not correct Commit: https://github.com/vim/vim/commit/ced68a0070dac059fc978a1a99e2893edf158116 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 24 17:53:47 2021 +0100 patch 8.2.2403: Vim9: profiling if/elseif/endif not correct Problem: Vim9: profiling if/elseif/endif not correct. Solution: Add profile instructions. Fix that "elseif" was wrong.
author Bram Moolenaar <Bram@vim.org>
date Sun, 24 Jan 2021 18:00:04 +0100
parents e3720756acdc
children f98692ae09a0
comparison
equal deleted inserted replaced
23722:a889925d20fd 23723:14e92f4c98c9
98 call delete('Xprofile_func.vim') 98 call delete('Xprofile_func.vim')
99 call delete('Xprofile_func.log') 99 call delete('Xprofile_func.log')
100 endfunc 100 endfunc
101 101
102 func Test_profile_func_with_ifelse() 102 func Test_profile_func_with_ifelse()
103 call Run_profile_func_with_ifelse('func', 'let', 'let')
104 call Run_profile_func_with_ifelse('def', 'var', '')
105 endfunc
106
107 func Run_profile_func_with_ifelse(command, declare, assign)
103 let lines =<< trim [CODE] 108 let lines =<< trim [CODE]
104 func! Foo1() 109 XXX Foo1()
105 if 1 110 if 1
106 let x = 0 111 DDD x = 0
107 elseif 1 112 elseif 1
108 let x = 1 113 DDD x = 1
109 else 114 else
110 let x = 2 115 DDD x = 2
111 endif 116 endif
112 endfunc 117 endXXX
113 func! Foo2() 118 XXX Foo2()
114 if 0 119 if 0
115 let x = 0 120 DDD x = 0
116 elseif 1 121 elseif 1
117 let x = 1 122 DDD x = 1
118 else 123 else
119 let x = 2 124 DDD x = 2
120 endif 125 endif
121 endfunc 126 endXXX
122 func! Foo3() 127 XXX Foo3()
123 if 0 128 if 0
124 let x = 0 129 DDD x = 0
125 elseif 0 130 elseif 0
126 let x = 1 131 DDD x = 1
127 else 132 else
128 let x = 2 133 DDD x = 2
129 endif 134 endif
130 endfunc 135 endXXX
131 call Foo1() 136 call Foo1()
132 call Foo2() 137 call Foo2()
133 call Foo3() 138 call Foo3()
134 [CODE] 139 [CODE]
140
141 call map(lines, {k, v -> substitute(v, 'XXX', a:command, '') })
142 call map(lines, {k, v -> substitute(v, 'DDD', a:declare, '') })
143 call map(lines, {k, v -> substitute(v, 'AAA', a:assign, '') })
135 144
136 call writefile(lines, 'Xprofile_func.vim') 145 call writefile(lines, 'Xprofile_func.vim')
137 call system(GetVimCommand() 146 call system(GetVimCommand()
138 \ . ' -es -i NONE --noplugin' 147 \ . ' -es -i NONE --noplugin'
139 \ . ' -c "profile start Xprofile_func.log"' 148 \ . ' -c "profile start Xprofile_func.log"'
155 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[3]) 164 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[3])
156 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[4]) 165 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[4])
157 call assert_equal('', lines[5]) 166 call assert_equal('', lines[5])
158 call assert_equal('count total (s) self (s)', lines[6]) 167 call assert_equal('count total (s) self (s)', lines[6])
159 call assert_match('^\s*1\s\+.*\sif 1$', lines[7]) 168 call assert_match('^\s*1\s\+.*\sif 1$', lines[7])
160 call assert_match('^\s*1\s\+.*\s let x = 0$', lines[8]) 169 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 0$', lines[8])
161 call assert_match( '^\s\+elseif 1$', lines[9]) 170 call assert_match( '^\s\+elseif 1$', lines[9])
162 call assert_match( '^\s\+let x = 1$', lines[10]) 171 call assert_match( '^\s\+\(let\|var\) x = 1$', lines[10])
163 call assert_match( '^\s\+else$', lines[11]) 172 call assert_match( '^\s\+else$', lines[11])
164 call assert_match( '^\s\+let x = 2$', lines[12]) 173 call assert_match( '^\s\+\(let\|var\) x = 2$', lines[12])
165 call assert_match('^\s*1\s\+.*\sendif$', lines[13]) 174 call assert_match('^\s*1\s\+.*\sendif$', lines[13])
166 call assert_equal('', lines[14]) 175 call assert_equal('', lines[14])
167 call assert_equal('FUNCTION Foo2()', lines[15]) 176 call assert_equal('FUNCTION Foo2()', lines[15])
168 call assert_equal('Called 1 time', lines[17]) 177 call assert_equal('Called 1 time', lines[17])
169 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[18]) 178 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[18])
170 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[19]) 179 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[19])
171 call assert_equal('', lines[20]) 180 call assert_equal('', lines[20])
172 call assert_equal('count total (s) self (s)', lines[21]) 181 call assert_equal('count total (s) self (s)', lines[21])
173 call assert_match('^\s*1\s\+.*\sif 0$', lines[22]) 182 call assert_match('^\s*1\s\+.*\sif 0$', lines[22])
174 call assert_match( '^\s\+let x = 0$', lines[23]) 183 call assert_match( '^\s\+\(let\|var\) x = 0$', lines[23])
175 call assert_match('^\s*1\s\+.*\selseif 1$', lines[24]) 184 call assert_match('^\s*1\s\+.*\selseif 1$', lines[24])
176 call assert_match('^\s*1\s\+.*\s let x = 1$', lines[25]) 185 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 1$', lines[25])
177 call assert_match( '^\s\+else$', lines[26]) 186 call assert_match( '^\s\+else$', lines[26])
178 call assert_match( '^\s\+let x = 2$', lines[27]) 187 call assert_match( '^\s\+\(let\|var\) x = 2$', lines[27])
179 call assert_match('^\s*1\s\+.*\sendif$', lines[28]) 188 call assert_match('^\s*1\s\+.*\sendif$', lines[28])
180 call assert_equal('', lines[29]) 189 call assert_equal('', lines[29])
181 call assert_equal('FUNCTION Foo3()', lines[30]) 190 call assert_equal('FUNCTION Foo3()', lines[30])
182 call assert_equal('Called 1 time', lines[32]) 191 call assert_equal('Called 1 time', lines[32])
183 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[33]) 192 call assert_match('^Total time:\s\+\d\+\.\d\+$', lines[33])
184 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[34]) 193 call assert_match('^ Self time:\s\+\d\+\.\d\+$', lines[34])
185 call assert_equal('', lines[35]) 194 call assert_equal('', lines[35])
186 call assert_equal('count total (s) self (s)', lines[36]) 195 call assert_equal('count total (s) self (s)', lines[36])
187 call assert_match('^\s*1\s\+.*\sif 0$', lines[37]) 196 call assert_match('^\s*1\s\+.*\sif 0$', lines[37])
188 call assert_match( '^\s\+let x = 0$', lines[38]) 197 call assert_match( '^\s\+\(let\|var\) x = 0$', lines[38])
189 call assert_match('^\s*1\s\+.*\selseif 0$', lines[39]) 198 call assert_match('^\s*1\s\+.*\selseif 0$', lines[39])
190 call assert_match( '^\s\+let x = 1$', lines[40]) 199 call assert_match( '^\s\+\(let\|var\) x = 1$', lines[40])
191 call assert_match('^\s*1\s\+.*\selse$', lines[41]) 200 call assert_match('^\s*1\s\+.*\selse$', lines[41])
192 call assert_match('^\s*1\s\+.*\s let x = 2$', lines[42]) 201 call assert_match('^\s*1\s\+.*\s \(let\|var\) x = 2$', lines[42])
193 call assert_match('^\s*1\s\+.*\sendif$', lines[43]) 202 call assert_match('^\s*1\s\+.*\sendif$', lines[43])
194 call assert_equal('', lines[44]) 203 call assert_equal('', lines[44])
195 call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[45]) 204 call assert_equal('FUNCTIONS SORTED ON TOTAL TIME', lines[45])
196 call assert_equal('count total (s) self (s) function', lines[46]) 205 call assert_equal('count total (s) self (s) function', lines[46])
197 call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[47]) 206 call assert_match('^\s*1\s\+\d\+\.\d\+\s\+Foo.()$', lines[47])