]>
Commit | Line | Data |
---|---|---|
e1aff6f9 BP |
1 | AT_BANNER([test dir_name and base_name functions]) |
2 | ||
3 | m4_define([CHECK_FILE_NAME], | |
4 | [AT_SETUP([components of "$1" are "$2", "$3"]) | |
3c1150ce | 5 | AT_SKIP_IF([test "$IS_WIN32" = "yes"]) |
e1aff6f9 | 6 | AT_KEYWORDS([dir_name base_name]) |
3c1150ce | 7 | AT_CHECK([ovstest test-util file_name "AS_ESCAPE($1)"], [0], [$2 |
e1aff6f9 BP |
8 | $3 |
9 | ]) | |
10 | AT_CLEANUP]) | |
11 | ||
12 | # These are the test cases given in POSIX for dirname() and basename(). | |
13 | CHECK_FILE_NAME([/usr/lib], [/usr], [lib]) | |
14 | CHECK_FILE_NAME([/usr/], [/], [usr]) | |
15 | CHECK_FILE_NAME([usr], [.], [usr]) | |
16 | CHECK_FILE_NAME([/], [/], [/]) | |
17 | CHECK_FILE_NAME([.], [.], [.]) | |
18 | CHECK_FILE_NAME([..], [.], [..]) | |
19 | CHECK_FILE_NAME([//], [//], [//]) # / is also allowed | |
20 | CHECK_FILE_NAME([//foo], [//], [foo]) # / is also allowed for dirname | |
21 | CHECK_FILE_NAME([], [.], [.]) | |
22 | ||
23 | # Additional test cases. | |
24 | CHECK_FILE_NAME([dir/file], [dir], [file]) | |
25 | CHECK_FILE_NAME([dir/file/], [dir], [file]) | |
26 | CHECK_FILE_NAME([dir/file//], [dir], [file]) | |
27 | CHECK_FILE_NAME([///foo], [/], [foo]) | |
fee0c963 BP |
28 | |
29 | AT_BANNER([test follow_symlinks function]) | |
30 | ||
31 | m4_define([CHECK_FOLLOW], | |
32 | [echo "check $1 -> $2" | |
eadd1644 | 33 | AT_CHECK_UNQUOTED([ovstest test-util follow-symlinks "$1"], [0], [$2 |
fee0c963 BP |
34 | ]) |
35 | echo]) | |
36 | ||
37 | AT_SETUP([follow_symlinks - relative symlinks]) | |
38 | : > target | |
39 | ln -s target source | |
40 | AT_SKIP_IF([test ! -h source]) | |
41 | CHECK_FOLLOW([source], [target]) | |
42 | ||
43 | mkdir dir | |
44 | ln -s target2 dir/source2 | |
45 | CHECK_FOLLOW([dir/source2], [dir/target2]) | |
46 | ||
47 | mkdir dir/dir2 | |
48 | ln -s dir/b a | |
49 | ln -s c dir/b | |
50 | ln -s dir2/d dir/c | |
51 | CHECK_FOLLOW([a], [dir/dir2/d]) | |
52 | AT_CLEANUP | |
53 | ||
54 | AT_SETUP([follow_symlinks - absolute symlinks]) | |
55 | : > target | |
56 | ln -s "`pwd`/target" source | |
57 | AT_SKIP_IF([test ! -h source]) | |
58 | CHECK_FOLLOW([source], [`pwd`/target]) | |
59 | ||
60 | mkdir dir | |
61 | ln -s "`pwd`/dir/target2" dir/source2 | |
62 | CHECK_FOLLOW([dir/source2], [`pwd`/dir/target2]) | |
63 | ||
64 | mkdir dir/dir2 | |
65 | ln -s "`pwd`/dir/b" a | |
66 | ln -s "`pwd`/dir/c" dir/b | |
67 | ln -s "`pwd`/dir/dir2/d" dir/c | |
68 | CHECK_FOLLOW([a], [`pwd`/dir/dir2/d]) | |
69 | AT_CLEANUP | |
70 | ||
71 | AT_SETUP([follow_symlinks - symlinks to directories]) | |
72 | mkdir target | |
73 | ln -s target source | |
74 | AT_SKIP_IF([test ! -h source]) | |
75 | ln -s target/ source2 | |
76 | CHECK_FOLLOW([source], [target]) | |
77 | CHECK_FOLLOW([source2], [target/]) | |
78 | ||
79 | # follow_symlinks() doesn't expand symlinks in the middle of a name. | |
80 | : > source/x | |
81 | CHECK_FOLLOW([source/x], [source/x]) | |
82 | AT_CLEANUP | |
83 | ||
84 | AT_SETUP([follow_symlinks - nonexistent targets]) | |
85 | ln -s target source | |
86 | AT_SKIP_IF([test ! -h source]) | |
87 | CHECK_FOLLOW([source], [target]) | |
88 | CHECK_FOLLOW([target], [target]) | |
89 | CHECK_FOLLOW([target], [target]) | |
90 | AT_CLEANUP | |
91 | ||
92 | AT_SETUP([follow_symlinks - regular files]) | |
93 | touch x | |
94 | CHECK_FOLLOW([x], [x]) | |
95 | AT_CLEANUP | |
96 | ||
97 | AT_SETUP([follow_symlinks - device targets]) | |
98 | AT_SKIP_IF([test ! -e /dev/null]) | |
99 | AT_SKIP_IF([test ! -e /dev/full]) | |
100 | ln -s /dev/null x | |
101 | ln -s /dev/full y | |
102 | CHECK_FOLLOW([x], [/dev/null]) | |
103 | CHECK_FOLLOW([y], [/dev/full]) | |
104 | AT_CLEANUP | |
105 | ||
106 | AT_SETUP([follow_symlinks - nonexistent files]) | |
e4df4eb7 | 107 | AT_SKIP_IF([test "$IS_WIN32" = "yes"]) |
fee0c963 BP |
108 | CHECK_FOLLOW([nonexistent], [nonexistent]) |
109 | CHECK_FOLLOW([a/b/c], [a/b/c]) | |
110 | CHECK_FOLLOW([/a/b/c], [/a/b/c]) | |
111 | CHECK_FOLLOW([//a/b/c], [//a/b/c]) | |
112 | AT_CLEANUP | |
113 | ||
114 | AT_SETUP([follow_symlinks - symlink loop]) | |
115 | ln -s a b | |
116 | AT_SKIP_IF([test ! -h b]) | |
117 | ln -s b a | |
118 | AT_SKIP_IF([test ! -h a]) | |
119 | ||
eadd1644 | 120 | AT_CHECK([ovstest test-util follow-symlinks a], [0], [a |
fee0c963 BP |
121 | ], [stderr]) |
122 | AT_CHECK([sed 's/^[[^|]]*|//' stderr], [0], | |
123 | [00001|util|WARN|a: too many levels of symlinks | |
124 | ]) | |
125 | AT_CLEANUP |