netdev-dpdk: fix mbuf leaks
[cascardo/ovs.git] / tests / file_name.at
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"])
5    AT_SKIP_IF([test "$IS_WIN32" = "yes"])
6    AT_KEYWORDS([dir_name base_name])
7    AT_CHECK([ovstest test-util file_name "AS_ESCAPE($1)"], [0], [$2
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])
28
29 AT_BANNER([test follow_symlinks function])
30
31 m4_define([CHECK_FOLLOW],
32   [echo "check $1 -> $2"
33    AT_CHECK_UNQUOTED([ovstest test-util follow-symlinks "$1"], [0], [$2
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])
107 AT_SKIP_IF([test "$IS_WIN32" = "yes"])
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
120 AT_CHECK([ovstest test-util follow-symlinks a], [0], [a
121 ], [stderr])
122 AT_CHECK([sed 's/^[[^|]]*|//' stderr], [0],
123   [00001|util|WARN|a: too many levels of symlinks
124 ])
125 AT_CLEANUP