From nobody Tue Nov 19 09:29:33 2024 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Xszj95jnnz5dpmv; Tue, 19 Nov 2024 09:29:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Xszj94hnWz4bmN; Tue, 19 Nov 2024 09:29:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1732008573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0w4UXnjMbKPOh7tAMtUxOh4Aj3T7s2BZpAUXGkOzftw=; b=oN/HrMR/DqRwQlsRqP8Q71tI13MOhKt8nI9HsNgOshCEz6AL6CRDSidnDOaceo+WGVPYiK Xu8L+G/1FaLDqvXGgfuGlHiz6Ehiq+AvprQZR75PtJ1TLEgdiAKF9yxbA84wuDvLmxySce nf5sxenLspN6G1lHE9I+z3URl2BiZeTa2aaDPRiBkPc/JeQahft5T+gZDDt8Us8SHLCKrD q8lmjr6Z9CGCd/hHbts2EzqhWSIESyvBxySf8QNmgPGrLnRhhR0EBZ601y/YnjFXclTW4U QpV7QmZFELQ2UiaUUk/CkRO6A5dUc+2l1bNQnYw1mNkSVfg4renT98c/QFT/FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1732008573; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0w4UXnjMbKPOh7tAMtUxOh4Aj3T7s2BZpAUXGkOzftw=; b=vwbg4z+dLLEjg3BRhptEStUa/EdbuvBfllq8PDceldqJQdBOOddwDSXeg7TwOrIdVb1zQr iH2J61Wa+/huiZn35rG58Tql0c0N3fetef12/w7qjhgBz5Hk8OocqgZl4Tpv7nv4xheb0M fkxfPXrsRH2EqVXNq2mQFI1bNYHKo2QxdJvJzn6akcyoyhDnDVXWywwl6t41YHuQMgZBB5 cdQ2A72uRBuLlB8PMMux9FooB8/V4hR9hcLSv4n/GlMH4RQ36bWkyfVzRIZvTZTbvcXJ9A XHu1J1pWajVNXe7oU14XhV8kLhc+92Ry5Mu8LD9lMMTZ6mTJixGH5rJPyoc4zQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1732008573; a=rsa-sha256; cv=none; b=o7CaiA1eo+BZCzZoHxiBCbArsTH0YN7rXjBUkPOeSTE1iIYXOwD93QmVk4P9F/HnZGJpr9 xXSLfe2TVE/ad3VS4ImhpLPXBXTSQlEU/L02h5s7sUB+lxFhNb60O0up02sPCI93KFWcqa +qW/9WCt6mwSXaGmBQpOdYDDb3OkE1QZvMQNRFt7gaJ4aayXt8Wq5qxyABSKU9Q+yP5Kb8 N2zJFEcXQsjZPyl5b+sC7QlG2DKVztgSpfyMm/y8/KeMtyebvqKkJXooNW2Za1QhrvaOO1 rpo5c4IQxDCrPjNcPCp5bvGpJbrJYstRgSukWaBrHbsE6vQMn46twx+IrHC2Qg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Xszj93j6Jz1K3R; Tue, 19 Nov 2024 09:29:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 4AJ9TXGK070475; Tue, 19 Nov 2024 09:29:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4AJ9TX71070472; Tue, 19 Nov 2024 09:29:33 GMT (envelope-from git) Date: Tue, 19 Nov 2024 09:29:33 GMT Message-Id: <202411190929.4AJ9TX71070472@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 2822a7953316 - main - mv: Convert tests to ATF. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2822a7953316f99418425bf3aa403d668e5af402 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=2822a7953316f99418425bf3aa403d668e5af402 commit 2822a7953316f99418425bf3aa403d668e5af402 Author: Dag-Erling Smørgrav AuthorDate: 2024-11-19 09:29:11 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2024-11-19 09:29:11 +0000 mv: Convert tests to ATF. Sponsored by: Klara, Inc. Reviewed by: asomers, markj Differential Revision: https://reviews.freebsd.org/D47569 --- ObsoleteFiles.inc | 3 + bin/mv/tests/Makefile | 2 +- bin/mv/tests/legacy_test.sh | 295 --------------------------------- bin/mv/tests/mv_test.sh | 391 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 395 insertions(+), 296 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 57e0f4609050..1378d6b6dcfa 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20241119: rewrite mv tests +OLD_FILES+=usr/tests/bin/mv/legacy_test + # 20241112: Retire MK_PROFILE support OLD_FILES+=usr/lib/lib80211_p.a OLD_FILES+=usr/lib/lib9p_p.a diff --git a/bin/mv/tests/Makefile b/bin/mv/tests/Makefile index 0e8da4c0981d..d0c65138c9c7 100644 --- a/bin/mv/tests/Makefile +++ b/bin/mv/tests/Makefile @@ -1,5 +1,5 @@ .include -TAP_TESTS_SH= legacy_test +ATF_TESTS_SH= mv_test .include diff --git a/bin/mv/tests/legacy_test.sh b/bin/mv/tests/legacy_test.sh deleted file mode 100644 index 8af025a0d011..000000000000 --- a/bin/mv/tests/legacy_test.sh +++ /dev/null @@ -1,295 +0,0 @@ -#!/bin/sh - -# A directory in a device different from that where the tests are run -TMPDIR=/tmp/regress.$$ -COUNT=0 - -# Begin an individual test -begin() -{ - COUNT=`expr $COUNT + 1` - OK=1 - if [ -z "$FS" ] - then - NAME="$1" - else - NAME="$1 (cross device)" - fi - rm -rf testdir $TMPDIR/testdir - mkdir -p testdir $TMPDIR/testdir - cd testdir -} - -# End an individual test -end() -{ - if [ $OK = 1 ] - then - printf 'ok ' - else - printf 'not ok ' - fi - echo "$COUNT - $NAME" - cd .. - rm -rf testdir $TMPDIR/testdir -} - -# Make a file that can later be verified -mkf() -{ - CN=`basename $1` - echo "$CN-$CN" >$1 -} - -# Verify that the file specified is correct -ckf() -{ - if [ -f $2 ] && echo "$1-$1" | diff - $2 >/dev/null - then - ok - else - notok - fi -} - -# Make a fifo that can later be verified -mkp() -{ - mkfifo $1 -} - -# Verify that the file specified is correct -ckp() -{ - if [ -p $2 ] - then - ok - else - notok - fi -} - -# Make a directory that can later be verified -mkd() -{ - CN=`basename $1` - mkdir -p $1/"$CN-$CN" -} - -# Verify that the directory specified is correct -ckd() -{ - if [ -d $2/$1-$1 ] - then - ok - else - notok - fi -} - -# Verify that the specified file does not exist -# (is not there) -cknt() -{ - if [ -r $1 ] - then - notok - else - ok - fi -} - -# A part of a test succeeds -ok() -{ - : -} - -# A part of a test fails -notok() -{ - OK=0 -} - -# Verify that the exit code passed is for unsuccessful termination -ckfail() -{ - if [ $1 -gt 0 ] - then - ok - else - notok - fi -} - -# Verify that the exit code passed is for successful termination -ckok() -{ - if [ $1 -eq 0 ] - then - ok - else - notok - fi -} - -# Run all tests locally and across devices -echo 1..32 -for FS in '' $TMPDIR/testdir/ -do - begin 'Rename file' - mkf fa - mv fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt fa - end - - begin 'Move files into directory' - mkf fa - mkf fb - mkdir -p ${FS}1/2/3 - mv fa fb ${FS}1/2/3 - ckok $? - ckf fa ${FS}1/2/3/fa - ckf fb ${FS}1/2/3/fb - cknt fa - cknt fb - end - - begin 'Move file from directory to file' - mkdir -p 1/2/3 - mkf 1/2/3/fa - mv 1/2/3/fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move file from directory to existing file' - mkdir -p 1/2/3 - mkf 1/2/3/fa - :> ${FS}fb - mv 1/2/3/fa ${FS}fb - ckok $? - ckf fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move file from directory to existing directory' - mkdir -p 1/2/3 - mkf 1/2/3/fa - mkdir -p ${FS}db/fa - # Should fail per POSIX step 3a: - # Destination path is a file of type directory and - # source_file is not a file of type directory - mv 1/2/3/fa ${FS}db 2>/dev/null - ckfail $? - ckf fa 1/2/3/fa - end - - begin 'Move file from directory to directory' - mkdir -p da1/da2/da3 - mkdir -p ${FS}db1/db2/db3 - mkf da1/da2/da3/fa - mv da1/da2/da3/fa ${FS}db1/db2/db3/fb - ckok $? - ckf fa ${FS}db1/db2/db3/fb - cknt da1/da2/da3/fa - end - - begin 'Rename directory' - mkd da - mv da ${FS}db - ckok $? - ckd da ${FS}db - cknt da - end - - begin 'Move directory to directory name' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - mv da1/da2/da3/da ${FS}db1/db2/db3/db - ckok $? - ckd da ${FS}db1/db2/db3/db - cknt da1/da2/da3/da - end - - begin 'Move directory to directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - mv da1/da2/da3/da ${FS}db1/db2/db3 - ckok $? - ckd da ${FS}db1/db2/db3/da - cknt da1/da2/da3/da - end - - begin 'Move directory to existing empty directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3/da - mv da1/da2/da3/da ${FS}db1/db2/db3 - ckok $? - ckd da ${FS}db1/db2/db3/da - cknt da1/da2/da3/da - end - - begin 'Move directory to existing non-empty directory' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3/da/full - # Should fail (per the semantics of rename(2)) - mv da1/da2/da3/da ${FS}db1/db2/db3 2>/dev/null - ckfail $? - ckd da da1/da2/da3/da - end - - begin 'Move directory to existing file' - mkd da1/da2/da3/da - mkdir -p ${FS}db1/db2/db3 - :> ${FS}db1/db2/db3/da - # Should fail per POSIX step 3b: - # Destination path is a file not of type directory - # and source_file is a file of type directory - mv da1/da2/da3/da ${FS}db1/db2/db3/da 2>/dev/null - ckfail $? - ckd da da1/da2/da3/da - end - - begin 'Rename fifo' - mkp fa - mv fa ${FS}fb - ckok $? - ckp fa ${FS}fb - cknt fa - end - - begin 'Move fifos into directory' - mkp fa - mkp fb - mkdir -p ${FS}1/2/3 - mv fa fb ${FS}1/2/3 - ckok $? - ckp fa ${FS}1/2/3/fa - ckp fb ${FS}1/2/3/fb - cknt fa - cknt fb - end - - begin 'Move fifo from directory to fifo' - mkdir -p 1/2/3 - mkp 1/2/3/fa - mv 1/2/3/fa ${FS}fb - ckok $? - ckp fa ${FS}fb - cknt 1/2/3/fa - end - - begin 'Move fifo from directory to directory' - mkdir -p da1/da2/da3 - mkdir -p ${FS}db1/db2/db3 - mkp da1/da2/da3/fa - mv da1/da2/da3/fa ${FS}db1/db2/db3/fb - ckok $? - ckp fa ${FS}db1/db2/db3/fb - cknt da1/da2/da3/fa - end -done diff --git a/bin/mv/tests/mv_test.sh b/bin/mv/tests/mv_test.sh new file mode 100644 index 000000000000..aae4bc3f9297 --- /dev/null +++ b/bin/mv/tests/mv_test.sh @@ -0,0 +1,391 @@ +# +# Copyright (c) 2007 Diomidis Spinellis +# Copyright (c) 2023 Klara, Inc. +# +# SPDX-License-Identifier: BSD-2-Clause +# + +mv_setup() { + atf_check mkdir fs + atf_check mount -t tmpfs -o size=1m tmp fs +} + +mv_cleanup() { + umount fs || true +} + +# Make a file that can later be verified +mv_makefile() { + local cn="${1##*/}" + echo "$cn-$cn" >"$1" +} + +# Verify that the file specified is correct +mv_checkfile() { + atf_check -o inline:"$1-$1\n" cat "$2" +} + +# Make a fifo that can later be verified +mv_makepipe() { + atf_check mkfifo $1 +} + +# Verify that the file specified is correct +mv_checkpipe() { + atf_check test -p "$2" +} + +# Make a directory that can later be verified +mv_makedir() { + local cn="${1##*/}" + atf_check mkdir -p "$1/$cn-$cn" +} + +# Verify that the directory specified is correct +mv_checkdir() { + atf_check test -d "$2/$1-$1" +} + +# Verify that the specified file does not exist +# (is not there) +mv_checkabsent() { + atf_check -s exit:1 test -r "$1" +} + +atf_test_case rename_file cleanup +rename_file_head() { + atf_set "descr" "Rename file" + atf_set "require.user" "root" +} +rename_file_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 + done +} +rename_file_cleanup() { + mv_cleanup +} + +atf_test_case file_into_dir cleanup +file_into_dir_head() { + atf_set "descr" "Move files into directory" + atf_set "require.user" "root" +} +file_into_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makefile fa + mv_makefile fb + atf_check mkdir -p ${FS}1/2/3 + atf_check mv fa fb ${FS}1/2/3 + mv_checkfile fa ${FS}1/2/3/fa + mv_checkfile fb ${FS}1/2/3/fb + mv_checkabsent fa + mv_checkabsent fb + done +} +file_into_dir_cleanup() { + mv_cleanup +} + +atf_test_case file_from_dir cleanup +file_from_dir_head() { + atf_set "descr" "Move file from directory to file" + atf_set "require.user" "root" +} +file_from_dir_body() { + mv_setup + atf_check mkdir -p 1/2/3 + for FS in "" "fs/" ; do + mv_makefile 1/2/3/fa + atf_check mv 1/2/3/fa ${FS}fb + mv_checkfile fa ${FS}fb + mv_checkabsent 1/2/3/fa + done +} +file_from_dir_cleanup() { + mv_cleanup +} + +atf_test_case file_from_dir_replace cleanup +file_from_dir_replace_head() { + atf_set "descr" "Move file from directory to existing file" + atf_set "require.user" "root" +} +file_from_dir_replace_body() { + mv_setup + atf_check mkdir -p 1/2/3 + for FS in "" "fs/" ; do + mv_makefile 1/2/3/fa + :> ${FS}fb + atf_check mv 1/2/3/fa ${FS}fb + mv_checkfile fa ${FS}fb + mv_checkabsent 1/2/3/fa + done +} +file_from_dir_replace_cleanup() { + mv_cleanup +} + +atf_test_case file_to_dir cleanup +file_to_dir_head() { + atf_set "descr" "Move file from directory to existing directory" + atf_set "require.user" "root" +} +file_to_dir_body() { + mv_setup + atf_check mkdir -p 1/2/3 + for FS in "" "fs/" ; do + mv_makefile 1/2/3/fa + atf_check mkdir -p ${FS}db/fa + # Should fail per POSIX step 3a: + # Destination path is a file of type directory and + # source_file is not a file of type directory + atf_check -s not-exit:0 -e match:"Is a directory" \ + mv 1/2/3/fa ${FS}db + mv_checkfile fa 1/2/3/fa + done +} +file_to_dir_cleanup() { + mv_cleanup +} + +atf_test_case file_from_rename_dir cleanup +file_from_rename_dir_head() { + atf_set "descr" "Move file from directory to directory" + atf_set "require.user" "root" +} +file_from_rename_dir_body() { + mv_setup + atf_check mkdir -p da1/da2/da3 + for FS in "" "fs/" ; do + atf_check mkdir -p ${FS}db1/db2/db3 + mv_makefile da1/da2/da3/fa + atf_check mv da1/da2/da3/fa ${FS}db1/db2/db3/fb + mv_checkfile fa ${FS}db1/db2/db3/fb + mv_checkabsent da1/da2/da3/fa + done +} +file_from_rename_dir_cleanup() { + mv_cleanup +} + +atf_test_case rename_dir cleanup +rename_dir_head() { + atf_set "descr" "Rename directory" + atf_set "require.user" "root" +} +rename_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da + atf_check mv da ${FS}db + mv_checkdir da ${FS}db + mv_checkabsent da + done +} +rename_dir_cleanup() { + mv_cleanup +} + +atf_test_case dir_to_dir cleanup +dir_to_dir_head() { + atf_set "descr" "Move directory to directory name" + atf_set "require.user" "root" +} +dir_to_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da1/da2/da3/da + atf_check mkdir -p ${FS}db1/db2/db3 + atf_check mv da1/da2/da3/da ${FS}db1/db2/db3/db + mv_checkdir da ${FS}db1/db2/db3/db + mv_checkabsent da1/da2/da3/da + done +} +dir_to_dir_cleanup() { + mv_cleanup +} + +atf_test_case dir_into_dir cleanup +dir_into_dir_head() { + atf_set "descr" "Move directory to directory" + atf_set "require.user" "root" +} +dir_into_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da1/da2/da3/da + atf_check mkdir -p ${FS}db1/db2/db3 + atf_check mv da1/da2/da3/da ${FS}db1/db2/db3 + mv_checkdir da ${FS}db1/db2/db3/da + mv_checkabsent da1/da2/da3/da + done +} +dir_into_dir_cleanup() { + mv_cleanup +} + +atf_test_case dir_to_empty_dir cleanup +dir_to_empty_dir_head() { + atf_set "descr" "Move directory to existing empty directory" + atf_set "require.user" "root" +} +dir_to_empty_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da1/da2/da3/da + atf_check mkdir -p ${FS}db1/db2/db3/da + atf_check mv da1/da2/da3/da ${FS}db1/db2/db3 + mv_checkdir da ${FS}db1/db2/db3/da + mv_checkabsent da1/da2/da3/da + done +} +dir_to_empty_dir_cleanup() { + mv_cleanup +} + +atf_test_case dir_to_nonempty_dir cleanup +dir_to_nonempty_dir_head() { + atf_set "descr" "Move directory to existing non-empty directory" + atf_set "require.user" "root" +} +dir_to_nonempty_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da1/da2/da3/da + atf_check mkdir -p ${FS}db1/db2/db3/da/full + # Should fail (per the semantics of rename(2)) + atf_check -s not-exit:0 -e match:"Directory not empty" \ + mv da1/da2/da3/da ${FS}db1/db2/db3 + mv_checkdir da da1/da2/da3/da + done +} +dir_to_nonempty_dir_cleanup() { + mv_cleanup +} + +atf_test_case dir_to_file cleanup +dir_to_file_head() { + atf_set "descr" "Move directory to existing file" + atf_set "require.user" "root" +} +dir_to_file_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makedir da1/da2/da3/da + atf_check mkdir -p ${FS}db1/db2/db3 + :> ${FS}db1/db2/db3/da + # Should fail per POSIX step 3b: + # Destination path is a file not of type directory + # and source_file is a file of type directory + atf_check -s not-exit:0 -e match:"Not a directory" \ + mv da1/da2/da3/da ${FS}db1/db2/db3/da + mv_checkdir da da1/da2/da3/da + done +} +dir_to_file_cleanup() { + mv_cleanup +} + +atf_test_case rename_fifo cleanup +rename_fifo_head() { + atf_set "descr" "Rename fifo" + atf_set "require.user" "root" +} +rename_fifo_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makepipe fa + atf_check mv fa ${FS}fb + mv_checkpipe fa ${FS}fb + mv_checkabsent fa + done +} +rename_fifo_cleanup() { + mv_cleanup +} + +atf_test_case fifo_into_dir cleanup +fifo_into_dir_head() { + atf_set "descr" "Move fifos into directory" + atf_set "require.user" "root" +} +fifo_into_dir_body() { + mv_setup + for FS in "" "fs/" ; do + mv_makepipe fa + mv_makepipe fb + atf_check mkdir -p ${FS}1/2/3 + atf_check mv fa fb ${FS}1/2/3 + mv_checkpipe fa ${FS}1/2/3/fa + mv_checkpipe fb ${FS}1/2/3/fb + mv_checkabsent fa + mv_checkabsent fb + done +} +fifo_into_dir_cleanup() { + mv_cleanup +} + +atf_test_case fifo_from_dir cleanup +fifo_from_dir_head() { + atf_set "descr" "Move fifo from directory to fifo" + atf_set "require.user" "root" +} +fifo_from_dir_body() { + mv_setup + atf_check mkdir -p 1/2/3 + for FS in "" "fs/" ; do + mv_makepipe 1/2/3/fa + atf_check mv 1/2/3/fa ${FS}fb + mv_checkpipe fa ${FS}fb + mv_checkabsent 1/2/3/fa + done +} +fifo_from_dir_cleanup() { + mv_cleanup +} + +atf_test_case fifo_from_dir_into_dir cleanup +fifo_from_dir_into_dir_head() { + atf_set "descr" "Move fifo from directory to directory" + atf_set "require.user" "root" +} +fifo_from_dir_into_dir_body() { + mv_setup + atf_check mkdir -p da1/da2/da3 + for FS in "" "fs/" ; do + atf_check mkdir -p ${FS}db1/db2/db3 + mv_makepipe da1/da2/da3/fa + atf_check mv da1/da2/da3/fa ${FS}db1/db2/db3/fb + mv_checkpipe fa ${FS}db1/db2/db3/fb + mv_checkabsent da1/da2/da3/fa + done +} +fifo_from_dir_into_dir_cleanup() { + mv_cleanup +} + +atf_init_test_cases() { + atf_add_test_case rename_file + atf_add_test_case file_into_dir + atf_add_test_case file_from_dir + atf_add_test_case file_from_dir_replace + atf_add_test_case file_to_dir + atf_add_test_case file_from_rename_dir + atf_add_test_case rename_dir + atf_add_test_case dir_to_dir + atf_add_test_case dir_into_dir + atf_add_test_case dir_to_empty_dir + atf_add_test_case dir_to_nonempty_dir + atf_add_test_case dir_to_file + atf_add_test_case rename_fifo + atf_add_test_case fifo_into_dir + atf_add_test_case fifo_from_dir + atf_add_test_case fifo_from_dir_into_dir +}