xref: /freebsd/bin/mv/tests/mv_test.sh (revision d4fb5984ab0b96cc784c907e622deda910d020f2)
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