]> granicus.if.org Git - strace/commitdiff
tests: add access.test
authorFei Jie <feij.fnst@cn.fujitsu.com>
Thu, 21 Apr 2016 07:53:51 +0000 (15:53 +0800)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 21 Apr 2016 17:37:43 +0000 (17:37 +0000)
* tests/access.c: New file.
* tests/access.test: New test.
* tests/.gitignore: Add access.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add access.test.

tests/.gitignore
tests/Makefile.am
tests/access.c [new file with mode: 0644]
tests/access.test [new file with mode: 0755]

index e33c0094487b20d0c20cf0736254edeb01507f92..248110cc715225b2e84c3da31ddf1a9e06f8de7e 100644 (file)
@@ -6,6 +6,7 @@
 *.tmp.*
 *.trs
 _newselect
+access
 acct
 adjtimex
 aio
index 08889a5dc119433dfda75ba59261cbd00fcf58bf..111397232ec64ad4b7d72a1555b11b5843af9b72 100644 (file)
@@ -59,6 +59,7 @@ LDADD = libtests.a
 
 check_PROGRAMS = \
        _newselect \
+       access \
        acct \
        adjtimex \
        aio \
@@ -313,6 +314,7 @@ endif
 
 DECODER_TESTS = \
        _newselect.test \
+       access.test \
        acct.test \
        adjtimex.test \
        aio.test \
diff --git a/tests/access.c b/tests/access.c
new file mode 100644 (file)
index 0000000..aeb3a79
--- /dev/null
@@ -0,0 +1,30 @@
+#include "tests.h"
+#include <sys/syscall.h>
+
+#ifdef __NR_access
+
+# include <errno.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+       static const char sample[] = "access_sample";
+
+       long rc = syscall(__NR_access, sample, F_OK);
+       printf("access(\"%s\", F_OK) = %ld %s (%m)\n",
+              sample, rc, errno == ENOSYS ? "ENOSYS" : "ENOENT");
+
+       rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK);
+       printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
+              sample, rc, errno == ENOSYS ? "ENOSYS" : "ENOENT");
+
+       return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_access")
+
+#endif
diff --git a/tests/access.test b/tests/access.test
new file mode 100755 (executable)
index 0000000..3ab2eb4
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Check access syscall decoding.
+
+. "${srcdir=.}/init.sh"
+
+check_prog grep
+run_prog > /dev/null
+run_strace -eaccess -a30 $args > "$EXP"
+
+# Filter out access() calls made by libc.
+grep -F access_sample < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+
+rm -f "$EXP" "$OUT"