#!/bin/bash

# Copyright (C) 2010 Karel Zak <kzak@redhat.com>

TS_TOPDIR="${0%/*}/../.."
TS_DESC="tab update"

. $TS_TOPDIR/functions.sh
ts_init "$*"
ts_skip_nonroot

TESTPROG="$TS_HELPER_LIBMOUNT_UPDATE"

[ -x $TESTPROG ] || ts_skip "test not compiled"

# IMPORTANT notes:
#
#  - the $TS_OUTPUT variable is between ts_init_subtest and ts_finalize_subtest
#    redefined to subtest specific namespace -- it means that $TS_OUTPUT is a
#    different file within a subtest.
#
#  - all this test uses global $TS_OUTPUT.{mtab,mountinfo}

export LIBMOUNT_MTAB=$TS_OUTPUT.mtab
rm -f $LIBMOUNT_MTAB
> $LIBMOUNT_MTAB


#
# Traditional /etc/mtab
#
has_mtab=$( ts_has_mtab_support )
if [ "$has_mtab" == "yes" ]; then
	
	ts_init_subtest "mtab-mount"
	ts_run $TESTPROG --add /dev/sda1 /mnt/foo ext3 "rw,bbb,ccc,fff=FFF,ddd,noexec"
	ts_run $TESTPROG --add /dev/sdb1 /mnt/bar ext3 "gg=G,ffff=f,ro,noatime"
	ts_run $TESTPROG --add /dev/sda2 /mnt/bar ext3 "rw,noatime"
	ts_run $TESTPROG --add /dev/sda1 /mnt/gogo ext3 "rw,noatime,nosuid"
	ts_run $TESTPROG --add none /proc proc defaults
	cp $LIBMOUNT_MTAB $TS_OUTPUT	# save the mtab aside
	ts_finalize_subtest		# checks the mtab

	ts_init_subtest "mtab-move"
	ts_run $TESTPROG --move /mnt/foo /mnt/newfoo
	ts_run $TESTPROG --move /mnt/bar /mnt/newbar
	cp $LIBMOUNT_MTAB $TS_OUTPUT	# save the mtab aside
	ts_finalize_subtest		# checks the mtab

	ts_init_subtest "mtab-remount"
	ts_run $TESTPROG --remount /mnt/newfoo "ro,noatime"
	ts_run $TESTPROG --remount /mnt/bar "rw,atime,nosuid"
	cp $LIBMOUNT_MTAB $TS_OUTPUT	# save the mtab aside
	ts_finalize_subtest		# checks the mtab

	ts_init_subtest "mtab-umount"
	ts_run $TESTPROG --remove /mnt/bar
	ts_run $TESTPROG --remove /mnt/gogo
	ts_run $TESTPROG --remove /proc
	cp $LIBMOUNT_MTAB $TS_OUTPUT	# save the mtab aside
	ts_finalize_subtest		# checks the mtab
fi

#
# utab
#
rm -f $LIBMOUNT_MTAB
ln -s /proc/mounts $LIBMOUNT_MTAB

export LIBMOUNT_UTAB=$TS_OUTPUT.utab
rm -f $LIBMOUNT_UTAB
> $LIBMOUNT_UTAB

ts_init_subtest "utab-mount"
ts_run $TESTPROG --add /dev/sda1 /mnt/foo ext3 "rw,bbb,ccc,fff=FFF,ddd,noexec"
ts_run $TESTPROG --add /dev/sdb1 /mnt/bar ext3 "ro,user"
ts_run $TESTPROG --add /dev/sda2 /mnt/xyz ext3 "rw,loop=/dev/loop0,uhelper=hal"
ts_run $TESTPROG --add none /proc proc "rw,user"
cp $LIBMOUNT_UTAB $TS_OUTPUT	# save the mtab aside
ts_finalize_subtest		# checks the mtab

ts_init_subtest "utab-move"
ts_run $TESTPROG --move /mnt/bar /mnt/newbar
ts_run $TESTPROG --move /mnt/xyz /mnt/newxyz
cp $LIBMOUNT_UTAB $TS_OUTPUT	# save the mtab aside
ts_finalize_subtest		# checks the mtab

ts_init_subtest "utab-remount"
ts_run $TESTPROG --remount /mnt/newbar "ro,noatime"
ts_run $TESTPROG --remount /mnt/newxyz "rw,user"
cp $LIBMOUNT_UTAB $TS_OUTPUT	# save the mtab aside
ts_finalize_subtest		# checks the mtab

ts_init_subtest "utab-umount"
ts_run $TESTPROG --remove /mnt/newbar
ts_run $TESTPROG --remove /proc
cp $LIBMOUNT_UTAB $TS_OUTPUT	# save the mtab aside
ts_finalize_subtest		# checks the mtab

#
# fstab - replace
#
export LIBMOUNT_FSTAB=$TS_OUTPUT.fstab
rm -f $LIBMOUNT_FSTAB
cp "$TS_SELF/files/fstab.comment" $LIBMOUNT_FSTAB

ts_init_subtest "fstab-replace"
ts_run $TESTPROG --replace "LABEL=foo" "/mnt/foo"
cp $LIBMOUNT_FSTAB $TS_OUTPUT	# save the fstab aside
ts_finalize_subtest		#checks the fstab

ts_finalize
