Mercurial > hg > octave-nkf > gnulib-hg
annotate tests/test-canonicalize-lgpl.c @ 16817:7747cb9b54b9
unistd_h: make it easier to avoid sys_types_h
This is useful for Emacs, which has its own method of porting to
Windows, and which therefore does not need the sys_types_h module.
* m4/off_t.m4: New file, defining gl_TYPE_OFF_T, which contains
code moved here from gl_SYS_TYPES_H.
* m4/sys_types_h.m4 (gl_SYS_TYPES_H): Require it instead of
using the code directly.
* m4/unistd_h.m4 (gl_UNISTD_H): Require gl_TYPE_OFF_T, not
gl_SYS_TYPES_H.
* modules/sys_types (Files):
* modules/unistd (Files): Add m4/off_t.m4.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Fri, 04 May 2012 13:05:31 -0700 |
parents | 8250f2777afc |
children | e542fd46ad6f |
rev | line source |
---|---|
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Test of execution of program termination handlers. |
16201
8250f2777afc
maint: update all copyright year number ranges
Jim Meyering <meyering@redhat.com>
parents:
14079
diff
changeset
|
2 Copyright (C) 2007-2012 Free Software Foundation, Inc. |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9050
diff
changeset
|
4 This program is free software: you can redistribute it and/or modify |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9050
diff
changeset
|
6 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9050
diff
changeset
|
7 (at your option) any later version. |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
9050
diff
changeset
|
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */ |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 |
8891
633babea5f62
Unconditionally include <config.h> in unit tests.
Eric Blake <ebb9@byu.net>
parents:
8754
diff
changeset
|
19 #include <config.h> |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
20 |
12015
9317d4a9ac96
canonicalize, canonicalize-lgpl: use <stdlib.h>
Eric Blake <ebb9@byu.net>
parents:
12013
diff
changeset
|
21 #include <stdlib.h> |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
22 |
12489 | 23 #include "signature.h" |
24 SIGNATURE_CHECK (realpath, char *, (const char *, char *)); | |
25 SIGNATURE_CHECK (canonicalize_file_name, char *, (const char *)); | |
26 | |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
27 #include <errno.h> |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
28 #include <fcntl.h> |
8754 | 29 #include <stdio.h> |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
30 #include <string.h> |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
31 #include <sys/stat.h> |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
32 #include <unistd.h> |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
33 |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
34 #include "same-inode.h" |
12842
b2bf8684a2db
tests: silence warning about system return
Eric Blake <ebb9@byu.net>
parents:
12559
diff
changeset
|
35 #include "ignore-value.h" |
12496
a48d3d749ca5
Refactor common macros used in tests.
Bruno Haible <bruno@clisp.org>
parents:
12489
diff
changeset
|
36 #include "macros.h" |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
38 #define BASE "t-can-lgpl.tmp" |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
39 |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
40 static void * |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
41 null_ptr (void) |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
42 { |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
43 return NULL; |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
44 } |
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
45 |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 int |
12197
e45d9bb2233e
tests: avoid several compiler warnings
Eric Blake <ebb9@byu.net>
parents:
12146
diff
changeset
|
47 main (void) |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 { |
13073
03de1efbfdd3
Resolve conflict between the two kinds of module indicators.
Bruno Haible <bruno@clisp.org>
parents:
12842
diff
changeset
|
49 #if GNULIB_TEST_CANONICALIZE |
9050
9a948e3ed584
Fix testing canonicalize on cygwin.
Eric Blake <ebb9@byu.net>
parents:
8891
diff
changeset
|
50 /* No need to test canonicalize-lgpl module if canonicalize is also |
9a948e3ed584
Fix testing canonicalize on cygwin.
Eric Blake <ebb9@byu.net>
parents:
8891
diff
changeset
|
51 in use. */ |
9a948e3ed584
Fix testing canonicalize on cygwin.
Eric Blake <ebb9@byu.net>
parents:
8891
diff
changeset
|
52 return 0; |
9a948e3ed584
Fix testing canonicalize on cygwin.
Eric Blake <ebb9@byu.net>
parents:
8891
diff
changeset
|
53 #endif |
9a948e3ed584
Fix testing canonicalize on cygwin.
Eric Blake <ebb9@byu.net>
parents:
8891
diff
changeset
|
54 |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
55 /* Setup some hierarchy to be used by this test. Start by removing |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
56 any leftovers from a previous partial run. */ |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
57 { |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
58 int fd; |
12842
b2bf8684a2db
tests: silence warning about system return
Eric Blake <ebb9@byu.net>
parents:
12559
diff
changeset
|
59 ignore_value (system ("rm -rf " BASE " ise")); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
60 ASSERT (mkdir (BASE, 0700) == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
61 fd = creat (BASE "/tra", 0600); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
62 ASSERT (0 <= fd); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
63 ASSERT (close (fd) == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
64 } |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
65 |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
66 /* Check for ., .., intermediate // handling, and for error cases. */ |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
67 { |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
68 char *result = canonicalize_file_name (BASE "//./..//" BASE "/tra"); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
69 ASSERT (result != NULL); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
70 ASSERT (strstr (result, "/" BASE "/tra") |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
71 == result + strlen (result) - strlen ("/" BASE "/tra")); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
72 free (result); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
73 errno = 0; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
74 result = canonicalize_file_name (""); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
75 ASSERT (result == NULL); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
76 ASSERT (errno == ENOENT); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
77 errno = 0; |
12422
f7842310a565
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
78 result = canonicalize_file_name (null_ptr ()); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
79 ASSERT (result == NULL); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
80 ASSERT (errno == EINVAL); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
81 } |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
82 |
12017
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
83 /* Check that a non-directory with trailing slash yields NULL. */ |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
84 { |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
85 char *result; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
86 errno = 0; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
87 result = canonicalize_file_name (BASE "/tra/"); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
88 ASSERT (result == NULL); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
89 ASSERT (errno == ENOTDIR); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
90 } |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
91 |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
92 /* Check that a missing directory yields NULL. */ |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
93 { |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
94 char *result; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
95 errno = 0; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
96 result = canonicalize_file_name (BASE "/zzz/.."); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
97 ASSERT (result == NULL); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
98 ASSERT (errno == ENOENT); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
99 } |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
100 |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
101 /* From here on out, tests involve symlinks. */ |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
102 if (symlink (BASE "/ket", "ise") != 0) |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
103 { |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
104 ASSERT (remove (BASE "/tra") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
105 ASSERT (rmdir (BASE) == 0); |
12146
e076a06bae48
maint: prefer 'file system' over 'filesystem'
Eric Blake <ebb9@byu.net>
parents:
12057
diff
changeset
|
106 fputs ("skipping test: symlinks not supported on this file system\n", |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
107 stderr); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
108 return 77; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
109 } |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
110 ASSERT (symlink ("bef", BASE "/plo") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
111 ASSERT (symlink ("tra", BASE "/huk") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
112 ASSERT (symlink ("lum", BASE "/bef") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
113 ASSERT (symlink ("wum", BASE "/ouk") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
114 ASSERT (symlink ("../ise", BASE "/ket") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
115 ASSERT (mkdir (BASE "/lum", 0700) == 0); |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
116 ASSERT (symlink ("//.//../..", BASE "/droot") == 0); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
117 |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 /* Check that the symbolic link to a file can be resolved. */ |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
119 { |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
120 char *result1 = canonicalize_file_name (BASE "/huk"); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
121 char *result2 = canonicalize_file_name (BASE "/tra"); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
122 ASSERT (result1 != NULL); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 ASSERT (result2 != NULL); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
124 ASSERT (strcmp (result1, result2) == 0); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
125 ASSERT (strcmp (result1 + strlen (result1) - strlen ("/" BASE "/tra"), |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
126 "/" BASE "/tra") == 0); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 free (result1); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 free (result2); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 } |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
131 /* Check that the symbolic link to a directory can be resolved. */ |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
132 { |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
133 char *result1 = canonicalize_file_name (BASE "/plo"); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
134 char *result2 = canonicalize_file_name (BASE "/bef"); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
135 char *result3 = canonicalize_file_name (BASE "/lum"); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 ASSERT (result1 != NULL); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
137 ASSERT (result2 != NULL); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
138 ASSERT (result3 != NULL); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
139 ASSERT (strcmp (result1, result2) == 0); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 ASSERT (strcmp (result2, result3) == 0); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
141 ASSERT (strcmp (result1 + strlen (result1) - strlen ("/" BASE "/lum"), |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
142 "/" BASE "/lum") == 0); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
143 free (result1); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 free (result2); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
145 free (result3); |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
146 } |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
148 /* Check that a symbolic link to a nonexistent file yields NULL. */ |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
149 { |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
150 char *result; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
151 errno = 0; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
152 result = canonicalize_file_name (BASE "/ouk"); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
153 ASSERT (result == NULL); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
154 ASSERT (errno == ENOENT); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
155 } |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
156 |
12017
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
157 /* Check that a non-directory symlink with trailing slash yields NULL. */ |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
158 { |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
159 char *result; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
160 errno = 0; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
161 result = canonicalize_file_name (BASE "/huk/"); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
162 ASSERT (result == NULL); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
163 ASSERT (errno == ENOTDIR); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
164 } |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
165 |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
166 /* Check that a missing directory via symlink yields NULL. */ |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
167 { |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
168 char *result; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
169 errno = 0; |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
170 result = canonicalize_file_name (BASE "/ouk/.."); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
171 ASSERT (result == NULL); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
172 ASSERT (errno == ENOENT); |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
173 } |
acc38673eec3
canonicalize-lgpl: reject non-directory with trailing slash
Eric Blake <ebb9@byu.net>
parents:
12015
diff
changeset
|
174 |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
175 /* Check that a loop of symbolic links is detected. */ |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
176 { |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
177 char *result; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
178 errno = 0; |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
179 result = canonicalize_file_name ("ise"); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
180 ASSERT (result == NULL); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
181 ASSERT (errno == ELOOP); |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
182 } |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
183 |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
184 /* Check that leading // is honored correctly. */ |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
185 { |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
186 struct stat st1; |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
187 struct stat st2; |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
188 char *result1 = canonicalize_file_name ("//."); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
189 char *result2 = canonicalize_file_name (BASE "/droot"); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
190 ASSERT (result1); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
191 ASSERT (result2); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
192 ASSERT (stat ("/", &st1) == 0); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
193 ASSERT (stat ("//", &st2) == 0); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
194 if (SAME_INODE (st1, st2)) |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
195 { |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
196 ASSERT (strcmp (result1, "/") == 0); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
197 ASSERT (strcmp (result2, "/") == 0); |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
198 } |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
199 else |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
200 { |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
201 ASSERT (strcmp (result1, "//") == 0); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
12197
diff
changeset
|
202 ASSERT (strcmp (result2, "//") == 0); |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
203 } |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
204 free (result1); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
205 free (result2); |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
206 } |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
207 |
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
208 |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
209 /* Cleanup. */ |
12019
4e6951cd4f33
canonicalize, canonicalize-lgpl: honor // if distinct from /
Eric Blake <ebb9@byu.net>
parents:
12017
diff
changeset
|
210 ASSERT (remove (BASE "/droot") == 0); |
12013
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
211 ASSERT (remove (BASE "/plo") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
212 ASSERT (remove (BASE "/huk") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
213 ASSERT (remove (BASE "/bef") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
214 ASSERT (remove (BASE "/ouk") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
215 ASSERT (remove (BASE "/ket") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
216 ASSERT (remove (BASE "/lum") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
217 ASSERT (remove (BASE "/tra") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
218 ASSERT (remove (BASE) == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
219 ASSERT (remove ("ise") == 0); |
284fbf719a2a
test-canonicalize-lgpl: consolidate into single C program
Eric Blake <ebb9@byu.net>
parents:
9889
diff
changeset
|
220 |
8415
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
221 return 0; |
87ba7f58a9a1
Tests for module 'canonicalize-lgpl'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
222 } |