1
0
mirror of https://github.com/golang/go synced 2024-11-22 04:14:42 -07:00

misc/cgo/test: only run setgid test on GNU/Linux

Fixes #3874.

R=golang-dev, nj, r, minux.ma
CC=golang-dev
https://golang.org/cl/6446060
This commit is contained in:
Ian Lance Taylor 2012-07-28 10:40:51 -07:00
parent 601045e87a
commit f7f91a0506
4 changed files with 41 additions and 17 deletions

View File

@ -11,7 +11,6 @@ package cgotest
#include <stdlib.h> #include <stdlib.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <errno.h> #include <errno.h>
#include <unistd.h>
#define SHIFT(x, y) ((x)<<(y)) #define SHIFT(x, y) ((x)<<(y))
#define KILO SHIFT(1, 10) #define KILO SHIFT(1, 10)
@ -58,7 +57,6 @@ import "C"
import ( import (
"syscall" "syscall"
"testing" "testing"
"time"
"unsafe" "unsafe"
) )
@ -126,20 +124,6 @@ func testMultipleAssign(t *testing.T) {
C.free(unsafe.Pointer(p)) 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 ( var (
cuint = (C.uint)(0) cuint = (C.uint)(0)
culong C.ulong culong C.ulong

View File

@ -0,0 +1,9 @@
// 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) }

View File

@ -27,6 +27,5 @@ func Test1328(t *testing.T) { test1328(t) }
func TestParallelSleep(t *testing.T) { testParallelSleep(t) } func TestParallelSleep(t *testing.T) { testParallelSleep(t) }
func TestSetEnv(t *testing.T) { testSetEnv(t) } func TestSetEnv(t *testing.T) { testSetEnv(t) }
func TestHelpers(t *testing.T) { testHelpers(t) } func TestHelpers(t *testing.T) { testHelpers(t) }
func TestSetgid(t *testing.T) { testSetgid(t) }
func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) } func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) }

View File

@ -0,0 +1,32 @@
// 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")
}
}