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