@@ -480,10 +480,24 @@ func TestAgent_TCPLocalForwarding(t *testing.T) {
480
480
}
481
481
}()
482
482
483
+ pty := ptytest .New (t )
484
+
483
485
cmd := setupSSHCommand (t , []string {"-L" , fmt .Sprintf ("%d:127.0.0.1:%d" , randomPort , remotePort )}, []string {"sleep" , "5" })
486
+ cmd .Stdin = pty .Input ()
487
+ cmd .Stdout = pty .Output ()
488
+ cmd .Stderr = pty .Output ()
484
489
err = cmd .Start ()
485
490
require .NoError (t , err )
486
491
492
+ go func () {
493
+ err := cmd .Wait ()
494
+ select {
495
+ case <- done :
496
+ default :
497
+ assert .NoError (t , err )
498
+ }
499
+ }()
500
+
487
501
require .Eventually (t , func () bool {
488
502
conn , err := net .Dial ("tcp" , "127.0.0.1:" + strconv .Itoa (randomPort ))
489
503
if err != nil {
@@ -547,10 +561,24 @@ func TestAgent_TCPRemoteForwarding(t *testing.T) {
547
561
}
548
562
}()
549
563
564
+ pty := ptytest .New (t )
565
+
550
566
cmd := setupSSHCommand (t , []string {"-R" , fmt .Sprintf ("127.0.0.1:%d:127.0.0.1:%d" , randomPort , localPort )}, []string {"sleep" , "5" })
567
+ cmd .Stdin = pty .Input ()
568
+ cmd .Stdout = pty .Output ()
569
+ cmd .Stderr = pty .Output ()
551
570
err = cmd .Start ()
552
571
require .NoError (t , err )
553
572
573
+ go func () {
574
+ err := cmd .Wait ()
575
+ select {
576
+ case <- done :
577
+ default :
578
+ assert .NoError (t , err )
579
+ }
580
+ }()
581
+
554
582
require .Eventually (t , func () bool {
555
583
conn , err := net .Dial ("tcp" , fmt .Sprintf ("127.0.0.1:%d" , randomPort ))
556
584
if err != nil {
@@ -612,10 +640,24 @@ func TestAgent_UnixLocalForwarding(t *testing.T) {
612
640
}
613
641
}()
614
642
643
+ pty := ptytest .New (t )
644
+
615
645
cmd := setupSSHCommand (t , []string {"-L" , fmt .Sprintf ("%s:%s" , localSocketPath , remoteSocketPath )}, []string {"sleep" , "5" })
646
+ cmd .Stdin = pty .Input ()
647
+ cmd .Stdout = pty .Output ()
648
+ cmd .Stderr = pty .Output ()
616
649
err = cmd .Start ()
617
650
require .NoError (t , err )
618
651
652
+ go func () {
653
+ err := cmd .Wait ()
654
+ select {
655
+ case <- done :
656
+ default :
657
+ assert .NoError (t , err )
658
+ }
659
+ }()
660
+
619
661
require .Eventually (t , func () bool {
620
662
_ , err := os .Stat (localSocketPath )
621
663
return err == nil
@@ -670,10 +712,24 @@ func TestAgent_UnixRemoteForwarding(t *testing.T) {
670
712
}
671
713
}()
672
714
715
+ pty := ptytest .New (t )
716
+
673
717
cmd := setupSSHCommand (t , []string {"-R" , fmt .Sprintf ("%s:%s" , remoteSocketPath , localSocketPath )}, []string {"sleep" , "5" })
718
+ cmd .Stdin = pty .Input ()
719
+ cmd .Stdout = pty .Output ()
720
+ cmd .Stderr = pty .Output ()
674
721
err = cmd .Start ()
675
722
require .NoError (t , err )
676
723
724
+ go func () {
725
+ err := cmd .Wait ()
726
+ select {
727
+ case <- done :
728
+ default :
729
+ assert .NoError (t , err )
730
+ }
731
+ }()
732
+
677
733
// It's possible that the socket is created but the server is not ready to
678
734
// accept connections yet. We need to retry until we can connect.
679
735
var conn net.Conn
0 commit comments