-Init device
Create partitions
Create filesystem
Do tests...
Create filesystem [btrfs]
All mount options (btrfs subvolume + utab) ---
-rw,relatime,ssd,uhelper=foo
+rw,relatime,ssd,space_cache,uhelper=foo
---
...done.
-Init device
Create partitions
Create filesystem
Do tests...
Create filesystem [btrfs]
All mount options (btrfs subvolume + utab) ---
-rw,relatime,ssd,uhelper=foo
+rw,relatime,ssd,space_cache,uhelper=foo
---
...done.
+++ /dev/null
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 1
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 1
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 0
-exit value: 1
-exit value: 1
-exit value: 0
-exit value: 0
-exit value: 1
-Init device
Create partitions
Create filesystem A
Create filesystem B
function ts_gen_diff {
local res=0
- if [ -s "$TS_OUTPUT" ]; then
+ [ -f "$TS_OUTPUT" ] || return 1
+ [ -f "$TS_EXPECTED" ] || TS_EXPECTED=/dev/null
- # remove libtool lt- prefixes
- sed --in-place 's/^lt\-\(.*\: \)/\1/g' $TS_OUTPUT
+ # remove libtool lt- prefixes
+ sed --in-place 's/^lt\-\(.*\: \)/\1/g' $TS_OUTPUT
- [ -d "$TS_DIFFDIR" ] || mkdir -p "$TS_DIFFDIR"
- diff -u $TS_EXPECTED $TS_OUTPUT > $TS_DIFF
+ [ -d "$TS_DIFFDIR" ] || mkdir -p "$TS_DIFFDIR"
+ diff -u $TS_EXPECTED $TS_OUTPUT > $TS_DIFF
- if [ -s $TS_DIFF ]; then
- res=1
- else
- rm -f $TS_DIFF;
- fi
- else
+ if [ $? -ne 0 ] || [ -s $TS_DIFF ]; then
res=1
+ else
+ rm -f $TS_DIFF;
fi
+
return $res
}
function ts_finalize_subtest {
local res=0
- if [ -s "$TS_EXPECTED" ]; then
- ts_gen_diff
- if [ $? -eq 1 ]; then
- ts_failed_subtest "$1"
- res=1
- else
- ts_ok_subtest "$(tt_gen_mem_report "$1")"
- fi
+ ts_gen_diff
+ if [ $? -eq 1 ]; then
+ ts_failed_subtest "$1"
+ res=1
else
- ts_skip_subtest "output undefined"
+ ts_ok_subtest "$(tt_gen_mem_report "$1")"
fi
[ $res -ne 0 ] && TS_NSUBFAILED=$(( $TS_NSUBFAILED + 1 ))
ts_cleanup_on_exit
if [ $TS_NSUBTESTS -ne 0 ]; then
- if [ $TS_NSUBFAILED -ne 0 ]; then
+ if ! ts_gen_diff || [ $TS_NSUBFAILED -ne 0 ]; then
ts_failed "$TS_NSUBFAILED from $TS_NSUBTESTS sub-tests"
else
ts_ok "all $TS_NSUBTESTS sub-tests PASSED"
fi
fi
- if [ -s $TS_EXPECTED ]; then
- ts_gen_diff
- if [ $? -eq 1 ]; then
- ts_failed "$1"
- fi
- ts_ok "$1"
- fi
-
- ts_skip "output undefined"
+ ts_gen_diff || ts_failed "$1"
+ ts_ok "$1"
}
function ts_die {
ts_skip_nonroot
ts_check_prog "mkfs.ext4"
+ts_check_prog "mkfs.btrfs"
TESTPROG="$TS_HELPER_LIBMOUNT_CONTEXT"
LABEL=libmount-test
ts_finalize_subtest
-if [ -x "/sbin/mkfs.btrfs" ]; then
- $TS_CMD_WIPEFS -a $DEVICE &> /dev/null
- ts_log "Create filesystem [btrfs]"
- mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
- udevadm settle
+$TS_CMD_WIPEFS -a $DEVICE &> /dev/null
+ts_log "Create filesystem [btrfs]"
+mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
+udevadm settle
- mount -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
- btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
- umount $MOUNTPOINT &> /dev/null
+mount -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
+btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
+umount $MOUNTPOINT &> /dev/null
- udevadm settle
+udevadm settle
- ts_init_subtest "mount-uhelper-subvol"
- mkdir -p $MOUNTPOINT &> /dev/null
- ts_valgrind $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
- grep -q $DEVICE $LIBMOUNT_UTAB || \
- echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
- ts_finalize_subtest
+ts_init_subtest "mount-uhelper-subvol"
+mkdir -p $MOUNTPOINT &> /dev/null
+ts_valgrind $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
+grep -q $DEVICE $LIBMOUNT_UTAB || \
+ echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
- ts_log "All mount options (btrfs subvolume + utab) ---"
- $TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1
- ts_log "---"
+ts_log "All mount options (btrfs subvolume + utab) ---"
+$TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1
+ts_log "---"
- ts_init_subtest "umount-subvol"
- ts_valgrind $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
- grep -q $DEVICE $LIBMOUNT_UTAB && \
- echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
- ts_finalize_subtest
-fi
+ts_init_subtest "umount-subvol"
+ts_valgrind $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
+grep -q $DEVICE $LIBMOUNT_UTAB && \
+ echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
ts_log "...done."
rmmod scsi_debug
ts_skip_nonroot
ts_check_prog "mkfs.ext4"
+ts_check_prog "mkfs.btrfs"
ts_init_py libmount
echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
ts_finalize_subtest
-if [ -x "/sbin/mkfs.btrfs" ]; then
- $TS_CMD_WIPEFS -a $DEVICE &> /dev/null
- ts_log "Create filesystem [btrfs]"
- mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
- udevadm settle
-
- mount -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
- btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
- umount $MOUNTPOINT &> /dev/null
-
- udevadm settle
-
- ts_init_subtest "mount-uhelper-subvol"
- mkdir -p $MOUNTPOINT &> /dev/null
- $PYTHON $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
- grep -q $DEVICE $LIBMOUNT_UTAB || \
- echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
- ts_finalize_subtest
-
- ts_log "All mount options (btrfs subvolume + utab) ---"
- $TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1
- ts_log "---"
-
- ts_init_subtest "umount-subvol"
- $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
- grep -q $DEVICE $LIBMOUNT_UTAB && \
- echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
- ts_finalize_subtest
-fi
+
+$TS_CMD_WIPEFS -a $DEVICE &> /dev/null
+ts_log "Create filesystem [btrfs]"
+mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null
+udevadm settle
+
+mount -t btrfs $DEVICE $MOUNTPOINT &> /dev/null
+btrfs subvolume create $MOUNTPOINT/sub &> /dev/null
+umount $MOUNTPOINT &> /dev/null
+
+udevadm settle
+
+ts_init_subtest "mount-uhelper-subvol"
+mkdir -p $MOUNTPOINT &> /dev/null
+$PYTHON $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
+grep -q $DEVICE $LIBMOUNT_UTAB || \
+ echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
+
+ts_log "All mount options (btrfs subvolume + utab) ---"
+$TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1
+ts_log "---"
+
+ts_init_subtest "umount-subvol"
+$PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
+grep -q $DEVICE $LIBMOUNT_UTAB && \
+ echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
ts_log "...done."
rmmod scsi_debug
$TS_CMD_LOSETUP --version >/dev/null 2>$TS_OUTPUT || ts_failed
$TS_CMD_LOSETUP --unknownopt >>$TS_OUTPUT 2>/dev/null && ts_failed
test -s $TS_OUTPUT && ts_failed
-rm -f $TS_OUTPUT
ts_skip_nonroot
ts_check_losetup
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest alternative_option_long
$TS_CMD_GETOPT --alternative -o a -l one,two:,three::,four:: -- -a -one -two=MANDATORY -three=OPTIONAL >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest alternative_option_short
$TS_CMD_GETOPT -a -o a -l one,two:,three::,four:: -- -a -one -two=MANDATORY -three=OPTIONAL >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest invalid_getopt_option
$TS_CMD_GETOPT -b >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
sed -i '1,1s/.*\///' $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest invocation_model_one
$TS_CMD_GETOPT abc:d::e::f::g: ARG0 -b ARG1 -d -eOPTIONAL1 -f NOT_OPTIONAL ARG2 -a -c -ISREQUIRED ARG3 -g "BECOMES THREE ARGUMENTS" >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest invocation_model_three_as_one
$TS_CMD_GETOPT -o abc:d::e::f::g: -- ARG0 -b ARG1 -d -eOPTIONAL1 -f NOT_OPTIONAL ARG2 -a -c -ISREQUIRED ARG3 -g "BECOMES THREE ARGUMENTS" >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest invocation_model_two_as_one
$TS_CMD_GETOPT -- abc:d::e::f::g: ARG0 -b ARG1 -d -eOPTIONAL1 -f NOT_OPTIONAL ARG2 -a -c -ISREQUIRED ARG3 -g "BECOMES THREE ARGUMENTS" >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest invocation_without_parameters
$TS_CMD_GETOPT >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest long_option_ambiguous_1
$TS_CMD_GETOPT -o a -l long1,long2 -- --long >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
sed -i -e '1,1s/.*\///' -e "1s/ambiguous$/ambiguous; possibilities: '--long1' '--long2'/" $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest longopts
$TS_CMD_GETOPT -o a -l long1,secondlong:,thirdlong::,abbriviation: -- --long1 EXTRA1 --thirdlong=ARGUMENT --secondlong=ARG --abbr ABBRARG -a >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest name_option_long
$TS_CMD_GETOPT -n THIS_PROGRAM -o a -l long -- -b --long --whatever -a >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest name_option_short
$TS_CMD_GETOPT --name THIS_PROGRAM -o a -l long -- -b --long --whatever -a >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest quiet_option_long
$TS_CMD_GETOPT --quiet -o a,b: -l long1,long2 -- -c --unknown --long -b >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest quiet_option_short
$TS_CMD_GETOPT -q -o a,b: -l long1,long2 -- -c --unknown --long -b >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest quiet_output_option_long
$TS_CMD_GETOPT --quiet-output -o a,b: -l long1,long2 -- -c --unknown --long -b >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
sed -i -e '1,4s/.*\///' -e "3s/ambiguous$/ambiguous; possibilities: '--long1' '--long2'/" $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest quiet_output_option_short
$TS_CMD_GETOPT -Q -o a,b: -l long1,long2 -- -c --unknown --long -b >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
sed -i -e '1,4s/.*\///' -e "3s/ambiguous$/ambiguous; possibilities: '--long1' '--long2'/" $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest same_long_short_options
$TS_CMD_GETOPT -o a -l a -- -a --a >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest test_for_enhanced_getopt
$TS_CMD_GETOPT -T >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest unknown_options
$TS_CMD_GETOPT -o a -l long -- -b --long --whatever -a >> $TS_OUTPUT 2>&1
echo "exit value: $?" >> $TS_OUTPUT
sed -i '1,2s/.*\///' $TS_OUTPUT
ts_finalize_subtest
-echo "exit value: $?" >> $TS_OUTPUT
ts_init_subtest unquoted_option_bash
$TS_CMD_GETOPT -s bash -u -o a: -l long1: -- -a '$?!* ' --long \"\\\' 'More
than