mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
There is no one-one mapping of symlinks between Linux and Windows. This test currently fails on Windows and we do not really need this functionality on Windows. So skip it. Signed-off-by: Gurucharan Shetty <gshetty@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
126 lines
3.2 KiB
Plaintext
126 lines
3.2 KiB
Plaintext
AT_BANNER([test dir_name and base_name functions])
|
|
|
|
m4_define([CHECK_FILE_NAME],
|
|
[AT_SETUP([components of "$1" are "$2", "$3"])
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
|
AT_KEYWORDS([dir_name base_name])
|
|
AT_CHECK([ovstest test-util file_name "AS_ESCAPE($1)"], [0], [$2
|
|
$3
|
|
])
|
|
AT_CLEANUP])
|
|
|
|
# These are the test cases given in POSIX for dirname() and basename().
|
|
CHECK_FILE_NAME([/usr/lib], [/usr], [lib])
|
|
CHECK_FILE_NAME([/usr/], [/], [usr])
|
|
CHECK_FILE_NAME([usr], [.], [usr])
|
|
CHECK_FILE_NAME([/], [/], [/])
|
|
CHECK_FILE_NAME([.], [.], [.])
|
|
CHECK_FILE_NAME([..], [.], [..])
|
|
CHECK_FILE_NAME([//], [//], [//]) # / is also allowed
|
|
CHECK_FILE_NAME([//foo], [//], [foo]) # / is also allowed for dirname
|
|
CHECK_FILE_NAME([], [.], [.])
|
|
|
|
# Additional test cases.
|
|
CHECK_FILE_NAME([dir/file], [dir], [file])
|
|
CHECK_FILE_NAME([dir/file/], [dir], [file])
|
|
CHECK_FILE_NAME([dir/file//], [dir], [file])
|
|
CHECK_FILE_NAME([///foo], [/], [foo])
|
|
|
|
AT_BANNER([test follow_symlinks function])
|
|
|
|
m4_define([CHECK_FOLLOW],
|
|
[echo "check $1 -> $2"
|
|
AT_CHECK_UNQUOTED([ovstest test-util follow-symlinks "$1"], [0], [$2
|
|
])
|
|
echo])
|
|
|
|
AT_SETUP([follow_symlinks - relative symlinks])
|
|
: > target
|
|
ln -s target source
|
|
AT_SKIP_IF([test ! -h source])
|
|
CHECK_FOLLOW([source], [target])
|
|
|
|
mkdir dir
|
|
ln -s target2 dir/source2
|
|
CHECK_FOLLOW([dir/source2], [dir/target2])
|
|
|
|
mkdir dir/dir2
|
|
ln -s dir/b a
|
|
ln -s c dir/b
|
|
ln -s dir2/d dir/c
|
|
CHECK_FOLLOW([a], [dir/dir2/d])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - absolute symlinks])
|
|
: > target
|
|
ln -s "`pwd`/target" source
|
|
AT_SKIP_IF([test ! -h source])
|
|
CHECK_FOLLOW([source], [`pwd`/target])
|
|
|
|
mkdir dir
|
|
ln -s "`pwd`/dir/target2" dir/source2
|
|
CHECK_FOLLOW([dir/source2], [`pwd`/dir/target2])
|
|
|
|
mkdir dir/dir2
|
|
ln -s "`pwd`/dir/b" a
|
|
ln -s "`pwd`/dir/c" dir/b
|
|
ln -s "`pwd`/dir/dir2/d" dir/c
|
|
CHECK_FOLLOW([a], [`pwd`/dir/dir2/d])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - symlinks to directories])
|
|
mkdir target
|
|
ln -s target source
|
|
AT_SKIP_IF([test ! -h source])
|
|
ln -s target/ source2
|
|
CHECK_FOLLOW([source], [target])
|
|
CHECK_FOLLOW([source2], [target/])
|
|
|
|
# follow_symlinks() doesn't expand symlinks in the middle of a name.
|
|
: > source/x
|
|
CHECK_FOLLOW([source/x], [source/x])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - nonexistent targets])
|
|
ln -s target source
|
|
AT_SKIP_IF([test ! -h source])
|
|
CHECK_FOLLOW([source], [target])
|
|
CHECK_FOLLOW([target], [target])
|
|
CHECK_FOLLOW([target], [target])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - regular files])
|
|
touch x
|
|
CHECK_FOLLOW([x], [x])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - device targets])
|
|
AT_SKIP_IF([test ! -e /dev/null])
|
|
AT_SKIP_IF([test ! -e /dev/full])
|
|
ln -s /dev/null x
|
|
ln -s /dev/full y
|
|
CHECK_FOLLOW([x], [/dev/null])
|
|
CHECK_FOLLOW([y], [/dev/full])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - nonexistent files])
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
|
CHECK_FOLLOW([nonexistent], [nonexistent])
|
|
CHECK_FOLLOW([a/b/c], [a/b/c])
|
|
CHECK_FOLLOW([/a/b/c], [/a/b/c])
|
|
CHECK_FOLLOW([//a/b/c], [//a/b/c])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([follow_symlinks - symlink loop])
|
|
ln -s a b
|
|
AT_SKIP_IF([test ! -h b])
|
|
ln -s b a
|
|
AT_SKIP_IF([test ! -h a])
|
|
|
|
AT_CHECK([ovstest test-util follow-symlinks a], [0], [a
|
|
], [stderr])
|
|
AT_CHECK([sed 's/^[[^|]]*|//' stderr], [0],
|
|
[00001|util|WARN|a: too many levels of symlinks
|
|
])
|
|
AT_CLEANUP
|