mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 15:17:31 -04:00
unix: delete TestDevices for *BSD and Darwin
Instead, add a small test verify Major, Minor and Mkdev using arbitrary numbers. Leave TestDevices on Linux as its major/minor numbers are guaranteed stable. Updates golang/go#25528 Updates golang/go#25535 Change-Id: Ic105211660d80f9b3508ca9d518e9fac3b7e3beb Reviewed-on: https://go-review.googlesource.com/114396 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
committed by
Tobias Klauser
parent
56ad15cc21
commit
e2c7578ad1
@@ -1,51 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// +build go1.7
|
|
||||||
|
|
||||||
package unix_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDevices(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
path string
|
|
||||||
major uint32
|
|
||||||
minor uint32
|
|
||||||
}{
|
|
||||||
// Most of the device major/minor numbers on Darwin are
|
|
||||||
// dynamically generated by devfs. These are some well-known
|
|
||||||
// static numbers.
|
|
||||||
{"/dev/ttyp0", 4, 0},
|
|
||||||
{"/dev/ttys0", 4, 48},
|
|
||||||
{"/dev/ptyp0", 5, 0},
|
|
||||||
{"/dev/ptyr0", 5, 32},
|
|
||||||
}
|
|
||||||
for _, tc := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) {
|
|
||||||
var stat unix.Stat_t
|
|
||||||
err := unix.Stat(tc.path, &stat)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("failed to stat device: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
dev := uint64(stat.Rdev)
|
|
||||||
if unix.Major(dev) != tc.major {
|
|
||||||
t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major)
|
|
||||||
}
|
|
||||||
if unix.Minor(dev) != tc.minor {
|
|
||||||
t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor)
|
|
||||||
}
|
|
||||||
if unix.Mkdev(tc.major, tc.minor) != dev {
|
|
||||||
t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// +build go1.7
|
|
||||||
|
|
||||||
package unix_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDevices(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
path string
|
|
||||||
major uint32
|
|
||||||
minor uint32
|
|
||||||
}{
|
|
||||||
// Minor is a cookie instead of an index on DragonFlyBSD
|
|
||||||
{"/dev/null", 10, 0x00000002},
|
|
||||||
{"/dev/random", 10, 0x00000003},
|
|
||||||
{"/dev/urandom", 10, 0x00000004},
|
|
||||||
{"/dev/zero", 10, 0x0000000c},
|
|
||||||
{"/dev/bpf", 15, 0xffff00ff},
|
|
||||||
}
|
|
||||||
for _, tc := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) {
|
|
||||||
var stat unix.Stat_t
|
|
||||||
err := unix.Stat(tc.path, &stat)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("failed to stat device: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
dev := uint64(stat.Rdev)
|
|
||||||
if unix.Major(dev) != tc.major {
|
|
||||||
t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major)
|
|
||||||
}
|
|
||||||
if unix.Minor(dev) != tc.minor {
|
|
||||||
t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor)
|
|
||||||
}
|
|
||||||
if unix.Mkdev(tc.major, tc.minor) != dev {
|
|
||||||
t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// +build go1.7
|
|
||||||
|
|
||||||
package unix_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDevices(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
path string
|
|
||||||
major uint32
|
|
||||||
minor uint32
|
|
||||||
}{
|
|
||||||
// well known major/minor numbers according to /dev/MAKEDEV on
|
|
||||||
// NetBSD 8.0
|
|
||||||
{"/dev/null", 2, 2},
|
|
||||||
{"/dev/zero", 2, 12},
|
|
||||||
{"/dev/random", 46, 0},
|
|
||||||
{"/dev/urandom", 46, 1},
|
|
||||||
}
|
|
||||||
for _, tc := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) {
|
|
||||||
var stat unix.Stat_t
|
|
||||||
err := unix.Stat(tc.path, &stat)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("failed to stat device: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
dev := uint64(stat.Rdev)
|
|
||||||
if unix.Major(dev) != tc.major {
|
|
||||||
t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major)
|
|
||||||
}
|
|
||||||
if unix.Minor(dev) != tc.minor {
|
|
||||||
t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor)
|
|
||||||
}
|
|
||||||
if unix.Mkdev(tc.major, tc.minor) != dev {
|
|
||||||
t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// +build go1.7
|
|
||||||
|
|
||||||
package unix_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDevices(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
path string
|
|
||||||
major uint32
|
|
||||||
minor uint32
|
|
||||||
}{
|
|
||||||
// well known major/minor numbers according to /dev/MAKEDEV on
|
|
||||||
// OpenBSD 6.3
|
|
||||||
{"/dev/null", 2, 2},
|
|
||||||
{"/dev/zero", 2, 12},
|
|
||||||
{"/dev/ttyp0", 5, 0},
|
|
||||||
{"/dev/ttyp1", 5, 1},
|
|
||||||
{"/dev/random", 45, 0}, // symlink to /dev/urandom
|
|
||||||
}
|
|
||||||
for _, tc := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) {
|
|
||||||
var stat unix.Stat_t
|
|
||||||
err := unix.Stat(tc.path, &stat)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("failed to stat device: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
dev := uint64(stat.Rdev)
|
|
||||||
if unix.Major(dev) != tc.major {
|
|
||||||
t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major)
|
|
||||||
}
|
|
||||||
if unix.Minor(dev) != tc.minor {
|
|
||||||
t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor)
|
|
||||||
}
|
|
||||||
if unix.Mkdev(tc.major, tc.minor) != dev {
|
|
||||||
t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -560,6 +560,19 @@ func TestFchmodat(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMkdev(t *testing.T) {
|
||||||
|
major := uint32(42)
|
||||||
|
minor := uint32(7)
|
||||||
|
dev := unix.Mkdev(major, minor)
|
||||||
|
|
||||||
|
if unix.Major(dev) != major {
|
||||||
|
t.Errorf("Major(%#x) == %d, want %d", dev, unix.Major(dev), major)
|
||||||
|
}
|
||||||
|
if unix.Minor(dev) != minor {
|
||||||
|
t.Errorf("Minor(%#x) == %d, want %d", dev, unix.Minor(dev), minor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// mktmpfifo creates a temporary FIFO and provides a cleanup function.
|
// mktmpfifo creates a temporary FIFO and provides a cleanup function.
|
||||||
func mktmpfifo(t *testing.T) (*os.File, func()) {
|
func mktmpfifo(t *testing.T) (*os.File, func()) {
|
||||||
err := unix.Mkfifo("fifo", 0666)
|
err := unix.Mkfifo("fifo", 0666)
|
||||||
|
|||||||
Reference in New Issue
Block a user