git: d4fb5984ab0b - main - mv: Add test cases for command-line options.

From: Dag-Erling Smørgrav <des_at_FreeBSD.org>
Date: Tue, 19 Nov 2024 09:29:34 UTC
The branch main has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=d4fb5984ab0b96cc784c907e622deda910d020f2

commit d4fb5984ab0b96cc784c907e622deda910d020f2
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2024-11-19 09:29:15 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2024-11-19 09:29:15 +0000

    mv: Add test cases for command-line options.
    
    Sponsored by:   Klara, Inc.
    Reviewed by:    asomers
    Differential Revision:  https://reviews.freebsd.org/D47582
---
 bin/mv/tests/mv_test.sh | 117 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 117 insertions(+)

diff --git a/bin/mv/tests/mv_test.sh b/bin/mv/tests/mv_test.sh
index aae4bc3f9297..4412d5e88c5e 100644
--- a/bin/mv/tests/mv_test.sh
+++ b/bin/mv/tests/mv_test.sh
@@ -371,6 +371,118 @@ fifo_from_dir_into_dir_cleanup() {
 	mv_cleanup
 }
 
+atf_test_case mv_f cleanup
+mv_f_head() {
+	atf_set "descr" "Force replacement"
+	atf_set "require.user" "root"
+}
+mv_f_body() {
+	mv_setup
+	for FS in "" "fs/" ; do
+		mv_makefile fa
+		atf_check mv fa ${FS}fb
+		mv_checkfile fa ${FS}fb
+		mv_checkabsent fa
+		mv_makefile fa
+		:> ${FS}fb
+		atf_check mv -i -n -f fa ${FS}fb
+		mv_checkfile fa ${FS}fb
+		mv_checkabsent fa
+	done
+}
+mv_f_cleanup() {
+	mv_cleanup
+}
+
+atf_test_case mv_h cleanup
+mv_h_head() {
+	atf_set "descr" "Replace symbolic link"
+	atf_set "require.user" "root"
+}
+mv_h_body() {
+	mv_setup
+	for FS in "" "fs/" ; do
+		atf_check mkdir ${FS}da
+		atf_check ln -s da ${FS}db
+		# First test without -h, file goes into symlink target
+		mv_makefile fa
+		atf_check mv fa ${FS}db
+		mv_checkfile fa ${FS}da/fa
+		# Second test with -h, file replaces symlink
+		mv_makefile fa
+		atf_check mv -h fa ${FS}db
+		mv_checkfile fa ${FS}db
+	done
+}
+mv_h_cleanup() {
+	mv_cleanup
+}
+
+atf_test_case mv_i cleanup
+mv_i_head() {
+	atf_set "descr" "Confirm replacement"
+	atf_set "require.user" "root"
+}
+mv_i_body() {
+	mv_setup
+	echo n >n
+	echo y >y
+	for FS in "" "fs/" ; do
+		mv_makefile fa
+		mv_makefile ${FS}fb
+		# First test, answer no, file is not replaced
+		atf_check -e match:"^overwrite ${FS}fb\\?" \
+		      mv -i fa ${FS}fb <n
+		mv_checkfile fa fa
+		mv_checkfile fb ${FS}fb
+		# Second test, answer yes, file is replaced
+		atf_check -e match:"^overwrite ${FS}fb\\?" \
+		      mv -i fa ${FS}fb <y
+		mv_checkabsent fa
+		mv_checkfile fa ${FS}fb
+	done
+}
+mv_i_cleanup() {
+	mv_cleanup
+}
+
+atf_test_case mv_n cleanup
+mv_n_head() {
+	atf_set "descr" "Decline replacement"
+	atf_set "require.user" "root"
+}
+mv_n_body() {
+	mv_setup
+	for FS in "" "fs/" ; do
+		mv_makefile fa
+		mv_makefile ${FS}fb
+		atf_check mv -n fa ${FS}fb
+		mv_checkfile fa fa
+		mv_checkfile fb ${FS}fb
+	done
+}
+mv_n_cleanup() {
+	mv_cleanup
+}
+
+atf_test_case mv_v cleanup
+mv_v_head() {
+	atf_set "descr" "Verbose mode"
+	atf_set "require.user" "root"
+}
+mv_v_body() {
+	mv_setup
+	for FS in "" "fs/" ; do
+		mv_makefile fa
+		atf_check mkdir ${FS}da
+		atf_check -o inline:"fa -> ${FS}da/fa\n" \
+		      mv -v fa ${FS}da
+	done
+}
+mv_v_cleanup() {
+	mv_cleanup
+}
+
 atf_init_test_cases() {
 	atf_add_test_case rename_file
 	atf_add_test_case file_into_dir
@@ -388,4 +500,9 @@ atf_init_test_cases() {
 	atf_add_test_case fifo_into_dir
 	atf_add_test_case fifo_from_dir
 	atf_add_test_case fifo_from_dir_into_dir
+	atf_add_test_case mv_f
+	atf_add_test_case mv_h
+	atf_add_test_case mv_i
+	atf_add_test_case mv_n
+	atf_add_test_case mv_v
 }