From da137c7871d730100384dbcf36e6f8fa493aef5b Mon Sep 17 00:00:00 2001 From: Jacob Blain Christen Date: Fri, 28 Jun 2019 18:40:41 +0000 Subject: [PATCH] proxy: fix TestDial failures on wasm/js Modified `TestDial` to emulate `internal/socks/dial_test.go` and leverage `nettest#NetLocalListener()` while also honoring the returned `net.Listener` address. It seems that the wasm/js runtime doesn't like dialing addresses with no host. Fixes golang/go#32842 Change-Id: I1915f2ebac773f24a5b37ab7c09a52137abe758d GitHub-Last-Rev: 8f2967fa7d37d1047e5e7d47f85436155be65a82 GitHub-Pull-Request: golang/net#45 Reviewed-on: https://go-review.googlesource.com/c/net/+/184178 Reviewed-by: Bryan C. Mills Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot --- proxy/dial_test.go | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/proxy/dial_test.go b/proxy/dial_test.go index 3edab49d1..608835b5c 100644 --- a/proxy/dial_test.go +++ b/proxy/dial_test.go @@ -7,30 +7,26 @@ package proxy import ( "context" "fmt" - "net" "os" "testing" "time" "golang.org/x/net/internal/sockstest" + "golang.org/x/net/nettest" ) func TestDial(t *testing.T) { ResetProxyEnv() t.Run("DirectWithCancel", func(t *testing.T) { defer ResetProxyEnv() - l, err := net.Listen("tcp", "127.0.0.1:0") + l, err := nettest.NewLocalListener("tcp") if err != nil { t.Fatal(err) } defer l.Close() - _, port, err := net.SplitHostPort(l.Addr().String()) - if err != nil { - t.Fatal(err) - } ctx, cancel := context.WithCancel(context.Background()) defer cancel() - c, err := Dial(ctx, l.Addr().Network(), net.JoinHostPort("", port)) + c, err := Dial(ctx, l.Addr().Network(), l.Addr().String()) if err != nil { t.Fatal(err) } @@ -38,18 +34,14 @@ func TestDial(t *testing.T) { }) t.Run("DirectWithTimeout", func(t *testing.T) { defer ResetProxyEnv() - l, err := net.Listen("tcp", "127.0.0.1:0") + l, err := nettest.NewLocalListener("tcp") if err != nil { t.Fatal(err) } defer l.Close() - _, port, err := net.SplitHostPort(l.Addr().String()) - if err != nil { - t.Fatal(err) - } ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - c, err := Dial(ctx, l.Addr().Network(), net.JoinHostPort("", port)) + c, err := Dial(ctx, l.Addr().Network(), l.Addr().String()) if err != nil { t.Fatal(err) } @@ -57,19 +49,15 @@ func TestDial(t *testing.T) { }) t.Run("DirectWithTimeoutExceeded", func(t *testing.T) { defer ResetProxyEnv() - l, err := net.Listen("tcp", "127.0.0.1:0") + l, err := nettest.NewLocalListener("tcp") if err != nil { t.Fatal(err) } defer l.Close() - _, port, err := net.SplitHostPort(l.Addr().String()) - if err != nil { - t.Fatal(err) - } ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond) time.Sleep(time.Millisecond) defer cancel() - c, err := Dial(ctx, l.Addr().Network(), net.JoinHostPort("", port)) + c, err := Dial(ctx, l.Addr().Network(), l.Addr().String()) if err == nil { defer c.Close() t.Fatal("failed to timeout")