From: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com>
To: ltp-list@lists.sourceforge.net
Subject: [LTP] [PATCH v2] dup3(2): add EINVAL error number test
Date: Thu, 21 Nov 2013 16:22:01 +0800 [thread overview]
Message-ID: <528DC2A9.6060105@cn.fujitsu.com> (raw)
add EINVAL error number test
Signed-off-by: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/.gitignore | 1 +
testcases/kernel/syscalls/dup3/dup3_02.c | 119 +++++++++++++++++++++++++++++++
3 files changed, 121 insertions(+)
create mode 100644 testcases/kernel/syscalls/dup3/dup3_02.c
diff --git a/runtest/syscalls b/runtest/syscalls
index fa01ff7..e7e8a9a 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -118,6 +118,7 @@ dup204 dup204
dup205 dup205
dup3_01 dup3_01
+dup3_02 dup3_02
epoll_create1_01 epoll_create1_01
epoll01 epoll-ltp
diff --git a/testcases/kernel/syscalls/.gitignore b/testcases/kernel/syscalls/.gitignore
index 0130a53..e100dd9 100644
--- a/testcases/kernel/syscalls/.gitignore
+++ b/testcases/kernel/syscalls/.gitignore
@@ -96,6 +96,7 @@
/dup2/dup204
/dup2/dup205
/dup3/dup3_01
+/dup3/dup3_02
/epoll/epoll-ltp
/epoll_create1/epoll_create1_01
/eventfd/eventfd01
diff --git a/testcases/kernel/syscalls/dup3/dup3_02.c b/testcases/kernel/syscalls/dup3/dup3_02.c
new file mode 100644
index 0000000..962cc55
--- /dev/null
+++ b/testcases/kernel/syscalls/dup3/dup3_02.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2013 Fujitsu Ltd.
+ * Author: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/*
+ * Description:
+ * Verify that,
+ * 1. dup3() fails with -1 return value and sets errno to EINVAL
+ * if flags contain an invalid value or oldfd was equal to newfd.
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include <signal.h>
+#include <sys/types.h>
+
+#include "test.h"
+#include "usctest.h"
+#include "safe_macros.h"
+#include "linux_syscall_numbers.h"
+
+
+static void setup(void);
+static void cleanup(void);
+
+#define INVALID_FLAG -1
+
+static int old_fd;
+static int new_fd;
+
+static struct test_case_t {
+ int *oldfd;
+ int *newfd;
+ int flags;
+ int exp_errno;
+} test_cases[] = {
+ {&old_fd, &old_fd, O_CLOEXEC, EINVAL},
+ {&old_fd, &old_fd, 0, EINVAL},
+ {&old_fd, &new_fd, INVALID_FLAG, EINVAL}
+};
+
+char *TCID = "dup3_02";
+int TST_TOTAL = ARRAY_SIZE(test_cases);
+static int exp_enos[] = {EINVAL, 0};
+
+int main(int ac, char **av)
+{
+ int lc;
+ int i;
+
+
+ setup();
+
+ TEST_EXP_ENOS(exp_enos);
+
+ for (lc = 0; TEST_LOOPING(lc); lc++) {
+ tst_count = 0;
+
+ for (i = 0; i < TST_TOTAL; i++) {
+ TEST(ltp_syscall(__NR_dup3, *(test_cases[i].oldfd),
+ *(test_cases[i].newfd), test_cases[i].flags));
+
+ if (TEST_RETURN != -1) {
+ tst_resm(TFAIL, "dup3 succeeded unexpectedly");
+ continue;
+ }
+
+ if (TEST_ERRNO == test_cases[i].exp_errno) {
+ tst_resm(TPASS | TTERRNO,
+ "dup3 failed as expected");
+ } else {
+ tst_resm(TFAIL | TTERRNO,
+ "dup3 failed unexpectedly; expected:",
+ "%d - %s", test_cases[i].exp_errno,
+ strerror(test_cases[i].exp_errno));
+ }
+ }
+ }
+
+ cleanup();
+ tst_exit();
+}
+
+static void setup(void)
+{
+ tst_sig(NOFORK, DEF_HANDLER, cleanup);
+
+ tst_tmpdir();
+
+ TEST_PAUSE;
+
+ old_fd = SAFE_CREAT(cleanup, "testeinval.file", 0644);
+ new_fd = -1;
+}
+
+static void cleanup(void)
+{
+ TEST_CLEANUP;
+
+ SAFE_CLOSE(cleanup, old_fd);
+
+ tst_rmdir();
+}
--
1.8.2.1
------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing
conversations that shape the rapidly evolving mobile landscape. Sign up now.
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2013-11-21 8:22 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-21 8:22 Xiaoguang Wang [this message]
2013-11-21 9:03 ` [LTP] [PATCH v2] dup3(2): add EINVAL error number test chrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=528DC2A9.6060105@cn.fujitsu.com \
--to=wangxg.fnst@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.