]> Cypherpunks repositories - gostls13.git/commitdiff
net: skip tests if creating a socket is disallowed
authorTobias Klauser <tklauser@distanz.ch>
Wed, 15 Mar 2023 14:17:11 +0000 (15:17 +0100)
committerGopher Robot <gobot@golang.org>
Wed, 15 Mar 2023 17:06:26 +0000 (17:06 +0000)
In a container environment, creating a socket may be disallowed. Try to
detect these cases and skip the tests instead of failing them.

Fixes #58114

Change-Id: I681d19107e946d2508e2d1704956360f13c7335b
Reviewed-on: https://go-review.googlesource.com/c/go/+/476217
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
src/net/iprawsock_test.go
src/net/protoconn_test.go

index ca5ab480c0eca9419e5a532979e6cf34668ae982..a6db77480f8f950b7334a9037a6dc63c73d98f7f 100644 (file)
@@ -7,6 +7,7 @@
 package net
 
 import (
+       "internal/testenv"
        "reflect"
        "testing"
 )
@@ -94,7 +95,11 @@ func TestIPConnLocalName(t *testing.T) {
                        continue
                }
                c, err := ListenIP(tt.net, tt.laddr)
-               if err != nil {
+               if testenv.SyscallIsNotSupported(err) {
+                       // May be inside a container that disallows creating a socket.
+                       t.Logf("skipping %s test: %v", tt.net, err)
+                       continue
+               } else if err != nil {
                        t.Fatal(err)
                }
                defer c.Close()
@@ -105,13 +110,17 @@ func TestIPConnLocalName(t *testing.T) {
 }
 
 func TestIPConnRemoteName(t *testing.T) {
-       if !testableNetwork("ip:tcp") {
-               t.Skip("ip:tcp test")
+       network := "ip:tcp"
+       if !testableNetwork(network) {
+               t.Skipf("skipping %s test", network)
        }
 
        raddr := &IPAddr{IP: IPv4(127, 0, 0, 1).To4()}
-       c, err := DialIP("ip:tcp", &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr)
-       if err != nil {
+       c, err := DialIP(network, &IPAddr{IP: IPv4(127, 0, 0, 1)}, raddr)
+       if testenv.SyscallIsNotSupported(err) {
+               // May be inside a container that disallows creating a socket.
+               t.Skipf("skipping %s test: %v", network, err)
+       } else if err != nil {
                t.Fatal(err)
        }
        defer c.Close()
index e4198a3a051a6a8d7518953f94e25d2fc5545884..52cb508155f6f7b9bb0e7b6e5f73008a655aed5c 100644 (file)
@@ -10,6 +10,7 @@
 package net
 
 import (
+       "internal/testenv"
        "os"
        "runtime"
        "testing"
@@ -161,16 +162,15 @@ func TestUDPConnSpecificMethods(t *testing.T) {
 }
 
 func TestIPConnSpecificMethods(t *testing.T) {
-       if os.Getuid() != 0 {
-               t.Skip("must be root")
-       }
-
        la, err := ResolveIPAddr("ip4", "127.0.0.1")
        if err != nil {
                t.Fatal(err)
        }
        c, err := ListenIP("ip4:icmp", la)
-       if err != nil {
+       if testenv.SyscallIsNotSupported(err) {
+               // May be inside a container that disallows creating a socket.
+               t.Skipf("skipping: %v", err)
+       } else if err != nil {
                t.Fatal(err)
        }
        defer c.Close()