changeset 12107:90198e1c7821

test-open: support mingw errno values mingw has non-standard errno values for handling directory opens, but they weren't worth working around in the gnulib modules. * tests/test-open.h (test_open): Relax test. * tests/test-fopen.h (test_fopen): Likewise. * tests/test-openat-safer.c (main): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Fri, 02 Oct 2009 22:40:01 -0600
parents 5f350c5819bd
children fd6226a4117b
files ChangeLog tests/test-fopen.h tests/test-open.h tests/test-openat-safer.c
diffstat 4 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2009-10-02  Eric Blake  <ebb9@byu.net>
 
+	test-open: support mingw errno values
+	* tests/test-open.h (test_open): Relax test.
+	* tests/test-fopen.h (test_fopen): Likewise.
+	* tests/test-openat-safer.c (main): Likewise.
+
 	open: fix opening directory on mingw
 	* lib/open.c (open) [REPLACE_OPEN_DIRECTORY]: Correct typo.
 
--- a/tests/test-fopen.h
+++ b/tests/test-fopen.h
@@ -56,17 +56,18 @@
   /* Trailing slash is invalid on non-directory.  */
   errno = 0;
   ASSERT (fopen (BASE "file/", "r") == NULL);
-  ASSERT (errno == ENOTDIR || errno == EISDIR);
+  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL);
 
   /* Cannot create a directory.  */
   errno = 0;
   ASSERT (fopen ("nonexist.ent/", "w") == NULL);
-  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT);
+  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT
+          || errno == EINVAL);
 
   /* Directories cannot be opened for writing.  */
   errno = 0;
   ASSERT (fopen (".", "w") == NULL);
-  ASSERT (errno == EISDIR || errno == EINVAL);
+  ASSERT (errno == EISDIR || errno == EINVAL || errno == EACCES);
 
   /* /dev/null must exist, and be writable.  */
   f = fopen ("/dev/null", "r");
--- a/tests/test-open.h
+++ b/tests/test-open.h
@@ -47,7 +47,8 @@
   /* Cannot create directory.  */
   errno = 0;
   ASSERT (open ("nonexist.ent/", O_CREAT | O_RDONLY, 0600) == -1);
-  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT);
+  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT
+          || errno == EINVAL);
 
   /* Create a regular file.  */
   fd = open (BASE "file", O_CREAT | O_RDONLY, 0600);
@@ -57,12 +58,12 @@
   /* Trailing slash handling.  */
   errno = 0;
   ASSERT (open (BASE "file/", O_RDONLY) == -1);
-  ASSERT (errno == ENOTDIR || errno == EISDIR);
+  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL);
 
   /* Directories cannot be opened for writing.  */
   errno = 0;
   ASSERT (open (".", O_WRONLY) == -1);
-  ASSERT (errno == EISDIR);
+  ASSERT (errno == EISDIR || errno == EACCES);
 
   /* /dev/null must exist, and be writable.  */
   fd = open ("/dev/null", O_RDONLY);
--- a/tests/test-openat-safer.c
+++ b/tests/test-openat-safer.c
@@ -101,10 +101,11 @@
 	  errno = 0;
 	  ASSERT (openat (dfd, "nonexist.ent/", O_CREAT | O_RDONLY,
 			  S_IRUSR | S_IWUSR) == -1);
-	  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT);
+	  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == ENOENT
+		  || errno == EINVAL);
 	  errno = 0;
 	  ASSERT (openat (dfd, witness "/", O_RDONLY) == -1);
-	  ASSERT (errno == ENOTDIR || errno == EISDIR);
+	  ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL);
 	  /* Using a bad directory is okay for absolute paths.  */
 	  fd = openat (-1, "/dev/null", O_WRONLY);
 	  ASSERT (STDERR_FILENO < fd);