1" Test the netbeans interface. 2 3source check.vim 4CheckFeature netbeans_intg 5 6source shared.vim 7 8let s:python = PythonProg() 9if s:python == '' 10 throw 'Skipped: python program missing' 11endif 12 13" Run "testfunc" after starting the server and stop the server afterwards. 14func s:run_server(testfunc, ...) 15 call RunServer('test_netbeans.py', a:testfunc, a:000) 16endfunc 17 18" Wait for an exception (error) to be thrown. This is used to check whether a 19" message from the netbeans server causes an error. It takes some time for Vim 20" to process a netbeans message. So a sleep is used below to account for this. 21func WaitForError(errcode) 22 let save_exception = '' 23 for i in range(200) 24 try 25 sleep 5m 26 catch 27 let save_exception = v:exception 28 break 29 endtry 30 endfor 31 call assert_match(a:errcode, save_exception) 32endfunc 33 34func Nb_basic(port) 35 call delete("Xnetbeans") 36 call writefile([], "Xnetbeans") 37 38 " Last line number in the Xnetbeans file. Used to verify the result of the 39 " communication with the netbeans server 40 let g:last = 0 41 42 " Establish the connection with the netbeans server 43 exe 'nbstart :localhost:' .. a:port .. ':bunny' 44 call assert_true(has("netbeans_enabled")) 45 call WaitFor('len(readfile("Xnetbeans")) > (g:last + 2)') 46 let l = readfile("Xnetbeans") 47 call assert_equal(['AUTH bunny', 48 \ '0:version=0 "2.5"', 49 \ '0:startupDone=0'], l[-3:]) 50 let g:last += 3 51 52 " Trying to connect again to netbeans server should fail 53 call assert_fails("exe 'nbstart :localhost:' . a:port . ':bunny'", 'E511:') 54 55 " Open the command buffer to communicate with the server 56 split Xcmdbuf 57 let cmdbufnr = bufnr() 58 call WaitFor('len(readfile("Xnetbeans")) > (g:last + 2)') 59 let l = readfile("Xnetbeans") 60 call assert_equal('0:fileOpened=0 "Xcmdbuf" T F', 61 \ substitute(l[-3], '".*/', '"', '')) 62 call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"', 63 \ substitute(l[-2], '".*/', '"', '')) 64 call assert_equal('1:startDocumentListen!16', l[-1]) 65 let g:last += 3 66 67 " Keep the command buffer loaded for communication 68 hide 69 70 sleep 1m 71 72 " getCursor test 73 call writefile(['foo bar', 'foo bar', 'foo bar'], 'Xfile1') 74 split Xfile1 75 call cursor(3, 4) 76 sleep 10m 77 call appendbufline(cmdbufnr, '$', 'getCursor_Test') 78 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 5)') 79 let l = readfile('Xnetbeans') 80 call assert_equal(['send: 0:getCursor/30', '30 -1 3 3 19'], l[-2:]) 81 let g:last += 5 82 83 " Test for E627 84 call appendbufline(cmdbufnr, '$', 'E627_Test') 85 call WaitForError('E627:') 86 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 87 let l = readfile('Xnetbeans') 88 call assert_equal('send: 0 setReadOnly!31', l[-1]) 89 let g:last += 3 90 91 " Test for E628 92 call appendbufline(cmdbufnr, '$', 'E628_Test') 93 call WaitForError('E628:') 94 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 95 let l = readfile('Xnetbeans') 96 call assert_equal('send: 0:setReadOnly 32', l[-1]) 97 let g:last += 3 98 99 " Test for E632 100 call appendbufline(cmdbufnr, '$', 'E632_Test') 101 call WaitForError('E632:') 102 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 103 let l = readfile('Xnetbeans') 104 call assert_equal(['send: 0:getLength/33', '33 0'], l[-2:]) 105 let g:last += 4 106 107 " Test for E633 108 call appendbufline(cmdbufnr, '$', 'E633_Test') 109 call WaitForError('E633:') 110 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 111 let l = readfile('Xnetbeans') 112 call assert_equal(['send: 0:getText/34', '34 '], l[-2:]) 113 let g:last += 4 114 115 " Test for E634 116 call appendbufline(cmdbufnr, '$', 'E634_Test') 117 call WaitForError('E634:') 118 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 119 let l = readfile('Xnetbeans') 120 call assert_equal(['send: 0:remove/35 1 1', '35'], l[-2:]) 121 let g:last += 4 122 123 " Test for E635 124 call appendbufline(cmdbufnr, '$', 'E635_Test') 125 call WaitForError('E635:') 126 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 127 let l = readfile('Xnetbeans') 128 call assert_equal(['send: 0:insert/36 0 "line1\n"', '36'], l[-2:]) 129 let g:last += 4 130 131 " Test for E636 132 call appendbufline(cmdbufnr, '$', 'E636_Test') 133 call WaitForError('E636:') 134 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 135 let l = readfile('Xnetbeans') 136 call assert_equal('send: 0:create!37', l[-1]) 137 let g:last += 3 138 139 " Test for E637 140 call appendbufline(cmdbufnr, '$', 'E637_Test') 141 call WaitForError('E637:') 142 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 143 let l = readfile('Xnetbeans') 144 call assert_equal('send: 0:startDocumentListen!38', l[-1]) 145 let g:last += 3 146 147 " Test for E638 148 call appendbufline(cmdbufnr, '$', 'E638_Test') 149 call WaitForError('E638:') 150 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 151 let l = readfile('Xnetbeans') 152 call assert_equal('send: 0:stopDocumentListen!39', l[-1]) 153 let g:last += 3 154 155 " Test for E639 156 call appendbufline(cmdbufnr, '$', 'E639_Test') 157 call WaitForError('E639:') 158 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 159 let l = readfile('Xnetbeans') 160 call assert_equal('send: 0:setTitle!40 "Title"', l[-1]) 161 let g:last += 3 162 163 " Test for E640 164 call appendbufline(cmdbufnr, '$', 'E640_Test') 165 call WaitForError('E640:') 166 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 167 let l = readfile('Xnetbeans') 168 call assert_equal('send: 0:initDone!41', l[-1]) 169 let g:last += 3 170 171 " Test for E641 172 call appendbufline(cmdbufnr, '$', 'E641_Test') 173 call WaitForError('E641:') 174 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 175 let l = readfile('Xnetbeans') 176 call assert_equal('send: 0:putBufferNumber!42 "XSomeBuf"', l[-1]) 177 let g:last += 3 178 179 " Test for E642 180 call appendbufline(cmdbufnr, '$', 'E642_Test') 181 call WaitForError('E642:') 182 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 183 let l = readfile('Xnetbeans') 184 call assert_equal('send: 9:putBufferNumber!43 "XInvalidBuf"', l[-1]) 185 let g:last += 3 186 187 " Test for E643 188 call appendbufline(cmdbufnr, '$', 'E643_Test') 189 call WaitForError('E643:') 190 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 191 let l = readfile('Xnetbeans') 192 call assert_equal('send: 0:setFullName!44 "XSomeBuf"', l[-1]) 193 let g:last += 3 194 195 enew! 196 197 " Test for E644 198 call appendbufline(cmdbufnr, '$', 'E644_Test') 199 call WaitForError('E644:') 200 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 201 let l = readfile('Xnetbeans') 202 call assert_equal('send: 0:editFile!45 "Xfile3"', l[-1]) 203 let g:last += 3 204 205 " Test for E645 (shown only when verbose > 0) 206 call appendbufline(cmdbufnr, '$', 'E645_Test') 207 set verbose=1 208 call WaitForError('E645:') 209 set verbose& 210 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 211 let l = readfile('Xnetbeans') 212 call assert_equal('send: 0:setVisible!46 T', l[-1]) 213 let g:last += 3 214 215 " Test for E646 (shown only when verbose > 0) 216 call appendbufline(cmdbufnr, '$', 'E646_Test') 217 set verbose=1 218 call WaitForError('E646:') 219 set verbose& 220 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 221 let l = readfile('Xnetbeans') 222 call assert_equal('send: 0:setModified!47 T', l[-1]) 223 let g:last += 3 224 225 " Test for E647 226 call appendbufline(cmdbufnr, '$', 'E647_Test') 227 call WaitForError('E647:') 228 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 229 let l = readfile('Xnetbeans') 230 call assert_equal('send: 0:setDot!48 1/1', l[-1]) 231 let g:last += 3 232 233 " Test for E648 234 call appendbufline(cmdbufnr, '$', 'E648_Test') 235 call WaitForError('E648:') 236 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 237 let l = readfile('Xnetbeans') 238 call assert_equal('send: 0:close!49', l[-1]) 239 let g:last += 3 240 241 " Test for E650 242 call appendbufline(cmdbufnr, '$', 'E650_Test') 243 call WaitForError('E650:') 244 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 245 let l = readfile('Xnetbeans') 246 call assert_equal('send: 0:defineAnnoType!50 1 "abc" "a" "a" 1 1', l[-1]) 247 let g:last += 3 248 249 " Test for E651 250 call appendbufline(cmdbufnr, '$', 'E651_Test') 251 call WaitForError('E651:') 252 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 253 let l = readfile('Xnetbeans') 254 call assert_equal('send: 0:addAnno!51 1 1 1 1', l[-1]) 255 let g:last += 3 256 257 " Test for E652 258 call appendbufline(cmdbufnr, '$', 'E652_Test') 259 call WaitForError('E652:') 260 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 261 let l = readfile('Xnetbeans') 262 call assert_equal(['send: 0:getAnno/52 8', '52 0'], l[-2:]) 263 let g:last += 4 264 265 " editFile test 266 call writefile(['foo bar1', 'foo bar2', 'foo bar3'], 'Xfile3') 267 call appendbufline(cmdbufnr, '$', 'editFile_Test') 268 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 269 let l = readfile('Xnetbeans') 270 call assert_equal('send: 2:editFile!53 "Xfile3"', l[-2]) 271 call assert_match('0:fileOpened=0 ".*/Xfile3" T F', l[-1]) 272 call assert_equal('Xfile3', bufname()) 273 let g:last += 4 274 275 " getLength test 276 call appendbufline(cmdbufnr, '$', 'getLength_Test') 277 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 278 let l = readfile('Xnetbeans') 279 call assert_equal(['send: 2:getLength/54', '54 27'], l[-2:]) 280 let g:last += 4 281 282 " getModified test 283 call appendbufline(cmdbufnr, '$', 'getModified_Test') 284 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 285 let l = readfile('Xnetbeans') 286 call assert_equal(['send: 2:getModified/55', '55 0'], l[-2:]) 287 let g:last += 4 288 289 " getText test 290 call appendbufline(cmdbufnr, '$', 'getText_Test') 291 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 292 let l = readfile('Xnetbeans') 293 call assert_equal(['send: 2:getText/56', 294 \ '56 "foo bar1\nfoo bar2\nfoo bar3\n"'], l[-2:]) 295 let g:last += 4 296 297 " setDot test 298 call appendbufline(cmdbufnr, '$', 'setDot_Test') 299 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 300 let l = readfile('Xnetbeans') 301 call assert_equal('send: 2:setDot!57 3/6', l[-1]) 302 let g:last += 3 303 304 " startDocumentListen test 305 call appendbufline(cmdbufnr, '$', 'startDocumentListen_Test') 306 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 307 let l = readfile('Xnetbeans') 308 call assert_equal('send: 2:startDocumentListen!58', l[-1]) 309 let g:last += 3 310 311 " make some changes to the buffer and check whether the netbeans server 312 " received the notifications 313 call append(2, 'blue sky') 314 1d 315 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 316 let l = readfile('Xnetbeans') 317 call assert_match('2:insert=\d\+ 18 "blue sky"', l[-3]) 318 call assert_match('2:insert=\d\+ 26 "\\n"', l[-2]) 319 call assert_match('2:remove=\d\+ 0 9', l[-1]) 320 let g:last += 3 321 322 " stopDocumentListen test 323 call appendbufline(cmdbufnr, '$', 'stopDocumentListen_Test') 324 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 325 let l = readfile('Xnetbeans') 326 call assert_equal('send: 2:stopDocumentListen!59', l[-1]) 327 let g:last += 3 328 329 " Wait for vim to process the previous netbeans message 330 sleep 1m 331 332 " modify the buffer and make sure that the netbeans server is not notified 333 call append(2, 'clear sky') 334 1d 335 336 " defineAnnoType test 337 call appendbufline(cmdbufnr, '$', 'define_anno_Test') 338 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 339 let l = readfile('Xnetbeans') 340 call assert_equal('send: 2:defineAnnoType!60 1 "s1" "x" "=>" blue none', l[-1]) 341 sleep 1m 342 call assert_equal({'name': '1', 'texthl': 'NB_s1', 'text': '=>'}, 343 \ sign_getdefined()[0]) 344 let g:last += 3 345 346 " defineAnnoType with a long color name 347 call appendbufline(cmdbufnr, '$', 'E532_Test') 348 call WaitForError('E532:') 349 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 350 let l = readfile('Xnetbeans') 351 call assert_equal('send: 2:defineAnnoType!61 1 "s1" "x" "=>" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa none', l[-1]) 352 let g:last += 3 353 354 " addAnno test 355 call appendbufline(cmdbufnr, '$', 'add_anno_Test') 356 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 357 let l = readfile('Xnetbeans') 358 call assert_equal('send: 2:addAnno!62 1 1 2/1 0', l[-1]) 359 sleep 1m 360 call assert_equal([{'lnum': 2, 'id': 1, 'name': '1', 'priority': 10, 361 \ 'group': ''}], sign_getplaced()[0].signs) 362 let g:last += 3 363 364 " getAnno test 365 call appendbufline(cmdbufnr, '$', 'get_anno_Test') 366 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 367 let l = readfile('Xnetbeans') 368 call assert_equal(['send: 2:getAnno/63 1', '63 2'], l[-2:]) 369 let g:last += 4 370 371 " removeAnno test 372 call appendbufline(cmdbufnr, '$', 'remove_anno_Test') 373 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 374 let l = readfile('Xnetbeans') 375 call assert_equal('send: 2:removeAnno!64 1', l[-1]) 376 sleep 1m 377 call assert_equal([], sign_getplaced()) 378 let g:last += 3 379 380 " getModified test to get the number of modified buffers 381 call appendbufline(cmdbufnr, '$', 'getModifiedAll_Test') 382 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 383 let l = readfile('Xnetbeans') 384 call assert_equal(['send: 0:getModified/65', '65 2'], l[-2:]) 385 let g:last += 4 386 387 let bufcount = len(getbufinfo()) 388 389 " create test to create a new buffer 390 call appendbufline(cmdbufnr, '$', 'create_Test') 391 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 392 let l = readfile('Xnetbeans') 393 call assert_equal('send: 3:create!66', l[-1]) 394 " Wait for vim to process the previous netbeans message 395 sleep 10m 396 call assert_equal(bufcount + 1, len(getbufinfo())) 397 let g:last += 3 398 399 " setTitle test 400 call appendbufline(cmdbufnr, '$', 'setTitle_Test') 401 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 402 let l = readfile('Xnetbeans') 403 call assert_equal('send: 3:setTitle!67 "Xfile4"', l[-1]) 404 let g:last += 3 405 406 " setFullName test 407 call appendbufline(cmdbufnr, '$', 'setFullName_Test') 408 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 5)') 409 let l = readfile('Xnetbeans') 410 call assert_equal('send: 3:setFullName!68 "Xfile4"', l[-3]) 411 call assert_match('0:fileOpened=0 ".*/Xfile4" T F', l[-1]) 412 call assert_equal('Xfile4', bufname()) 413 let g:last += 5 414 415 " initDone test 416 call appendbufline(cmdbufnr, '$', 'initDone_Test') 417 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 418 let l = readfile('Xnetbeans') 419 call assert_equal('send: 3:initDone!69', l[-1]) 420 let g:last += 3 421 422 " setVisible test 423 hide enew 424 call appendbufline(cmdbufnr, '$', 'setVisible_Test') 425 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 426 let l = readfile('Xnetbeans') 427 call assert_equal('send: 3:setVisible!70 T', l[-1]) 428 let g:last += 3 429 430 " setModtime test 431 call appendbufline(cmdbufnr, '$', 'setModtime_Test') 432 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 433 let l = readfile('Xnetbeans') 434 call assert_equal('send: 3:setModtime!71 6', l[-1]) 435 let g:last += 3 436 437 " insert test 438 call appendbufline(cmdbufnr, '$', 'insert_Test') 439 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 440 let l = readfile('Xnetbeans') 441 call assert_equal(['send: 3:insert/72 0 "line1\nline2\n"', '72'], l[-2:]) 442 call assert_equal(['line1', 'line2'], getline(1, '$')) 443 let g:last += 4 444 445 " remove test 446 call appendbufline(cmdbufnr, '$', 'remove_Test') 447 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 448 let l = readfile('Xnetbeans') 449 call assert_equal(['send: 3:remove/73 3 4', '73'], l[-2:]) 450 call assert_equal(['linine2'], getline(1, '$')) 451 let g:last += 4 452 453 " remove with invalid offset 454 call appendbufline(cmdbufnr, '$', 'remove_invalid_offset_Test') 455 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 456 let l = readfile('Xnetbeans') 457 call assert_equal(['send: 3:remove/74 900 4', '74 !bad position'], l[-2:]) 458 let g:last += 4 459 460 " remove with invalid count 461 call appendbufline(cmdbufnr, '$', 'remove_invalid_count_Test') 462 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 463 let l = readfile('Xnetbeans') 464 call assert_equal(['send: 3:remove/75 1 800', '75 !bad count'], l[-2:]) 465 let g:last += 4 466 467 " guard test 468 %d 469 call setline(1, ['foo bar', 'foo bar', 'foo bar']) 470 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 8)') 471 let g:last += 8 472 473 call appendbufline(cmdbufnr, '$', 'guard_Test') 474 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 475 let l = readfile('Xnetbeans') 476 call assert_equal('send: 3:guard!76 8 7', l[-1]) 477 sleep 1m 478 " second line is guarded. Try modifying the line 479 call assert_fails('normal 2GIbaz', 'E463:') 480 call assert_fails('normal 2GAbaz', 'E463:') 481 call assert_fails('normal dd', 'E463:') 482 call assert_equal([{'name': '1', 'texthl': 'NB_s1', 'text': '=>'}, 483 \ {'name': '10000', 'linehl': 'NBGuarded'}], 484 \ sign_getdefined()) 485 call assert_equal([{'lnum': 2, 'id': 1000000, 'name': '10000', 486 \ 'priority': 10, 'group': ''}], sign_getplaced()[0].signs) 487 let g:last += 3 488 489 " setModified test 490 call appendbufline(cmdbufnr, '$', 'setModified_Test') 491 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 492 let l = readfile('Xnetbeans') 493 call assert_equal('send: 3:setModified!77 T', l[-1]) 494 call assert_equal(1, &modified) 495 let g:last += 3 496 497 " insertDone test 498 let v:statusmsg = '' 499 call appendbufline(cmdbufnr, '$', 'insertDone_Test') 500 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 501 let l = readfile('Xnetbeans') 502 call assert_equal('send: 3:insertDone!78 T F', l[-1]) 503 sleep 1m 504 call assert_match('.*/Xfile4" 3L, 0B', v:statusmsg) 505 let g:last += 3 506 507 " saveDone test 508 let v:statusmsg = '' 509 call appendbufline(cmdbufnr, '$', 'saveDone_Test') 510 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 511 let l = readfile('Xnetbeans') 512 call assert_equal('send: 3:saveDone!79', l[-1]) 513 sleep 1m 514 call assert_match('.*/Xfile4" 3L, 0B', v:statusmsg) 515 let g:last += 3 516 517 " unimplemented command test 518 call appendbufline(cmdbufnr, '$', 'invalidcmd_Test') 519 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 520 let l = readfile('Xnetbeans') 521 call assert_equal('send: 3:invalidcmd!80', l[-1]) 522 let g:last += 3 523 524 " unimplemented function test 525 call appendbufline(cmdbufnr, '$', 'invalidfunc_Test') 526 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 527 let l = readfile('Xnetbeans') 528 call assert_equal(['send: 3:invalidfunc/81', '81'], l[-2:]) 529 let g:last += 4 530 531 " Test for removeAnno cmd failure 532 call appendbufline(cmdbufnr, '$', 'removeAnno_fail_Test') 533 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 534 let l = readfile('Xnetbeans') 535 call assert_equal(['send: 0:removeAnno/82 1', '82'], l[-2:]) 536 let g:last += 4 537 538 " Test for guard cmd failure 539 call appendbufline(cmdbufnr, '$', 'guard_fail_Test') 540 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 541 let l = readfile('Xnetbeans') 542 call assert_equal(['send: 0:guard/83 1 1', '83'], l[-2:]) 543 let g:last += 4 544 545 " Test for save cmd failure 546 call appendbufline(cmdbufnr, '$', 'save_fail_Test') 547 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 548 let l = readfile('Xnetbeans') 549 call assert_equal(['send: 0:save/84', '84'], l[-2:]) 550 let g:last += 4 551 552 " Test for netbeansBuffer cmd failure 553 call appendbufline(cmdbufnr, '$', 'netbeansBuffer_fail_Test') 554 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 555 let l = readfile('Xnetbeans') 556 call assert_equal(['send: 0:netbeansBuffer/85 T', '85'], l[-2:]) 557 let g:last += 4 558 559 " nbkey test 560 call cursor(3, 3) 561 nbkey "\<C-F2>" 562 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 563 let l = readfile('Xnetbeans') 564 call assert_equal(['3:newDotAndMark=85 18 18', 565 \ '3:keyCommand=85 ""\<C-F2>""', 566 \ '3:keyAtPos=85 ""\<C-F2>"" 18 3/2'], l[-3:]) 567 let g:last += 3 568 569 " setExitDelay test 570 call appendbufline(cmdbufnr, '$', 'setExitDelay_Test') 571 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 572 let l = readfile('Xnetbeans') 573 call assert_equal('send: 0:setExitDelay!86 2', l[-1]) 574 let g:last += 3 575 576 " setReadonly test 577 call appendbufline(cmdbufnr, '$', 'setReadOnly_Test') 578 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 579 let l = readfile('Xnetbeans') 580 call assert_equal('send: 3:setReadOnly!87', l[-1]) 581 let g:last += 3 582 583 " close test. Don't use buffer 10 after this 584 call appendbufline(cmdbufnr, '$', 'close_Test') 585 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 4)') 586 let l = readfile('Xnetbeans') 587 call assert_equal('send: 3:close!88', l[-2]) 588 call assert_equal('3:killed=88', l[-1]) 589 call assert_equal(1, winnr('$')) 590 let g:last += 4 591 592 " specialKeys test 593 call appendbufline(cmdbufnr, '$', 'specialKeys_Test') 594 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 3)') 595 let l = readfile('Xnetbeans') 596 call assert_equal('send: 0:specialKeys!89 "F12 F13"', l[-1]) 597 sleep 1m 598 call assert_equal(':nbkey F12<CR>', maparg('<F12>', 'n')) 599 call assert_equal(':nbkey F13<CR>', maparg('<F13>', 'n')) 600 let g:last += 3 601 602 " Open a buffer not monitored by netbeans 603 enew | only! 604 nbkey "\<C-F3>" 605 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 1)') 606 let l = readfile('Xnetbeans') 607 call assert_equal('0:fileOpened=0 "" T F', l[-1]) 608 let g:last += 1 609 610 " Test for writing a netbeans buffer 611 call appendbufline(cmdbufnr, '$', 'nbbufwrite_Test') 612 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 5)') 613 call assert_fails('write', 'E656:') 614 call setline(1, ['one', 'two']) 615 call assert_fails('1write!', 'E657:') 616 write 617 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 10)') 618 let g:last += 10 619 620 " detach 621 call appendbufline(cmdbufnr, '$', 'detach_Test') 622 call WaitFor('len(readfile("Xnetbeans")) >= (g:last + 8)') 623 call WaitForAssert({-> assert_equal('0:disconnect=93', readfile("Xnetbeans")[-1])}) 624 625 " the connection was closed 626 call assert_false(has("netbeans_enabled")) 627 628 call delete("Xnetbeans") 629 call delete('Xfile1') 630 call delete('Xfile3') 631endfunc 632 633func Test_nb_basic() 634 call ch_log('Test_nb_basic') 635 call s:run_server('Nb_basic') 636endfunc 637 638func Nb_file_auth(port) 639 call delete("Xnetbeans") 640 call writefile([], "Xnetbeans") 641 642 call assert_fails('nbstart =notexist', 'E660:') 643 call writefile(['host=localhost', 'port=' . a:port, 'auth=bunny'], 'Xnbauth') 644 if has('unix') 645 call setfperm('Xnbauth', "rw-r--r--") 646 call assert_fails('nbstart =Xnbauth', 'E668:') 647 endif 648 call setfperm('Xnbauth', "rw-------") 649 exe 'nbstart =Xnbauth' 650 call assert_true(has("netbeans_enabled")) 651 652 call WaitFor('len(readfile("Xnetbeans")) > 2') 653 nbclose 654 let lines = readfile("Xnetbeans") 655 call assert_equal('AUTH bunny', lines[0]) 656 call assert_equal('0:version=0 "2.5"', lines[1]) 657 call assert_equal('0:startupDone=0', lines[2]) 658 659 call delete("Xnbauth") 660 call delete("Xnetbeans") 661endfunc 662 663func Test_nb_file_auth() 664 call ch_log('Test_nb_file_auth') 665 call s:run_server('Nb_file_auth') 666endfunc 667 668" Test for quiting Vim with an open netbeans connection 669func Nb_quit_with_conn(port) 670 call delete("Xnetbeans") 671 call writefile([], "Xnetbeans") 672 let after =<< trim END 673 source shared.vim 674 675 " Establish the connection with the netbeans server 676 exe 'nbstart :localhost:' .. g:port .. ':star' 677 call assert_true(has("netbeans_enabled")) 678 call WaitFor('len(readfile("Xnetbeans")) >= 3') 679 let l = readfile("Xnetbeans") 680 call assert_equal(['AUTH star', 681 \ '0:version=0 "2.5"', 682 \ '0:startupDone=0'], l[-3:]) 683 684 " Open the command buffer to communicate with the server 685 split Xcmdbuf 686 call WaitFor('len(readfile("Xnetbeans")) >= 6') 687 let l = readfile("Xnetbeans") 688 call assert_equal('0:fileOpened=0 "Xcmdbuf" T F', 689 \ substitute(l[-3], '".*/', '"', '')) 690 call assert_equal('send: 1:putBufferNumber!15 "Xcmdbuf"', 691 \ substitute(l[-2], '".*/', '"', '')) 692 call assert_equal('1:startDocumentListen!16', l[-1]) 693 sleep 1m 694 695 quit! 696 quit! 697 END 698 if RunVim(['let g:port = ' .. a:port], after, '') 699 call WaitFor('len(readfile("Xnetbeans")) >= 9') 700 let l = readfile('Xnetbeans') 701 call assert_equal('1:unmodified=16', l[-3]) 702 call assert_equal('1:killed=16', l[-2]) 703 call assert_equal('0:disconnect=16', l[-1]) 704 endif 705 call delete('Xnetbeans') 706endfunc 707 708func Test_nb_quit_with_conn() 709 " Exiting Vim with a netbeans connection doesn't work properly on 710 " MS-Windows. 711 CheckUnix 712 call s:run_server('Nb_quit_with_conn') 713endfunc 714 715" vim: shiftwidth=2 sts=2 expandtab 716