#include <stdlib.h>
#include <sys/stat.h>
#include <errno.h>
-#include <unistd.h>
#define SHIFT(x, y) ((x)<<(y))
#define KILO SHIFT(1, 10)
import (
"syscall"
"testing"
- "time"
"unsafe"
)
C.free(unsafe.Pointer(p))
}
-func testSetgid(t *testing.T) {
- // Issue 3871.
- c := make(chan bool)
- go func() {
- C.setgid(0)
- c <- true
- }()
- select {
- case <-c:
- case <-time.After(5 * time.Second):
- t.Error("setgid hung")
- }
-}
-
var (
cuint = (C.uint)(0)
culong C.ulong
--- /dev/null
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cgotest
+
+import "testing"
+
+func TestSetgid(t *testing.T) { testSetgid(t) }
func TestParallelSleep(t *testing.T) { testParallelSleep(t) }
func TestSetEnv(t *testing.T) { testSetEnv(t) }
func TestHelpers(t *testing.T) { testHelpers(t) }
-func TestSetgid(t *testing.T) { testSetgid(t) }
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }
--- /dev/null
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that setgid does not hang on GNU/Linux.
+// See http://code.google.com/p/go/issues/detail?id=3871 for details.
+
+package cgotest
+
+/*
+#include <sys/types.h>
+#include <unistd.h>
+*/
+import "C"
+
+import (
+ "testing"
+ "time"
+)
+
+func testSetgid(t *testing.T) {
+ c := make(chan bool)
+ go func() {
+ C.setgid(0)
+ c <- true
+ }()
+ select {
+ case <-c:
+ case <-time.After(5 * time.Second):
+ t.Error("setgid hung")
+ }
+}