@@ -341,9 +341,6 @@ func TestEditorWriteVisualSelection(t *testing.T) {
341
341
}
342
342
343
343
func TestEditorWriteUndo (t * testing.T ) {
344
- if runtime .GOOS == "windows" {
345
- t .Skip ("skip on Windows" )
346
- }
347
344
ui := newTestUI ()
348
345
editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
349
346
if err := editor .Init (); err != nil {
@@ -358,9 +355,9 @@ func TestEditorWriteUndo(t *testing.T) {
358
355
}
359
356
go func () {
360
357
ui .Emit (event.Event {Type : event .DeleteByte })
361
- ui .Emit (event.Event {Type : event .Write , Arg : f .Name ()})
358
+ ui .Emit (event.Event {Type : event .Write , Arg : f .Name () + ".out" })
362
359
ui .Emit (event.Event {Type : event .Undo })
363
- ui .Emit (event.Event {Type : event .WriteQuit , Arg : f . Name () })
360
+ ui .Emit (event.Event {Type : event .Quit })
364
361
}()
365
362
if err := editor .Run (); err != nil {
366
363
t .Errorf ("err should be nil but got: %v" , err )
@@ -382,12 +379,16 @@ func TestEditorWriteUndo(t *testing.T) {
382
379
if expected := "abc" ; string (bs ) != expected {
383
380
t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
384
381
}
382
+ bs , err = os .ReadFile (f .Name () + ".out" )
383
+ if err != nil {
384
+ t .Errorf ("err should be nil but got: %v" , err )
385
+ }
386
+ if expected := "bc" ; string (bs ) != expected {
387
+ t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
388
+ }
385
389
}
386
390
387
391
func TestEditorSearch (t * testing.T ) {
388
- if runtime .GOOS == "windows" {
389
- t .Skip ("skip on Windows" )
390
- }
391
392
ui := newTestUI ()
392
393
editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
393
394
if err := editor .Init (); err != nil {
@@ -418,8 +419,8 @@ func TestEditorSearch(t *testing.T) {
418
419
ui .Emit (event.Event {Type : event .DeleteByte })
419
420
ui .Emit (event.Event {Type : event .PreviousSearch })
420
421
ui .Emit (event.Event {Type : event .DeleteByte })
421
- ui .Emit (event.Event {Type : event .Write })
422
- ui .Emit (event.Event {Type : event .Quit })
422
+ ui .Emit (event.Event {Type : event .Write , Arg : f . Name () + ".out" })
423
+ ui .Emit (event.Event {Type : event .Quit , Bang : true })
423
424
}()
424
425
if err := editor .Run (); err != nil {
425
426
t .Errorf ("err should be nil but got: %v" , err )
@@ -434,7 +435,7 @@ func TestEditorSearch(t *testing.T) {
434
435
if err := editor .Close (); err != nil {
435
436
t .Errorf ("err should be nil but got: %v" , err )
436
437
}
437
- bs , err := os .ReadFile (f .Name ())
438
+ bs , err := os .ReadFile (f .Name () + ".out" )
438
439
if err != nil {
439
440
t .Errorf ("err should be nil but got: %v" , err )
440
441
}
@@ -443,6 +444,57 @@ func TestEditorSearch(t *testing.T) {
443
444
}
444
445
}
445
446
447
+ func TestEditorCmdlineCursorGoto (t * testing.T ) {
448
+ ui := newTestUI ()
449
+ editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
450
+ if err := editor .Init (); err != nil {
451
+ t .Fatalf ("err should be nil but got: %v" , err )
452
+ }
453
+ f , err := createTemp (t .TempDir (), "Hello, world!" )
454
+ if err != nil {
455
+ t .Fatalf ("err should be nil but got: %v" , err )
456
+ }
457
+ if err := editor .Open (f .Name ()); err != nil {
458
+ t .Fatalf ("err should be nil but got: %v" , err )
459
+ }
460
+ go func () {
461
+ ui .Emit (event.Event {Type : event .StartCmdlineCommand })
462
+ ui .Emit (event.Event {Type : event .Rune , Rune : '6' })
463
+ ui .Emit (event.Event {Type : event .ExecuteCmdline })
464
+ ui .Emit (event.Event {Type : event .DeleteByte })
465
+ ui .Emit (event.Event {Type : event .Write , Arg : f .Name () + ".out1" })
466
+ ui .Emit (event.Event {Type : event .Undo })
467
+ ui .Emit (event.Event {Type : event .StartCmdlineCommand })
468
+ ui .Emit (event.Event {Type : event .Rune , Rune : '7' })
469
+ ui .Emit (event.Event {Type : event .Rune , Rune : '0' })
470
+ ui .Emit (event.Event {Type : event .Rune , Rune : '%' })
471
+ ui .Emit (event.Event {Type : event .ExecuteCmdline })
472
+ ui .Emit (event.Event {Type : event .DeleteByte })
473
+ ui .Emit (event.Event {Type : event .Write , Arg : f .Name () + ".out2" })
474
+ ui .Emit (event.Event {Type : event .Quit , Bang : true })
475
+ }()
476
+ if err := editor .Run (); err != nil {
477
+ t .Errorf ("err should be nil but got: %v" , err )
478
+ }
479
+ if err := editor .Close (); err != nil {
480
+ t .Errorf ("err should be nil but got: %v" , err )
481
+ }
482
+ bs , err := os .ReadFile (f .Name () + ".out1" )
483
+ if err != nil {
484
+ t .Errorf ("err should be nil but got: %v" , err )
485
+ }
486
+ if expected := "Hello,world!" ; string (bs ) != expected {
487
+ t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
488
+ }
489
+ bs , err = os .ReadFile (f .Name () + ".out2" )
490
+ if err != nil {
491
+ t .Errorf ("err should be nil but got: %v" , err )
492
+ }
493
+ if expected := "Hello, wold!" ; string (bs ) != expected {
494
+ t .Errorf ("file contents should be %q but got %q" , expected , string (bs ))
495
+ }
496
+ }
497
+
446
498
func TestEditorCmdlineQuit (t * testing.T ) {
447
499
ui := newTestUI ()
448
500
editor := NewEditor (ui , window .NewManager (), cmdline .NewCmdline ())
0 commit comments