command_count_spec.lua (6804B)
1 -- Test for user command counts 2 3 local n = require('test.functional.testnvim')() 4 5 local clear, source, expect = n.clear, n.source, n.expect 6 local feed_command = n.feed_command 7 8 -- luacheck: ignore 613 (Trailing whitespace in a string) 9 describe('command_count', function() 10 it('is working', function() 11 -- It is relevant for the test to load a file initially. If this is 12 -- emulated with :arg the buffer count is wrong as nvim creates an empty 13 -- buffer if it was started without a filename. 14 clear('test_command_count.in') 15 16 source([[ 17 let g:tmpname = tempname() 18 call mkdir(g:tmpname) 19 execute "cd ".g:tmpname 20 lang C 21 let g:lines = [] 22 com -range=% RangeLines 23 \ :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) 24 com -range -addr=arguments RangeArguments 25 \ :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) 26 com -range=% -addr=arguments RangeArgumentsAll 27 \ :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) 28 com -range -addr=loaded_buffers RangeLoadedBuffers 29 \ :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>) 30 com -range=% -addr=loaded_buffers RangeLoadedBuffersAll 31 \ :call add(g:lines, 'RangeLoadedBuffersAll '.<line1>.' '.<line2>) 32 com -range -addr=buffers RangeBuffers 33 \ :call add(g:lines, 'RangeBuffers '.<line1>.' '.<line2>) 34 com -range=% -addr=buffers RangeBuffersAll 35 \ :call add(g:lines, 'RangeBuffersAll '.<line1>.' '.<line2>) 36 com -range -addr=windows RangeWindows 37 \ :call add(g:lines, 'RangeWindows '.<line1>.' '.<line2>) 38 com -range=% -addr=windows RangeWindowsAll 39 \ :call add(g:lines, 'RangeWindowsAll '.<line1>.' '.<line2>) 40 com -range -addr=tabs RangeTabs 41 \ :call add(g:lines, 'RangeTabs '.<line1>.' '.<line2>) 42 com -range=% -addr=tabs RangeTabsAll 43 \ :call add(g:lines, 'RangeTabsAll '.<line1>.' '.<line2>) 44 set hidden 45 arga a b c d 46 argdo echo "loading buffers" 47 argu 3 48 .-,$-RangeArguments 49 %RangeArguments 50 RangeArgumentsAll 51 N 52 .RangeArguments 53 split 54 split 55 split 56 split 57 3wincmd w 58 .,$RangeWindows 59 %RangeWindows 60 RangeWindowsAll 61 only 62 blast 63 bd 64 .,$RangeLoadedBuffers 65 %RangeLoadedBuffers 66 RangeLoadedBuffersAll 67 .,$RangeBuffers 68 %RangeBuffers 69 RangeBuffersAll 70 tabe 71 tabe 72 tabe 73 tabe 74 normal 2gt 75 .,$RangeTabs 76 %RangeTabs 77 RangeTabsAll 78 1tabonly 79 s/\n/\r\r\r\r\r/ 80 2ma< 81 $-ma> 82 '<,'>RangeLines 83 com -range=% -buffer LocalRangeLines 84 \ :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>) 85 '<,'>LocalRangeLines 86 b1 87 call add(g:lines, '') 88 %argd 89 arga a b c d 90 ]]) 91 -- This can not be in the source() call as it will produce errors. 92 feed_command([[let v:errmsg = '']]) 93 feed_command('5argu') 94 feed_command([[call add(g:lines, '5argu ' . v:errmsg)]]) 95 feed_command('$argu') 96 feed_command([[call add(g:lines, '4argu ' . expand('%:t'))]]) 97 feed_command([[let v:errmsg = '']]) 98 feed_command('1argu') 99 feed_command([[call add(g:lines, '1argu ' . expand('%:t'))]]) 100 feed_command([[let v:errmsg = '']]) 101 feed_command('100b') 102 feed_command([[call add(g:lines, '100b ' . v:errmsg)]]) 103 feed_command('split') 104 feed_command('split') 105 feed_command('split') 106 feed_command('split') 107 feed_command([[let v:errmsg = '']]) 108 feed_command('0close') 109 feed_command([[call add(g:lines, '0close ' . v:errmsg)]]) 110 feed_command('$wincmd w') 111 feed_command('$close') 112 feed_command([[call add(g:lines, '$close ' . winnr())]]) 113 feed_command([[let v:errmsg = '']]) 114 feed_command('$+close') 115 feed_command([[call add(g:lines, '$+close ' . v:errmsg)]]) 116 feed_command('$tabe') 117 feed_command([[call add(g:lines, '$tabe ' . tabpagenr())]]) 118 feed_command([[let v:errmsg = '']]) 119 feed_command('$+tabe') 120 feed_command([[call add(g:lines, '$+tabe ' . v:errmsg)]]) 121 source([[ 122 only! 123 e x 124 0tabm 125 normal 1gt 126 call add(g:lines, '0tabm ' . expand('%:t')) 127 tabonly! 128 only! 129 e! test.out 130 call append(0, g:lines) 131 unlet g:lines 132 w 133 bd 134 b1 135 let g:lines = [] 136 func BufStatus() 137 call add(g:lines, 138 \ 'aaa: ' . buflisted(g:buf_aaa) . 139 \ ' bbb: ' . buflisted(g:buf_bbb) . 140 \ ' ccc: ' . buflisted(g:buf_ccc)) 141 endfunc 142 se nohidden 143 e aaa 144 let buf_aaa = bufnr('%') 145 e bbb 146 let buf_bbb = bufnr('%') 147 e ccc 148 let buf_ccc = bufnr('%') 149 b1 150 call BufStatus() 151 exe buf_bbb . "," . buf_ccc . "bdelete" 152 call BufStatus() 153 exe buf_aaa . "bdelete" 154 call BufStatus() 155 e! test.out 156 call append('$', g:lines) 157 unlet g:lines 158 delfunc BufStatus 159 w 160 bd 161 b1 162 se hidden 163 only! 164 let g:lines = [] 165 %argd 166 arga a b c d e f 167 3argu 168 let args = '' 169 .,$-argdo let args .= ' '.expand('%') 170 call add(g:lines, 'argdo:' . args) 171 split 172 split 173 split 174 split 175 2wincmd w 176 let windows = '' 177 .,$-windo let windows .= ' '.winnr() 178 call add(g:lines, 'windo:'. windows) 179 b2 180 let buffers = '' 181 .,$-bufdo let buffers .= ' '.bufnr('%') 182 call add(g:lines, 'bufdo:' . buffers) 183 3bd 184 let buffers = '' 185 3,7bufdo let buffers .= ' '.bufnr('%') 186 call add(g:lines, 'bufdo:' . buffers) 187 tabe 188 tabe 189 tabe 190 tabe 191 normal! 2gt 192 let tabpages = '' 193 .,$-tabdo let tabpages .= ' '.tabpagenr() 194 call add(g:lines, 'tabdo:' . tabpages) 195 e! test.out 196 call append('$', g:lines) 197 ]]) 198 199 -- Assert buffer contents. 200 expect([[ 201 RangeArguments 2 4 202 RangeArguments 1 5 203 RangeArgumentsAll 1 5 204 RangeArguments 2 2 205 RangeWindows 3 5 206 RangeWindows 1 5 207 RangeWindowsAll 1 5 208 RangeLoadedBuffers 2 4 209 RangeLoadedBuffers 1 4 210 RangeLoadedBuffersAll 1 4 211 RangeBuffers 2 5 212 RangeBuffers 1 5 213 RangeBuffersAll 1 5 214 RangeTabs 2 5 215 RangeTabs 1 5 216 RangeTabsAll 1 5 217 RangeLines 2 5 218 LocalRangeLines 2 5 219 220 5argu E16: Invalid range 221 4argu d 222 1argu a 223 100b E16: Invalid range 224 0close 225 $close 3 226 $+close E16: Invalid range 227 $tabe 2 228 $+tabe E16: Invalid range 229 0tabm x 230 231 aaa: 1 bbb: 1 ccc: 1 232 aaa: 1 bbb: 0 ccc: 0 233 aaa: 0 bbb: 0 ccc: 0 234 argdo: c d e 235 windo: 2 3 4 236 bufdo: 2 3 4 5 6 7 8 9 10 15 237 bufdo: 4 5 6 7 238 tabdo: 2 3 4]]) 239 240 source([[ 241 cd .. 242 call delete(g:tmpname, 'rf') 243 ]]) 244 end) 245 end)