From: Bruno Haible <bruno@clisp.org>
Date: Sun, 23 Aug 2009 21:47:02 +0000 (+0200)
Subject: Tweak the dup2 test.
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49bfafdba9fbbb137836254d1ec7cbf65898ee56;p=pspp

Tweak the dup2 test.
---

diff --git a/ChangeLog b/ChangeLog
index 80d97a9562..748419fafd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-08-23  Bruno Haible  <bruno@clisp.org>
+
+	Tweak the dup2 test.
+	* tests/test-dup2.c (main): Create the test file empty. Verify that an
+	out-of-range fd yields EBADF. Verify that after writing to /dev/null,
+	the test file is still empty. Fix argument order of lseek.
+
 2009-08-23  Bruno Haible  <bruno@clisp.org>
 
 	Avoid test link errors when the modules getopt-gnu, gettext are used.
diff --git a/tests/test-dup2.c b/tests/test-dup2.c
index 2009aaa263..379a6135ee 100644
--- a/tests/test-dup2.c
+++ b/tests/test-dup2.c
@@ -65,7 +65,7 @@ main ()
 {
   const char *file = "test-dup2.tmp";
   char buffer[1];
-  int fd = open (file, O_CREAT | O_RDWR, 0600);
+  int fd = open (file, O_CREAT | O_TRUNC | O_RDWR, 0600);
 
   /* Assume std descriptors were provided by invoker.  */
   ASSERT (STDERR_FILENO < fd);
@@ -94,6 +94,9 @@ main ()
   errno = 0;
   ASSERT (dup2 (fd, -2) == -1);
   ASSERT (errno == EBADF);
+  errno = 0;
+  ASSERT (dup2 (fd, 10000000) == -1);
+  ASSERT (errno == EBADF);
 
   /* Using dup2 can skip fds.  */
   ASSERT (dup2 (fd, fd + 2) == fd + 2);
@@ -101,14 +104,15 @@ main ()
   ASSERT (!is_open (fd + 1));
   ASSERT (is_open (fd + 2));
 
-  /* Prove that dup2 closes the previous occupant of a fd.  */
+  /* Verify that dup2 closes the previous occupant of a fd.  */
   ASSERT (open ("/dev/null", O_WRONLY, 0600) == fd + 1);
   ASSERT (dup2 (fd + 1, fd) == fd);
   ASSERT (close (fd + 1) == 0);
   ASSERT (write (fd, "1", 1) == 1);
   ASSERT (dup2 (fd + 2, fd) == fd);
+  ASSERT (lseek (fd, 0, SEEK_END) == 0);
   ASSERT (write (fd + 2, "2", 1) == 1);
-  ASSERT (lseek (fd, SEEK_SET, 0) == 0);
+  ASSERT (lseek (fd, 0, SEEK_SET) == 0);
   ASSERT (read (fd, buffer, 1) == 1);
   ASSERT (*buffer == '2');