aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/syscall_linux_test.go
diff options
context:
space:
mode:
authorTobias Klauser <tklauser@distanz.ch>2018-06-20 15:41:37 +0200
committerTobias Klauser <tobias.klauser@gmail.com>2018-06-21 06:47:46 +0000
commit85e38cccb4d113862f4fd2c3c4d97927cd84420c (patch)
treec39d71d5531a6e50a952044a422f8395419f7c89 /src/syscall/syscall_linux_test.go
parentfeeff23556bc82778aab0ed80b576b953f064024 (diff)
downloadgo-85e38cccb4d113862f4fd2c3c4d97927cd84420c.tar.xz
syscall: check faccessat flags parameter on Linux
Port CL 119495 from golang.org/x/sys/unix to the syscall package. Currently Linux faccessat(2) syscall implementation doesn't support the flags parameter. As per the discussion in #25845, permit the same flags as glibc [1]. [1] https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;h=ea42b2303ff4b2d2d6548ea04376fb265f773436;hb=HEAD Updates #25845 Change-Id: I132b33275a9cc72b3a97acea5482806c7f47d7f7 Reviewed-on: https://go-review.googlesource.com/120015 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/syscall/syscall_linux_test.go')
-rw-r--r--src/syscall/syscall_linux_test.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/syscall/syscall_linux_test.go b/src/syscall/syscall_linux_test.go
index 4490fc24ca..24158bb8b8 100644
--- a/src/syscall/syscall_linux_test.go
+++ b/src/syscall/syscall_linux_test.go
@@ -56,8 +56,39 @@ func touch(t *testing.T, name string) {
const (
_AT_SYMLINK_NOFOLLOW = 0x100
_AT_FDCWD = -0x64
+ _AT_EACCESS = 0x200
)
+func TestFaccessat(t *testing.T) {
+ defer chtmpdir(t)()
+ touch(t, "file1")
+
+ err := syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, 0)
+ if err != nil {
+ t.Errorf("Faccessat: unexpected error: %v", err)
+ }
+
+ err = syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, 2)
+ if err != syscall.EINVAL {
+ t.Errorf("Faccessat: unexpected error: %v, want EINVAL", err)
+ }
+
+ err = syscall.Faccessat(_AT_FDCWD, "file1", syscall.O_RDONLY, _AT_EACCESS)
+ if err != syscall.EOPNOTSUPP {
+ t.Errorf("Faccessat: unexpected error: %v, want EOPNOTSUPP", err)
+ }
+
+ err = os.Symlink("file1", "symlink1")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ err = syscall.Faccessat(_AT_FDCWD, "symlink1", syscall.O_RDONLY, _AT_SYMLINK_NOFOLLOW)
+ if err != syscall.EOPNOTSUPP {
+ t.Errorf("Faccessat: unexpected error: %v, want EOPNOTSUPP", err)
+ }
+}
+
func TestFchmodat(t *testing.T) {
defer chtmpdir(t)()