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:
parent
601045e87a
commit
f7f91a0506
@ -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
|
||||||
|
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 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) }
|
||||||
|
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