#!/bin/bash

#
# Copyright (C) 2007 Karel Zak <kzak@redhat.com>
#
# This file is part of util-linux.
#
# This file 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; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will 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.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="broken fstab"

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

ts_check_test_command "$TS_CMD_MOUNT"
ts_check_test_command "$TS_CMD_UMOUNT"
ts_check_test_command "$TS_CMD_FINDMNT"

ts_skip_nonroot

# Let's use the same mountpoint for all subtests
MNT=$TS_MOUNTPOINT
mkdir -p $MNT

ts_fstab_lock
ts_fstab_open
echo "tmpd $MNT tmpfs" >> /etc/fstab
ts_fstab_close

ts_init_subtest "mount"
$TS_CMD_MOUNT $MNT &> /dev/null
[ "$?" = "0" ] || ts_log "error: mount $MNT"
$TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
if [ "$?" != "0" ]; then
	ts_log "Cannot find $MNT in /proc/self/mountinfo"
else
	ts_log "OK"
fi
$TS_CMD_UMOUNT $MNT &> /dev/null
if [ "$?" = "0" ]; then
	# for old systems with mtab and /sbin/mount.tmpfs
	/bin/umount --fake "$MNT" &> /dev/null
else
	ts_log "error: umount $MNT"
fi
ts_finalize_subtest


ts_init_subtest "mount-all"
$TS_CMD_MOUNT -a &> /dev/null
[ "$?" = "0" ] || ts_log "error: mount -a"
$TS_CMD_FINDMNT --kernel --mountpoint "$MNT" &> /dev/null
if [ "$?" != "0" ]; then
	ts_log "Cannot find $MNT in /proc/self/mountinfo"
else
	ts_log "OK"
fi
$TS_CMD_UMOUNT $MNT &> /dev/null
if [ "$?" = "0" ]; then
	# for old systems with mtab and /sbin/mount.tmpfs
	/bin/umount --fake $MNT &> /dev/null
else
	ts_log "error: umount $MNT"
fi
ts_finalize_subtest

ts_fstab_clean	# this unlocks too

ts_log "Success"
ts_finalize

