aboutsummaryrefslogtreecommitdiff
path: root/ssh/tcpip_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'ssh/tcpip_test.go')
-rw-r--r--ssh/tcpip_test.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/ssh/tcpip_test.go b/ssh/tcpip_test.go
index f1265cb..4d85114 100644
--- a/ssh/tcpip_test.go
+++ b/ssh/tcpip_test.go
@@ -5,7 +5,10 @@
package ssh
import (
+ "context"
+ "net"
"testing"
+ "time"
)
func TestAutoPortListenBroken(t *testing.T) {
@@ -18,3 +21,33 @@ func TestAutoPortListenBroken(t *testing.T) {
t.Errorf("version %q marked as broken", works)
}
}
+
+func TestClientImplementsDialContext(t *testing.T) {
+ type ContextDialer interface {
+ DialContext(context.Context, string, string) (net.Conn, error)
+ }
+ // Belt and suspenders assertion, since package net does not
+ // declare a ContextDialer type.
+ var _ ContextDialer = &net.Dialer{}
+ var _ ContextDialer = &Client{}
+}
+
+func TestClientDialContextWithCancel(t *testing.T) {
+ c := &Client{}
+ ctx, cancel := context.WithCancel(context.Background())
+ cancel()
+ _, err := c.DialContext(ctx, "tcp", "localhost:1000")
+ if err != context.Canceled {
+ t.Errorf("DialContext: got nil error, expected %v", context.Canceled)
+ }
+}
+
+func TestClientDialContextWithDeadline(t *testing.T) {
+ c := &Client{}
+ ctx, cancel := context.WithDeadline(context.Background(), time.Now())
+ defer cancel()
+ _, err := c.DialContext(ctx, "tcp", "localhost:1000")
+ if err != context.DeadlineExceeded {
+ t.Errorf("DialContext: got nil error, expected %v", context.DeadlineExceeded)
+ }
+}