From: Karel Zak Date: Thu, 17 May 2007 18:16:25 +0000 (+0200) Subject: tests: add functions for label, uuid and fstype detection X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f5bda012d51a2935c3f2ce909c9080e4e3217c1;p=util-linux tests: add functions for label, uuid and fstype detection Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index 983ceab3..68ff7b01 100644 --- a/configure.ac +++ b/configure.ac @@ -29,6 +29,8 @@ AC_GNU_SOURCE AC_PROG_LIBTOOL AC_PATH_PROG(PERL, perl) +AC_PATH_PROG(BLKID, blkid, [], [$PATH:/sbin]) +AC_PATH_PROG(VOLID, vol_id, [], [$PATH:/lib/udev]) AC_SYS_LARGEFILE diff --git a/tests/commands.sh.in b/tests/commands.sh.in index 9ed88a9c..26c77791 100644 --- a/tests/commands.sh.in +++ b/tests/commands.sh.in @@ -4,6 +4,10 @@ TS_TOPDIR=$TOPDIR/tests # helpers TS_HELPER_SYSINFO="$TS_TOPDIR/helpers/mnt_test_sysinfo" +# external commands +TS_ECMD_BLKID="@BLKID@" +TS_ECMD_VOLID="@VOLID@" + # paths to commands TS_CMD_MOUNT=${TS_CMD_MOUNT:-"$TOPDIR/mount/mount"} TS_CMD_UMOUNT=${TS_CMD_UMOUNT:-"$TOPDIR/mount/umount"} diff --git a/tests/functions.sh b/tests/functions.sh index 6c0658b1..7cb37430 100644 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -111,4 +111,53 @@ function ts_udev_loop_support { return 0 } - +function ts_uuid_by_devname { + local DEV="$1" + local UUID="" + if [ -x "$TS_ECMD_BLKID" ]; then + UUID=$($TS_ECMD_BLKID -c /dev/null -w /dev/null -s "UUID" $DEV | sed 's/.*UUID="//g; s/"//g') + elif [ -x "$TS_ECMD_VOLID" ]; then + UUID=$($TS_ECMD_VOLID -u $DEV) + fi + echo $UUID +} + +function ts_label_by_devname { + local DEV="$1" + local TYPE="" + if [ -x "$TS_ECMD_BLKID" ]; then + LABEL=$($TS_ECMD_BLKID -c /dev/null -w /dev/null -s "LABEL" $DEV | sed 's/.*LABEL="//g; s/"//g') + elif [ -x "$TS_ECMD_VOLID" ]; then + LABEL=$($TS_ECMD_VOLID -l $DEV) + fi + echo $LABEL +} + +function ts_fstype_by_devname { + local DEV="$1" + local TYPE="" + if [ -x "$TS_ECMD_BLKID" ]; then + TYPE=$($TS_ECMD_BLKID -c /dev/null -w /dev/null -s "TYPE" $DEV | sed 's/.*TYPE="//g; s/"//g') + elif [ -x "$TS_ECMD_VOLID" ]; then + TYPE=$($TS_ECMD_VOLID -t $DEV) + fi + echo $TYPE +} + +function ts_device_has { + local TAG="$1" + local VAL="$2" + local DEV="$3" + + case $TAG in + "TYPE") vl=$(ts_fstype_by_devname $DEV);; + "LABEL") vl=$(ts_label_by_devname $DEV);; + "UUID") vl=$(ts_uuid_by_devname $DEV);; + *) return 1;; + esac + + if [ "$vl" == "$VAL" ]; then + return 0 + fi + return 1 +}