From ddf870c4d82b62ad0fbe8a202adab357c7b94a30 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 2 Oct 2009 22:40:01 -0600 Subject: [PATCH] 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 --- ChangeLog | 5 +++++ tests/test-fopen.h | 7 ++++--- tests/test-open.h | 7 ++++--- tests/test-openat-safer.c | 5 +++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index df080c8bb1..547a2a7cb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-10-02 Eric Blake + 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. diff --git a/tests/test-fopen.h b/tests/test-fopen.h index 01369f83c4..1920b27ed6 100644 --- a/tests/test-fopen.h +++ b/tests/test-fopen.h @@ -56,17 +56,18 @@ test_fopen (void) /* 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"); diff --git a/tests/test-open.h b/tests/test-open.h index 738103792a..4dba767087 100644 --- a/tests/test-open.h +++ b/tests/test-open.h @@ -47,7 +47,8 @@ test_open (void) /* 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 @@ test_open (void) /* 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); diff --git a/tests/test-openat-safer.c b/tests/test-openat-safer.c index 7e44d674dc..221a8801fb 100644 --- a/tests/test-openat-safer.c +++ b/tests/test-openat-safer.c @@ -101,10 +101,11 @@ main () 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); -- 2.30.2