X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Ffile_name.at;h=3d48b858548c4187ea590e60c3ffe339ca48478d;hb=c5cf10598f8c9f4428291e9df3ecd72a05fb1ccf;hp=e0b43dca3cfd597aed131afaaf17167ce8556f1f;hpb=e1aff6f9f7103ee59e2501d3e6c705a685b20aeb;p=sliver-openvswitch.git diff --git a/tests/file_name.at b/tests/file_name.at index e0b43dca3..3d48b8585 100644 --- a/tests/file_name.at +++ b/tests/file_name.at @@ -3,7 +3,7 @@ AT_BANNER([test dir_name and base_name functions]) m4_define([CHECK_FILE_NAME], [AT_SETUP([components of "$1" are "$2", "$3"]) AT_KEYWORDS([dir_name base_name]) - AT_CHECK([test-file_name "AS_ESCAPE($1)"], [0], [$2 + AT_CHECK([ovstest test-file_name "AS_ESCAPE($1)"], [0], [$2 $3 ]) AT_CLEANUP]) @@ -24,3 +24,100 @@ 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]) +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