refresh patches
[gnulib.git] / tests / test-link.h
index 0d58262..d546d56 100644 (file)
@@ -1,9 +1,9 @@
 /* Test of link() function.
 /* Test of link() function.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -115,10 +115,10 @@ test_link (int (*func) (char const *, char const *), bool print)
   ASSERT (errno == ENOENT);
   errno = 0;
   ASSERT (func (BASE "a/", BASE "c") == -1);
   ASSERT (errno == ENOENT);
   errno = 0;
   ASSERT (func (BASE "a/", BASE "c") == -1);
-  ASSERT (errno == ENOTDIR);
+  ASSERT (errno == ENOTDIR || errno == EINVAL);
   errno = 0;
   ASSERT (func (BASE "a", BASE "c/") == -1);
   errno = 0;
   ASSERT (func (BASE "a", BASE "c/") == -1);
-  ASSERT (errno == ENOTDIR || errno == ENOENT);
+  ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EINVAL);
 
   /* Most platforms reject hard links to directories, and even on
      those that do permit it, most users can't create them.  We assume
 
   /* Most platforms reject hard links to directories, and even on
      those that do permit it, most users can't create them.  We assume
@@ -136,13 +136,15 @@ test_link (int (*func) (char const *, char const *), bool print)
     else
       {
         /* Most everyone else.  */
     else
       {
         /* Most everyone else.  */
-        ASSERT (errno == EPERM || errno == EACCES);
+        ASSERT (errno == EPERM || errno == EACCES || errno == EISDIR);
         errno = 0;
         ASSERT (func (BASE "d/.", BASE "c") == -1);
         errno = 0;
         ASSERT (func (BASE "d/.", BASE "c") == -1);
-        ASSERT (errno == EPERM || errno == EACCES || errno == EINVAL);
+        ASSERT (errno == EPERM || errno == EACCES || errno == EISDIR
+                || errno == EINVAL);
         errno = 0;
         ASSERT (func (BASE "d/.//", BASE "c") == -1);
         errno = 0;
         ASSERT (func (BASE "d/.//", BASE "c") == -1);
-        ASSERT (errno == EPERM || errno == EACCES || errno == EINVAL);
+        ASSERT (errno == EPERM || errno == EACCES || errno == EISDIR
+                || errno == EINVAL);
       }
   }
   ASSERT (unlink (BASE "a") == 0);
       }
   }
   ASSERT (unlink (BASE "a") == 0);
@@ -162,11 +164,15 @@ test_link (int (*func) (char const *, char const *), bool print)
     }
   errno = 0;
   ASSERT (func (BASE "b", BASE "link/") == -1);
     }
   errno = 0;
   ASSERT (func (BASE "b", BASE "link/") == -1);
-  ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EEXIST);
+  ASSERT (errno == ENOTDIR || errno == ENOENT || errno == EEXIST
+          || errno == EINVAL);
+  errno = 0;
+  ASSERT (func (BASE "b", BASE "link") == -1);
+  ASSERT (errno == EEXIST);
   ASSERT (rename (BASE "b", BASE "a") == 0);
   errno = 0;
   ASSERT (func (BASE "link/", BASE "b") == -1);
   ASSERT (rename (BASE "b", BASE "a") == 0);
   errno = 0;
   ASSERT (func (BASE "link/", BASE "b") == -1);
-  ASSERT (errno == ENOTDIR || errno == EEXIST);
+  ASSERT (errno == ENOTDIR || errno == EEXIST || errno == EINVAL);
 
   /* Clean up.  */
   ASSERT (unlink (BASE "a") == 0);
 
   /* Clean up.  */
   ASSERT (unlink (BASE "a") == 0);