12822a795SDag-Erling Smørgrav# 22822a795SDag-Erling Smørgrav# Copyright (c) 2007 Diomidis Spinellis 32822a795SDag-Erling Smørgrav# Copyright (c) 2023 Klara, Inc. 42822a795SDag-Erling Smørgrav# 52822a795SDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause 62822a795SDag-Erling Smørgrav# 72822a795SDag-Erling Smørgrav 82822a795SDag-Erling Smørgravmv_setup() { 92822a795SDag-Erling Smørgrav atf_check mkdir fs 102822a795SDag-Erling Smørgrav atf_check mount -t tmpfs -o size=1m tmp fs 112822a795SDag-Erling Smørgrav} 122822a795SDag-Erling Smørgrav 132822a795SDag-Erling Smørgravmv_cleanup() { 142822a795SDag-Erling Smørgrav umount fs || true 152822a795SDag-Erling Smørgrav} 162822a795SDag-Erling Smørgrav 172822a795SDag-Erling Smørgrav# Make a file that can later be verified 182822a795SDag-Erling Smørgravmv_makefile() { 192822a795SDag-Erling Smørgrav local cn="${1##*/}" 202822a795SDag-Erling Smørgrav echo "$cn-$cn" >"$1" 212822a795SDag-Erling Smørgrav} 222822a795SDag-Erling Smørgrav 232822a795SDag-Erling Smørgrav# Verify that the file specified is correct 242822a795SDag-Erling Smørgravmv_checkfile() { 252822a795SDag-Erling Smørgrav atf_check -o inline:"$1-$1\n" cat "$2" 262822a795SDag-Erling Smørgrav} 272822a795SDag-Erling Smørgrav 282822a795SDag-Erling Smørgrav# Make a fifo that can later be verified 292822a795SDag-Erling Smørgravmv_makepipe() { 302822a795SDag-Erling Smørgrav atf_check mkfifo $1 312822a795SDag-Erling Smørgrav} 322822a795SDag-Erling Smørgrav 332822a795SDag-Erling Smørgrav# Verify that the file specified is correct 342822a795SDag-Erling Smørgravmv_checkpipe() { 352822a795SDag-Erling Smørgrav atf_check test -p "$2" 362822a795SDag-Erling Smørgrav} 372822a795SDag-Erling Smørgrav 382822a795SDag-Erling Smørgrav# Make a directory that can later be verified 392822a795SDag-Erling Smørgravmv_makedir() { 402822a795SDag-Erling Smørgrav local cn="${1##*/}" 412822a795SDag-Erling Smørgrav atf_check mkdir -p "$1/$cn-$cn" 422822a795SDag-Erling Smørgrav} 432822a795SDag-Erling Smørgrav 442822a795SDag-Erling Smørgrav# Verify that the directory specified is correct 452822a795SDag-Erling Smørgravmv_checkdir() { 462822a795SDag-Erling Smørgrav atf_check test -d "$2/$1-$1" 472822a795SDag-Erling Smørgrav} 482822a795SDag-Erling Smørgrav 492822a795SDag-Erling Smørgrav# Verify that the specified file does not exist 502822a795SDag-Erling Smørgrav# (is not there) 512822a795SDag-Erling Smørgravmv_checkabsent() { 522822a795SDag-Erling Smørgrav atf_check -s exit:1 test -r "$1" 532822a795SDag-Erling Smørgrav} 542822a795SDag-Erling Smørgrav 552822a795SDag-Erling Smørgravatf_test_case rename_file cleanup 562822a795SDag-Erling Smørgravrename_file_head() { 572822a795SDag-Erling Smørgrav atf_set "descr" "Rename file" 582822a795SDag-Erling Smørgrav atf_set "require.user" "root" 592822a795SDag-Erling Smørgrav} 602822a795SDag-Erling Smørgravrename_file_body() { 612822a795SDag-Erling Smørgrav mv_setup 622822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 632822a795SDag-Erling Smørgrav mv_makefile fa 642822a795SDag-Erling Smørgrav atf_check mv fa ${FS}fb 652822a795SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 662822a795SDag-Erling Smørgrav mv_checkabsent fa 672822a795SDag-Erling Smørgrav done 682822a795SDag-Erling Smørgrav} 692822a795SDag-Erling Smørgravrename_file_cleanup() { 702822a795SDag-Erling Smørgrav mv_cleanup 712822a795SDag-Erling Smørgrav} 722822a795SDag-Erling Smørgrav 732822a795SDag-Erling Smørgravatf_test_case file_into_dir cleanup 742822a795SDag-Erling Smørgravfile_into_dir_head() { 752822a795SDag-Erling Smørgrav atf_set "descr" "Move files into directory" 762822a795SDag-Erling Smørgrav atf_set "require.user" "root" 772822a795SDag-Erling Smørgrav} 782822a795SDag-Erling Smørgravfile_into_dir_body() { 792822a795SDag-Erling Smørgrav mv_setup 802822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 812822a795SDag-Erling Smørgrav mv_makefile fa 822822a795SDag-Erling Smørgrav mv_makefile fb 832822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}1/2/3 842822a795SDag-Erling Smørgrav atf_check mv fa fb ${FS}1/2/3 852822a795SDag-Erling Smørgrav mv_checkfile fa ${FS}1/2/3/fa 862822a795SDag-Erling Smørgrav mv_checkfile fb ${FS}1/2/3/fb 872822a795SDag-Erling Smørgrav mv_checkabsent fa 882822a795SDag-Erling Smørgrav mv_checkabsent fb 892822a795SDag-Erling Smørgrav done 902822a795SDag-Erling Smørgrav} 912822a795SDag-Erling Smørgravfile_into_dir_cleanup() { 922822a795SDag-Erling Smørgrav mv_cleanup 932822a795SDag-Erling Smørgrav} 942822a795SDag-Erling Smørgrav 952822a795SDag-Erling Smørgravatf_test_case file_from_dir cleanup 962822a795SDag-Erling Smørgravfile_from_dir_head() { 972822a795SDag-Erling Smørgrav atf_set "descr" "Move file from directory to file" 982822a795SDag-Erling Smørgrav atf_set "require.user" "root" 992822a795SDag-Erling Smørgrav} 1002822a795SDag-Erling Smørgravfile_from_dir_body() { 1012822a795SDag-Erling Smørgrav mv_setup 1022822a795SDag-Erling Smørgrav atf_check mkdir -p 1/2/3 1032822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 1042822a795SDag-Erling Smørgrav mv_makefile 1/2/3/fa 1052822a795SDag-Erling Smørgrav atf_check mv 1/2/3/fa ${FS}fb 1062822a795SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 1072822a795SDag-Erling Smørgrav mv_checkabsent 1/2/3/fa 1082822a795SDag-Erling Smørgrav done 1092822a795SDag-Erling Smørgrav} 1102822a795SDag-Erling Smørgravfile_from_dir_cleanup() { 1112822a795SDag-Erling Smørgrav mv_cleanup 1122822a795SDag-Erling Smørgrav} 1132822a795SDag-Erling Smørgrav 1142822a795SDag-Erling Smørgravatf_test_case file_from_dir_replace cleanup 1152822a795SDag-Erling Smørgravfile_from_dir_replace_head() { 1162822a795SDag-Erling Smørgrav atf_set "descr" "Move file from directory to existing file" 1172822a795SDag-Erling Smørgrav atf_set "require.user" "root" 1182822a795SDag-Erling Smørgrav} 1192822a795SDag-Erling Smørgravfile_from_dir_replace_body() { 1202822a795SDag-Erling Smørgrav mv_setup 1212822a795SDag-Erling Smørgrav atf_check mkdir -p 1/2/3 1222822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 1232822a795SDag-Erling Smørgrav mv_makefile 1/2/3/fa 1242822a795SDag-Erling Smørgrav :> ${FS}fb 1252822a795SDag-Erling Smørgrav atf_check mv 1/2/3/fa ${FS}fb 1262822a795SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 1272822a795SDag-Erling Smørgrav mv_checkabsent 1/2/3/fa 1282822a795SDag-Erling Smørgrav done 1292822a795SDag-Erling Smørgrav} 1302822a795SDag-Erling Smørgravfile_from_dir_replace_cleanup() { 1312822a795SDag-Erling Smørgrav mv_cleanup 1322822a795SDag-Erling Smørgrav} 1332822a795SDag-Erling Smørgrav 1342822a795SDag-Erling Smørgravatf_test_case file_to_dir cleanup 1352822a795SDag-Erling Smørgravfile_to_dir_head() { 1362822a795SDag-Erling Smørgrav atf_set "descr" "Move file from directory to existing directory" 1372822a795SDag-Erling Smørgrav atf_set "require.user" "root" 1382822a795SDag-Erling Smørgrav} 1392822a795SDag-Erling Smørgravfile_to_dir_body() { 1402822a795SDag-Erling Smørgrav mv_setup 1412822a795SDag-Erling Smørgrav atf_check mkdir -p 1/2/3 1422822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 1432822a795SDag-Erling Smørgrav mv_makefile 1/2/3/fa 1442822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db/fa 1452822a795SDag-Erling Smørgrav # Should fail per POSIX step 3a: 1462822a795SDag-Erling Smørgrav # Destination path is a file of type directory and 1472822a795SDag-Erling Smørgrav # source_file is not a file of type directory 1482822a795SDag-Erling Smørgrav atf_check -s not-exit:0 -e match:"Is a directory" \ 1492822a795SDag-Erling Smørgrav mv 1/2/3/fa ${FS}db 1502822a795SDag-Erling Smørgrav mv_checkfile fa 1/2/3/fa 1512822a795SDag-Erling Smørgrav done 1522822a795SDag-Erling Smørgrav} 1532822a795SDag-Erling Smørgravfile_to_dir_cleanup() { 1542822a795SDag-Erling Smørgrav mv_cleanup 1552822a795SDag-Erling Smørgrav} 1562822a795SDag-Erling Smørgrav 1572822a795SDag-Erling Smørgravatf_test_case file_from_rename_dir cleanup 1582822a795SDag-Erling Smørgravfile_from_rename_dir_head() { 1592822a795SDag-Erling Smørgrav atf_set "descr" "Move file from directory to directory" 1602822a795SDag-Erling Smørgrav atf_set "require.user" "root" 1612822a795SDag-Erling Smørgrav} 1622822a795SDag-Erling Smørgravfile_from_rename_dir_body() { 1632822a795SDag-Erling Smørgrav mv_setup 1642822a795SDag-Erling Smørgrav atf_check mkdir -p da1/da2/da3 1652822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 1662822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3 1672822a795SDag-Erling Smørgrav mv_makefile da1/da2/da3/fa 1682822a795SDag-Erling Smørgrav atf_check mv da1/da2/da3/fa ${FS}db1/db2/db3/fb 1692822a795SDag-Erling Smørgrav mv_checkfile fa ${FS}db1/db2/db3/fb 1702822a795SDag-Erling Smørgrav mv_checkabsent da1/da2/da3/fa 1712822a795SDag-Erling Smørgrav done 1722822a795SDag-Erling Smørgrav} 1732822a795SDag-Erling Smørgravfile_from_rename_dir_cleanup() { 1742822a795SDag-Erling Smørgrav mv_cleanup 1752822a795SDag-Erling Smørgrav} 1762822a795SDag-Erling Smørgrav 1772822a795SDag-Erling Smørgravatf_test_case rename_dir cleanup 1782822a795SDag-Erling Smørgravrename_dir_head() { 1792822a795SDag-Erling Smørgrav atf_set "descr" "Rename directory" 1802822a795SDag-Erling Smørgrav atf_set "require.user" "root" 1812822a795SDag-Erling Smørgrav} 1822822a795SDag-Erling Smørgravrename_dir_body() { 1832822a795SDag-Erling Smørgrav mv_setup 1842822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 1852822a795SDag-Erling Smørgrav mv_makedir da 1862822a795SDag-Erling Smørgrav atf_check mv da ${FS}db 1872822a795SDag-Erling Smørgrav mv_checkdir da ${FS}db 1882822a795SDag-Erling Smørgrav mv_checkabsent da 1892822a795SDag-Erling Smørgrav done 1902822a795SDag-Erling Smørgrav} 1912822a795SDag-Erling Smørgravrename_dir_cleanup() { 1922822a795SDag-Erling Smørgrav mv_cleanup 1932822a795SDag-Erling Smørgrav} 1942822a795SDag-Erling Smørgrav 1952822a795SDag-Erling Smørgravatf_test_case dir_to_dir cleanup 1962822a795SDag-Erling Smørgravdir_to_dir_head() { 1972822a795SDag-Erling Smørgrav atf_set "descr" "Move directory to directory name" 1982822a795SDag-Erling Smørgrav atf_set "require.user" "root" 1992822a795SDag-Erling Smørgrav} 2002822a795SDag-Erling Smørgravdir_to_dir_body() { 2012822a795SDag-Erling Smørgrav mv_setup 2022822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 2032822a795SDag-Erling Smørgrav mv_makedir da1/da2/da3/da 2042822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3 2052822a795SDag-Erling Smørgrav atf_check mv da1/da2/da3/da ${FS}db1/db2/db3/db 2062822a795SDag-Erling Smørgrav mv_checkdir da ${FS}db1/db2/db3/db 2072822a795SDag-Erling Smørgrav mv_checkabsent da1/da2/da3/da 2082822a795SDag-Erling Smørgrav done 2092822a795SDag-Erling Smørgrav} 2102822a795SDag-Erling Smørgravdir_to_dir_cleanup() { 2112822a795SDag-Erling Smørgrav mv_cleanup 2122822a795SDag-Erling Smørgrav} 2132822a795SDag-Erling Smørgrav 2142822a795SDag-Erling Smørgravatf_test_case dir_into_dir cleanup 2152822a795SDag-Erling Smørgravdir_into_dir_head() { 2162822a795SDag-Erling Smørgrav atf_set "descr" "Move directory to directory" 2172822a795SDag-Erling Smørgrav atf_set "require.user" "root" 2182822a795SDag-Erling Smørgrav} 2192822a795SDag-Erling Smørgravdir_into_dir_body() { 2202822a795SDag-Erling Smørgrav mv_setup 2212822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 2222822a795SDag-Erling Smørgrav mv_makedir da1/da2/da3/da 2232822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3 2242822a795SDag-Erling Smørgrav atf_check mv da1/da2/da3/da ${FS}db1/db2/db3 2252822a795SDag-Erling Smørgrav mv_checkdir da ${FS}db1/db2/db3/da 2262822a795SDag-Erling Smørgrav mv_checkabsent da1/da2/da3/da 2272822a795SDag-Erling Smørgrav done 2282822a795SDag-Erling Smørgrav} 2292822a795SDag-Erling Smørgravdir_into_dir_cleanup() { 2302822a795SDag-Erling Smørgrav mv_cleanup 2312822a795SDag-Erling Smørgrav} 2322822a795SDag-Erling Smørgrav 2332822a795SDag-Erling Smørgravatf_test_case dir_to_empty_dir cleanup 2342822a795SDag-Erling Smørgravdir_to_empty_dir_head() { 2352822a795SDag-Erling Smørgrav atf_set "descr" "Move directory to existing empty directory" 2362822a795SDag-Erling Smørgrav atf_set "require.user" "root" 2372822a795SDag-Erling Smørgrav} 2382822a795SDag-Erling Smørgravdir_to_empty_dir_body() { 2392822a795SDag-Erling Smørgrav mv_setup 2402822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 2412822a795SDag-Erling Smørgrav mv_makedir da1/da2/da3/da 2422822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3/da 2432822a795SDag-Erling Smørgrav atf_check mv da1/da2/da3/da ${FS}db1/db2/db3 2442822a795SDag-Erling Smørgrav mv_checkdir da ${FS}db1/db2/db3/da 2452822a795SDag-Erling Smørgrav mv_checkabsent da1/da2/da3/da 2462822a795SDag-Erling Smørgrav done 2472822a795SDag-Erling Smørgrav} 2482822a795SDag-Erling Smørgravdir_to_empty_dir_cleanup() { 2492822a795SDag-Erling Smørgrav mv_cleanup 2502822a795SDag-Erling Smørgrav} 2512822a795SDag-Erling Smørgrav 2522822a795SDag-Erling Smørgravatf_test_case dir_to_nonempty_dir cleanup 2532822a795SDag-Erling Smørgravdir_to_nonempty_dir_head() { 2542822a795SDag-Erling Smørgrav atf_set "descr" "Move directory to existing non-empty directory" 2552822a795SDag-Erling Smørgrav atf_set "require.user" "root" 2562822a795SDag-Erling Smørgrav} 2572822a795SDag-Erling Smørgravdir_to_nonempty_dir_body() { 2582822a795SDag-Erling Smørgrav mv_setup 2592822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 2602822a795SDag-Erling Smørgrav mv_makedir da1/da2/da3/da 2612822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3/da/full 2622822a795SDag-Erling Smørgrav # Should fail (per the semantics of rename(2)) 2632822a795SDag-Erling Smørgrav atf_check -s not-exit:0 -e match:"Directory not empty" \ 2642822a795SDag-Erling Smørgrav mv da1/da2/da3/da ${FS}db1/db2/db3 2652822a795SDag-Erling Smørgrav mv_checkdir da da1/da2/da3/da 2662822a795SDag-Erling Smørgrav done 2672822a795SDag-Erling Smørgrav} 2682822a795SDag-Erling Smørgravdir_to_nonempty_dir_cleanup() { 2692822a795SDag-Erling Smørgrav mv_cleanup 2702822a795SDag-Erling Smørgrav} 2712822a795SDag-Erling Smørgrav 2722822a795SDag-Erling Smørgravatf_test_case dir_to_file cleanup 2732822a795SDag-Erling Smørgravdir_to_file_head() { 2742822a795SDag-Erling Smørgrav atf_set "descr" "Move directory to existing file" 2752822a795SDag-Erling Smørgrav atf_set "require.user" "root" 2762822a795SDag-Erling Smørgrav} 2772822a795SDag-Erling Smørgravdir_to_file_body() { 2782822a795SDag-Erling Smørgrav mv_setup 2792822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 2802822a795SDag-Erling Smørgrav mv_makedir da1/da2/da3/da 2812822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3 2822822a795SDag-Erling Smørgrav :> ${FS}db1/db2/db3/da 2832822a795SDag-Erling Smørgrav # Should fail per POSIX step 3b: 2842822a795SDag-Erling Smørgrav # Destination path is a file not of type directory 2852822a795SDag-Erling Smørgrav # and source_file is a file of type directory 2862822a795SDag-Erling Smørgrav atf_check -s not-exit:0 -e match:"Not a directory" \ 2872822a795SDag-Erling Smørgrav mv da1/da2/da3/da ${FS}db1/db2/db3/da 2882822a795SDag-Erling Smørgrav mv_checkdir da da1/da2/da3/da 2892822a795SDag-Erling Smørgrav done 2902822a795SDag-Erling Smørgrav} 2912822a795SDag-Erling Smørgravdir_to_file_cleanup() { 2922822a795SDag-Erling Smørgrav mv_cleanup 2932822a795SDag-Erling Smørgrav} 2942822a795SDag-Erling Smørgrav 2952822a795SDag-Erling Smørgravatf_test_case rename_fifo cleanup 2962822a795SDag-Erling Smørgravrename_fifo_head() { 2972822a795SDag-Erling Smørgrav atf_set "descr" "Rename fifo" 2982822a795SDag-Erling Smørgrav atf_set "require.user" "root" 2992822a795SDag-Erling Smørgrav} 3002822a795SDag-Erling Smørgravrename_fifo_body() { 3012822a795SDag-Erling Smørgrav mv_setup 3022822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 3032822a795SDag-Erling Smørgrav mv_makepipe fa 3042822a795SDag-Erling Smørgrav atf_check mv fa ${FS}fb 3052822a795SDag-Erling Smørgrav mv_checkpipe fa ${FS}fb 3062822a795SDag-Erling Smørgrav mv_checkabsent fa 3072822a795SDag-Erling Smørgrav done 3082822a795SDag-Erling Smørgrav} 3092822a795SDag-Erling Smørgravrename_fifo_cleanup() { 3102822a795SDag-Erling Smørgrav mv_cleanup 3112822a795SDag-Erling Smørgrav} 3122822a795SDag-Erling Smørgrav 3132822a795SDag-Erling Smørgravatf_test_case fifo_into_dir cleanup 3142822a795SDag-Erling Smørgravfifo_into_dir_head() { 3152822a795SDag-Erling Smørgrav atf_set "descr" "Move fifos into directory" 3162822a795SDag-Erling Smørgrav atf_set "require.user" "root" 3172822a795SDag-Erling Smørgrav} 3182822a795SDag-Erling Smørgravfifo_into_dir_body() { 3192822a795SDag-Erling Smørgrav mv_setup 3202822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 3212822a795SDag-Erling Smørgrav mv_makepipe fa 3222822a795SDag-Erling Smørgrav mv_makepipe fb 3232822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}1/2/3 3242822a795SDag-Erling Smørgrav atf_check mv fa fb ${FS}1/2/3 3252822a795SDag-Erling Smørgrav mv_checkpipe fa ${FS}1/2/3/fa 3262822a795SDag-Erling Smørgrav mv_checkpipe fb ${FS}1/2/3/fb 3272822a795SDag-Erling Smørgrav mv_checkabsent fa 3282822a795SDag-Erling Smørgrav mv_checkabsent fb 3292822a795SDag-Erling Smørgrav done 3302822a795SDag-Erling Smørgrav} 3312822a795SDag-Erling Smørgravfifo_into_dir_cleanup() { 3322822a795SDag-Erling Smørgrav mv_cleanup 3332822a795SDag-Erling Smørgrav} 3342822a795SDag-Erling Smørgrav 3352822a795SDag-Erling Smørgravatf_test_case fifo_from_dir cleanup 3362822a795SDag-Erling Smørgravfifo_from_dir_head() { 3372822a795SDag-Erling Smørgrav atf_set "descr" "Move fifo from directory to fifo" 3382822a795SDag-Erling Smørgrav atf_set "require.user" "root" 3392822a795SDag-Erling Smørgrav} 3402822a795SDag-Erling Smørgravfifo_from_dir_body() { 3412822a795SDag-Erling Smørgrav mv_setup 3422822a795SDag-Erling Smørgrav atf_check mkdir -p 1/2/3 3432822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 3442822a795SDag-Erling Smørgrav mv_makepipe 1/2/3/fa 3452822a795SDag-Erling Smørgrav atf_check mv 1/2/3/fa ${FS}fb 3462822a795SDag-Erling Smørgrav mv_checkpipe fa ${FS}fb 3472822a795SDag-Erling Smørgrav mv_checkabsent 1/2/3/fa 3482822a795SDag-Erling Smørgrav done 3492822a795SDag-Erling Smørgrav} 3502822a795SDag-Erling Smørgravfifo_from_dir_cleanup() { 3512822a795SDag-Erling Smørgrav mv_cleanup 3522822a795SDag-Erling Smørgrav} 3532822a795SDag-Erling Smørgrav 3542822a795SDag-Erling Smørgravatf_test_case fifo_from_dir_into_dir cleanup 3552822a795SDag-Erling Smørgravfifo_from_dir_into_dir_head() { 3562822a795SDag-Erling Smørgrav atf_set "descr" "Move fifo from directory to directory" 3572822a795SDag-Erling Smørgrav atf_set "require.user" "root" 3582822a795SDag-Erling Smørgrav} 3592822a795SDag-Erling Smørgravfifo_from_dir_into_dir_body() { 3602822a795SDag-Erling Smørgrav mv_setup 3612822a795SDag-Erling Smørgrav atf_check mkdir -p da1/da2/da3 3622822a795SDag-Erling Smørgrav for FS in "" "fs/" ; do 3632822a795SDag-Erling Smørgrav atf_check mkdir -p ${FS}db1/db2/db3 3642822a795SDag-Erling Smørgrav mv_makepipe da1/da2/da3/fa 3652822a795SDag-Erling Smørgrav atf_check mv da1/da2/da3/fa ${FS}db1/db2/db3/fb 3662822a795SDag-Erling Smørgrav mv_checkpipe fa ${FS}db1/db2/db3/fb 3672822a795SDag-Erling Smørgrav mv_checkabsent da1/da2/da3/fa 3682822a795SDag-Erling Smørgrav done 3692822a795SDag-Erling Smørgrav} 3702822a795SDag-Erling Smørgravfifo_from_dir_into_dir_cleanup() { 3712822a795SDag-Erling Smørgrav mv_cleanup 3722822a795SDag-Erling Smørgrav} 3732822a795SDag-Erling Smørgrav 374*d4fb5984SDag-Erling Smørgravatf_test_case mv_f cleanup 375*d4fb5984SDag-Erling Smørgravmv_f_head() { 376*d4fb5984SDag-Erling Smørgrav atf_set "descr" "Force replacement" 377*d4fb5984SDag-Erling Smørgrav atf_set "require.user" "root" 378*d4fb5984SDag-Erling Smørgrav} 379*d4fb5984SDag-Erling Smørgravmv_f_body() { 380*d4fb5984SDag-Erling Smørgrav mv_setup 381*d4fb5984SDag-Erling Smørgrav for FS in "" "fs/" ; do 382*d4fb5984SDag-Erling Smørgrav mv_makefile fa 383*d4fb5984SDag-Erling Smørgrav atf_check mv fa ${FS}fb 384*d4fb5984SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 385*d4fb5984SDag-Erling Smørgrav mv_checkabsent fa 386*d4fb5984SDag-Erling Smørgrav mv_makefile fa 387*d4fb5984SDag-Erling Smørgrav :> ${FS}fb 388*d4fb5984SDag-Erling Smørgrav atf_check mv -i -n -f fa ${FS}fb 389*d4fb5984SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 390*d4fb5984SDag-Erling Smørgrav mv_checkabsent fa 391*d4fb5984SDag-Erling Smørgrav done 392*d4fb5984SDag-Erling Smørgrav} 393*d4fb5984SDag-Erling Smørgravmv_f_cleanup() { 394*d4fb5984SDag-Erling Smørgrav mv_cleanup 395*d4fb5984SDag-Erling Smørgrav} 396*d4fb5984SDag-Erling Smørgrav 397*d4fb5984SDag-Erling Smørgravatf_test_case mv_h cleanup 398*d4fb5984SDag-Erling Smørgravmv_h_head() { 399*d4fb5984SDag-Erling Smørgrav atf_set "descr" "Replace symbolic link" 400*d4fb5984SDag-Erling Smørgrav atf_set "require.user" "root" 401*d4fb5984SDag-Erling Smørgrav} 402*d4fb5984SDag-Erling Smørgravmv_h_body() { 403*d4fb5984SDag-Erling Smørgrav mv_setup 404*d4fb5984SDag-Erling Smørgrav for FS in "" "fs/" ; do 405*d4fb5984SDag-Erling Smørgrav atf_check mkdir ${FS}da 406*d4fb5984SDag-Erling Smørgrav atf_check ln -s da ${FS}db 407*d4fb5984SDag-Erling Smørgrav # First test without -h, file goes into symlink target 408*d4fb5984SDag-Erling Smørgrav mv_makefile fa 409*d4fb5984SDag-Erling Smørgrav atf_check mv fa ${FS}db 410*d4fb5984SDag-Erling Smørgrav mv_checkfile fa ${FS}da/fa 411*d4fb5984SDag-Erling Smørgrav # Second test with -h, file replaces symlink 412*d4fb5984SDag-Erling Smørgrav mv_makefile fa 413*d4fb5984SDag-Erling Smørgrav atf_check mv -h fa ${FS}db 414*d4fb5984SDag-Erling Smørgrav mv_checkfile fa ${FS}db 415*d4fb5984SDag-Erling Smørgrav done 416*d4fb5984SDag-Erling Smørgrav} 417*d4fb5984SDag-Erling Smørgravmv_h_cleanup() { 418*d4fb5984SDag-Erling Smørgrav mv_cleanup 419*d4fb5984SDag-Erling Smørgrav} 420*d4fb5984SDag-Erling Smørgrav 421*d4fb5984SDag-Erling Smørgravatf_test_case mv_i cleanup 422*d4fb5984SDag-Erling Smørgravmv_i_head() { 423*d4fb5984SDag-Erling Smørgrav atf_set "descr" "Confirm replacement" 424*d4fb5984SDag-Erling Smørgrav atf_set "require.user" "root" 425*d4fb5984SDag-Erling Smørgrav} 426*d4fb5984SDag-Erling Smørgravmv_i_body() { 427*d4fb5984SDag-Erling Smørgrav mv_setup 428*d4fb5984SDag-Erling Smørgrav echo n >n 429*d4fb5984SDag-Erling Smørgrav echo y >y 430*d4fb5984SDag-Erling Smørgrav for FS in "" "fs/" ; do 431*d4fb5984SDag-Erling Smørgrav mv_makefile fa 432*d4fb5984SDag-Erling Smørgrav mv_makefile ${FS}fb 433*d4fb5984SDag-Erling Smørgrav # First test, answer no, file is not replaced 434*d4fb5984SDag-Erling Smørgrav atf_check -e match:"^overwrite ${FS}fb\\?" \ 435*d4fb5984SDag-Erling Smørgrav mv -i fa ${FS}fb <n 436*d4fb5984SDag-Erling Smørgrav mv_checkfile fa fa 437*d4fb5984SDag-Erling Smørgrav mv_checkfile fb ${FS}fb 438*d4fb5984SDag-Erling Smørgrav # Second test, answer yes, file is replaced 439*d4fb5984SDag-Erling Smørgrav atf_check -e match:"^overwrite ${FS}fb\\?" \ 440*d4fb5984SDag-Erling Smørgrav mv -i fa ${FS}fb <y 441*d4fb5984SDag-Erling Smørgrav mv_checkabsent fa 442*d4fb5984SDag-Erling Smørgrav mv_checkfile fa ${FS}fb 443*d4fb5984SDag-Erling Smørgrav done 444*d4fb5984SDag-Erling Smørgrav} 445*d4fb5984SDag-Erling Smørgravmv_i_cleanup() { 446*d4fb5984SDag-Erling Smørgrav mv_cleanup 447*d4fb5984SDag-Erling Smørgrav} 448*d4fb5984SDag-Erling Smørgrav 449*d4fb5984SDag-Erling Smørgravatf_test_case mv_n cleanup 450*d4fb5984SDag-Erling Smørgravmv_n_head() { 451*d4fb5984SDag-Erling Smørgrav atf_set "descr" "Decline replacement" 452*d4fb5984SDag-Erling Smørgrav atf_set "require.user" "root" 453*d4fb5984SDag-Erling Smørgrav} 454*d4fb5984SDag-Erling Smørgravmv_n_body() { 455*d4fb5984SDag-Erling Smørgrav mv_setup 456*d4fb5984SDag-Erling Smørgrav for FS in "" "fs/" ; do 457*d4fb5984SDag-Erling Smørgrav mv_makefile fa 458*d4fb5984SDag-Erling Smørgrav mv_makefile ${FS}fb 459*d4fb5984SDag-Erling Smørgrav atf_check mv -n fa ${FS}fb 460*d4fb5984SDag-Erling Smørgrav mv_checkfile fa fa 461*d4fb5984SDag-Erling Smørgrav mv_checkfile fb ${FS}fb 462*d4fb5984SDag-Erling Smørgrav done 463*d4fb5984SDag-Erling Smørgrav} 464*d4fb5984SDag-Erling Smørgravmv_n_cleanup() { 465*d4fb5984SDag-Erling Smørgrav mv_cleanup 466*d4fb5984SDag-Erling Smørgrav} 467*d4fb5984SDag-Erling Smørgrav 468*d4fb5984SDag-Erling Smørgravatf_test_case mv_v cleanup 469*d4fb5984SDag-Erling Smørgravmv_v_head() { 470*d4fb5984SDag-Erling Smørgrav atf_set "descr" "Verbose mode" 471*d4fb5984SDag-Erling Smørgrav atf_set "require.user" "root" 472*d4fb5984SDag-Erling Smørgrav} 473*d4fb5984SDag-Erling Smørgravmv_v_body() { 474*d4fb5984SDag-Erling Smørgrav mv_setup 475*d4fb5984SDag-Erling Smørgrav for FS in "" "fs/" ; do 476*d4fb5984SDag-Erling Smørgrav mv_makefile fa 477*d4fb5984SDag-Erling Smørgrav atf_check mkdir ${FS}da 478*d4fb5984SDag-Erling Smørgrav atf_check -o inline:"fa -> ${FS}da/fa\n" \ 479*d4fb5984SDag-Erling Smørgrav mv -v fa ${FS}da 480*d4fb5984SDag-Erling Smørgrav done 481*d4fb5984SDag-Erling Smørgrav} 482*d4fb5984SDag-Erling Smørgravmv_v_cleanup() { 483*d4fb5984SDag-Erling Smørgrav mv_cleanup 484*d4fb5984SDag-Erling Smørgrav} 485*d4fb5984SDag-Erling Smørgrav 4862822a795SDag-Erling Smørgravatf_init_test_cases() { 4872822a795SDag-Erling Smørgrav atf_add_test_case rename_file 4882822a795SDag-Erling Smørgrav atf_add_test_case file_into_dir 4892822a795SDag-Erling Smørgrav atf_add_test_case file_from_dir 4902822a795SDag-Erling Smørgrav atf_add_test_case file_from_dir_replace 4912822a795SDag-Erling Smørgrav atf_add_test_case file_to_dir 4922822a795SDag-Erling Smørgrav atf_add_test_case file_from_rename_dir 4932822a795SDag-Erling Smørgrav atf_add_test_case rename_dir 4942822a795SDag-Erling Smørgrav atf_add_test_case dir_to_dir 4952822a795SDag-Erling Smørgrav atf_add_test_case dir_into_dir 4962822a795SDag-Erling Smørgrav atf_add_test_case dir_to_empty_dir 4972822a795SDag-Erling Smørgrav atf_add_test_case dir_to_nonempty_dir 4982822a795SDag-Erling Smørgrav atf_add_test_case dir_to_file 4992822a795SDag-Erling Smørgrav atf_add_test_case rename_fifo 5002822a795SDag-Erling Smørgrav atf_add_test_case fifo_into_dir 5012822a795SDag-Erling Smørgrav atf_add_test_case fifo_from_dir 5022822a795SDag-Erling Smørgrav atf_add_test_case fifo_from_dir_into_dir 503*d4fb5984SDag-Erling Smørgrav atf_add_test_case mv_f 504*d4fb5984SDag-Erling Smørgrav atf_add_test_case mv_h 505*d4fb5984SDag-Erling Smørgrav atf_add_test_case mv_i 506*d4fb5984SDag-Erling Smørgrav atf_add_test_case mv_n 507*d4fb5984SDag-Erling Smørgrav atf_add_test_case mv_v 5082822a795SDag-Erling Smørgrav} 509