mirror of
https://github.com/golang/go
synced 2024-11-21 21:44:40 -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:
parent
601045e87a
commit
f7f91a0506
@ -11,7 +11,6 @@ package cgotest
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define SHIFT(x, y) ((x)<<(y))
|
||||
#define KILO SHIFT(1, 10)
|
||||
@ -58,7 +57,6 @@ import "C"
|
||||
import (
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
@ -126,20 +124,6 @@ func testMultipleAssign(t *testing.T) {
|
||||
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
|
||||
|
9
misc/cgo/test/cgo_linux_test.go
Normal file
9
misc/cgo/test/cgo_linux_test.go
Normal 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) }
|
@ -27,6 +27,5 @@ func Test1328(t *testing.T) { test1328(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) }
|
||||
|
32
misc/cgo/test/setgid_linux.go
Normal file
32
misc/cgo/test/setgid_linux.go
Normal 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")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user