bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

avoid test errors on WSL


From: Bruno Haible
Subject: avoid test errors on WSL
Date: Mon, 22 Jan 2018 05:10:48 +0100
User-agent: KMail/5.1.3 (Linux/4.4.0-104-generic; KDE/5.18.0; x86_64; ; )

Running the gnulib POSIX tests on Microsoft WSL (Windows Subsystem for Linux),
I see only 5 test failures:


FAIL: test-fcntl
================

../../gltests/test-fcntl.c:269: assertion 'errno == EINVAL' failed
FAIL test-fcntl (exit status: 134)

FAIL: test-poll
===============

Unconnected socket test... passed
Connected sockets test... failed (expecting POLLHUP after shutdown)
General socket test with fork... failed (expecting POLLHUP after shutdown)
Pipe test... passed
FAIL test-poll (exit status: 2)

FAIL: test-rename
=================

../../gltests/test-rename.h:342: assertion 'errno == EINVAL || errno == EBUSY 
|| errno == EISDIR || errno == ENOTEMPTY || errno == EEXIST' failed
FAIL test-rename (exit status: 134)

FAIL: test-renameat
===================

../../gltests/test-rename.h:342: assertion 'errno == EINVAL || errno == EBUSY 
|| errno == EISDIR || errno == ENOTEMPTY || errno == EEXIST' failed
FAIL test-renameat (exit status: 134)

FAIL: test-renameat2
====================

../../gltests/test-rename.h:342: assertion 'errno == EINVAL || errno == EBUSY 
|| errno == EISDIR || errno == ENOTEMPTY || errno == EEXIST' failed
FAIL test-renameat2 (exit status: 134)


Which means that this implementation of the Linux kernel interface is quite
mature w.r.t. POSIX compliance.

As usual [1], let's allow the differing errno value here. It's unlikely that
an application will rely on the precise errno values here.

This reduces the number of failing tests to 1.

[1] https://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00167.html


2018-01-21  Bruno Haible  <address@hidden>

        Avoid test failures on Microsoft Windows Subsystem for Linux.
        * tests/test-fcntl.c (main): Allow a different errno.
        * tests/test-rename.h (test_rename): Likewise.
        * tests/test-renameat.c (main): Likewise.
        * tests/test-renameat2.c (main): Likewise.

diff --git a/tests/test-fcntl.c b/tests/test-fcntl.c
index 7e726b1..476231b 100644
--- a/tests/test-fcntl.c
+++ b/tests/test-fcntl.c
@@ -266,7 +266,8 @@ main (void)
   ASSERT (errno == EINVAL);
   errno = 0;
   ASSERT (fcntl (fd, F_DUPFD_CLOEXEC, bad_fd) == -1);
-  ASSERT (errno == EINVAL);
+  ASSERT (errno == EINVAL
+          || errno == EMFILE /* WSL */);
 
   /* For F_DUPFD*, check for correct inheritance, as well as
      preservation of text vs. binary.  */
diff --git a/tests/test-rename.h b/tests/test-rename.h
index f959866..0548c6c 100644
--- a/tests/test-rename.h
+++ b/tests/test-rename.h
@@ -339,12 +339,14 @@ test_rename (int (*func) (char const *, char const *), 
bool print)
         errno = 0;
         ASSERT (func (BASE "dir2", BASE "dir/.") == -1);
         ASSERT (errno == EINVAL || errno == EBUSY || errno == EISDIR
-                || errno == ENOTEMPTY || errno == EEXIST);
+                || errno == ENOTEMPTY || errno == EEXIST
+                || errno == ENOENT /* WSL */);
       }
       {
         errno = 0;
         ASSERT (func (BASE "dir2/.", BASE "dir") == -1);
-        ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST);
+        ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST
+                || errno == ENOENT /* WSL */);
       }
       ASSERT (rmdir (BASE "dir") == 0);
       /* Files present here:
@@ -366,12 +368,14 @@ test_rename (int (*func) (char const *, char const *), 
bool print)
         errno = 0;
         ASSERT (func (BASE "dir2", BASE "dir/.//") == -1);
         ASSERT (errno == EINVAL || errno == EBUSY || errno == EISDIR
-                || errno == ENOTEMPTY || errno == EEXIST);
+                || errno == ENOTEMPTY || errno == EEXIST
+                || errno == ENOENT /* WSL */);
       }
       {
         errno = 0;
         ASSERT (func (BASE "dir2/.//", BASE "dir") == -1);
-        ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST);
+        ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST
+                || errno == ENOENT /* WSL */);
       }
       ASSERT (rmdir (BASE "dir2") == 0);
       /* Files present here:
diff --git a/tests/test-renameat.c b/tests/test-renameat.c
index 5496553..d72cd1f 100644
--- a/tests/test-renameat.c
+++ b/tests/test-renameat.c
@@ -155,10 +155,12 @@ main (void)
   errno = 0;
   ASSERT (renameat (dfd, BASE "sub2", dfd, BASE "sub1/.") == -1);
   ASSERT (errno == EINVAL || errno == EISDIR || errno == EBUSY
-          || errno == ENOTEMPTY || errno == EEXIST);
+          || errno == ENOTEMPTY || errno == EEXIST
+          || errno == ENOENT /* WSL */);
   errno = 0;
   ASSERT (renameat (dfd, BASE "sub2/.", dfd, BASE "sub1") == -1);
-  ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST);
+  ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST
+          || errno == ENOENT /* WSL */);
   errno = 0;
   ASSERT (renameat (dfd, BASE "17", dfd, BASE "sub1") == -1);
   ASSERT (errno == EISDIR);
diff --git a/tests/test-renameat2.c b/tests/test-renameat2.c
index f646cb6..0104890 100644
--- a/tests/test-renameat2.c
+++ b/tests/test-renameat2.c
@@ -158,10 +158,12 @@ main (void)
   errno = 0;
   ASSERT (renameat2 (dfd, BASE "sub2", dfd, BASE "sub1/.", 0) == -1);
   ASSERT (errno == EINVAL || errno == EISDIR || errno == EBUSY
-          || errno == ENOTEMPTY || errno == EEXIST);
+          || errno == ENOTEMPTY || errno == EEXIST
+          || errno == ENOENT /* WSL */);
   errno = 0;
   ASSERT (renameat2 (dfd, BASE "sub2/.", dfd, BASE "sub1", 0) == -1);
-  ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST);
+  ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST
+          || errno == ENOENT /* WSL */);
   errno = 0;
   ASSERT (renameat2 (dfd, BASE "17", dfd, BASE "sub1", 0) == -1);
   ASSERT (errno == EISDIR);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]