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