#! /bin/bash
# FS QA Test No. 245
#
# Check that directory renames onto non-empty targets fail
#
# Based on a bug report and testcase from  Vlado Plaga <rechner@vlado-do.de>
#
#-----------------------------------------------------------------------
# Copyright (c) 2010 Christoph Hellwig.  All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#-----------------------------------------------------------------------
#
# creator
owner=hch@lst.de

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

# real QA test starts here
_supported_fs generic
_supported_os Linux

dir=$TEST_DIR/test-mv

_cleanup()
{
	rm -rf $dir
}

# According to the rename(2) manpage you can get either EEXIST or ENOTEMPTY as an
# error for trying to rename a non-empty directory, so just catch the error for
# ENOTMEMPTY and replace it with the EEXIST output so that either result passes
_filter_directory_not_empty()
{
	sed -e "s,Directory not empty,File exists,g"
}
 
trap "_cleanup ; exit \$status" 0 1 2 3 15


mkdir $dir

mkdir $dir/aa
mkdir $dir/ab
touch $dir/aa/1
mkdir $dir/ab/aa
touch $dir/ab/aa/2

mv $dir/ab/aa/ $dir 2>&1 | _filter_test_dir | _filter_directory_not_empty

status=0
exit $status
