Message ID | 20220126181210.24897-2-pvorel@suse.cz |
---|---|
State | Superseded |
Headers | show |
Series | shell: Add TST_FORMAT_DEVICE support | expand |
Hi! > diff --git a/testcases/commands/df/df01.sh b/testcases/commands/df/df01.sh > index b821452e60..0d09e290ce 100755 > --- a/testcases/commands/df/df01.sh > +++ b/testcases/commands/df/df01.sh > @@ -23,13 +23,11 @@ usage: $0 [-f <ext2|ext3|ext4|vfat|...>] > > OPTIONS > -f Specify the type of filesystem to be built. If not > - specified, the default filesystem type (currently ext2) > + specified, the default filesystem type (currently $TST_DEFAULT_FS_TYPE) > is used. > EOF > } > > -TST_FS_TYPE=ext2 > - > parse_args() > { > TST_FS_TYPE="$2" > diff --git a/testcases/commands/mkfs/mkfs01.sh b/testcases/commands/mkfs/mkfs01.sh > index 17c7fb9e4a..e2896858f9 100755 > --- a/testcases/commands/mkfs/mkfs01.sh > +++ b/testcases/commands/mkfs/mkfs01.sh > @@ -23,7 +23,7 @@ usage: $0 [-f <ext2|ext3|ext4|vfat|...>] > > OPTIONS > -f Specify the type of filesystem to be built. If not > - specified, the default filesystem type (currently ext2) > + specified, the default filesystem type (currently $TST_DEFAULT_FS_TYPE) > is used. > EOF > } > @@ -45,7 +45,7 @@ setup() > mkfs_verify_type() > { > if [ -z "$1" ]; then > - blkid $2 -t TYPE="ext2" >/dev/null > + blkid $2 -t TYPE="$TST_DEFAULT_FS_TYPE" >/dev/null > else > if [ "$1" = "msdos" ]; then > blkid $2 -t TYPE="vfat" >/dev/null > diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh > index 30614974c3..eb3bf0df12 100644 > --- a/testcases/lib/tst_test.sh > +++ b/testcases/lib/tst_test.sh > @@ -17,6 +17,8 @@ export TST_ITERATIONS=1 > export TST_TMPDIR_RHOST=0 > export TST_LIB_LOADED=1 > > +export TST_DEFAULT_FS_TYPE="ext2" Actually if we wanted to sync with the C library it should be: if [ -z "$TST_FS_TYPE" ]; then if [ -n "$LTP_DEV_FS_TYPE" ]; then export TST_FS_TYPE="$LTP_DEV_FS_TYPE" else export TST_FS_TYPE="ext2" fi fi That's equivalent of the .dev_fs_type in the tst_test structure as we do: if (tst_test->dev_fs_type) tdev.fs_type = tst_test->dev_fs_type; else tdev.fs_type = tst_dev_fs_type(); And the tst_dev_fs_type() returns either $LTP_DEV_FS_TYPE or "ext2" if it's not defined. > . tst_ansi_color.sh > . tst_security.sh > > @@ -338,15 +340,13 @@ tst_umount() > tst_mkfs() > { > local fs_type=${1:-$TST_FS_TYPE} > + [ -z "$fs_type" ] && fs_type="$TST_DEFAULT_FS_TYPE" > + > local device=${2:-$TST_DEVICE} > [ $# -ge 1 ] && shift > [ $# -ge 1 ] && shift > local fs_opts="$@" > > - if [ -z "$fs_type" ]; then > - tst_brk TBROK "No fs_type specified" > - fi > - > if [ -z "$device" ]; then > tst_brk TBROK "No device specified" > fi > @@ -599,7 +599,7 @@ tst_run() > local _tst_name > > if [ -n "$TST_TEST_PATH" ]; then > - for _tst_i in $(grep '^[^#]*\bTST_' "$TST_TEST_PATH" | sed 's/.*TST_//; s/[="} \t\/:`].*//'); do > + for _tst_i in $(grep '^[^#]*\bTST_' "$TST_TEST_PATH" | sed 's/.*TST_//; s/[="} \t\/:`)].*//'); do > case "$_tst_i" in > DISABLE_APPARMOR|DISABLE_SELINUX);; > SETUP|CLEANUP|TESTFUNC|ID|CNT|MIN_KVER);; > @@ -614,6 +614,7 @@ tst_run() > NET_SKIP_VARIABLE_INIT|NEEDS_CHECKPOINTS);; > CHECKPOINT_WAIT|CHECKPOINT_WAKE);; > CHECKPOINT_WAKE2|CHECKPOINT_WAKE_AND_WAIT);; > + DEFAULT_FS_TYPE);; > *) tst_res TWARN "Reserved variable TST_$_tst_i used!";; > esac > done > -- > 2.34.1 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp
Hi Cyril, > > +export TST_DEFAULT_FS_TYPE="ext2" > Actually if we wanted to sync with the C library it should be: > if [ -z "$TST_FS_TYPE" ]; then > if [ -n "$LTP_DEV_FS_TYPE" ]; then > export TST_FS_TYPE="$LTP_DEV_FS_TYPE" > else > export TST_FS_TYPE="ext2" > fi > fi Ah, I forget on $LTP_DEV_FS_TYPE, thanks. nit: or shorter if [ -z "$TST_FS_TYPE" ]; then export TST_FS_TYPE="${LTP_DEV_FS_TYPE:-ext2}" fi > That's equivalent of the .dev_fs_type in the tst_test structure as we > do: > if (tst_test->dev_fs_type) > tdev.fs_type = tst_test->dev_fs_type; > else > tdev.fs_type = tst_dev_fs_type(); > And the tst_dev_fs_type() returns either $LTP_DEV_FS_TYPE or "ext2" if > it's not defined. BTW I meant TST_DEFAULT_FS_TYPE="ext2" as equivalent of #define DEFAULT_FS_TYPE "ext2" from include/tst_defaults.h. Because df01.sh help uses hardcoded ext2: @@ -23,13 +23,11 @@ usage: $0 [-f <ext2|ext3|ext4|vfat|...>] OPTIONS -f Specify the type of filesystem to be built. If not - specified, the default filesystem type (currently ext2) + specified, the default filesystem type (currently $TST_DEFAULT_FS_TYPE) is used. Thus it'd be: export TST_DEFAULT_FS_TYPE="ext2" if [ -z "$TST_FS_TYPE" ]; then export TST_FS_TYPE="${LTP_DEV_FS_TYPE:-$TST_DEFAULT_FS_TYPE}" fi But it's very minor, shell is different than C, we don't have to have variable for everything. Kind regards, Petr
diff --git a/testcases/commands/df/df01.sh b/testcases/commands/df/df01.sh index b821452e60..0d09e290ce 100755 --- a/testcases/commands/df/df01.sh +++ b/testcases/commands/df/df01.sh @@ -23,13 +23,11 @@ usage: $0 [-f <ext2|ext3|ext4|vfat|...>] OPTIONS -f Specify the type of filesystem to be built. If not - specified, the default filesystem type (currently ext2) + specified, the default filesystem type (currently $TST_DEFAULT_FS_TYPE) is used. EOF } -TST_FS_TYPE=ext2 - parse_args() { TST_FS_TYPE="$2" diff --git a/testcases/commands/mkfs/mkfs01.sh b/testcases/commands/mkfs/mkfs01.sh index 17c7fb9e4a..e2896858f9 100755 --- a/testcases/commands/mkfs/mkfs01.sh +++ b/testcases/commands/mkfs/mkfs01.sh @@ -23,7 +23,7 @@ usage: $0 [-f <ext2|ext3|ext4|vfat|...>] OPTIONS -f Specify the type of filesystem to be built. If not - specified, the default filesystem type (currently ext2) + specified, the default filesystem type (currently $TST_DEFAULT_FS_TYPE) is used. EOF } @@ -45,7 +45,7 @@ setup() mkfs_verify_type() { if [ -z "$1" ]; then - blkid $2 -t TYPE="ext2" >/dev/null + blkid $2 -t TYPE="$TST_DEFAULT_FS_TYPE" >/dev/null else if [ "$1" = "msdos" ]; then blkid $2 -t TYPE="vfat" >/dev/null diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh index 30614974c3..eb3bf0df12 100644 --- a/testcases/lib/tst_test.sh +++ b/testcases/lib/tst_test.sh @@ -17,6 +17,8 @@ export TST_ITERATIONS=1 export TST_TMPDIR_RHOST=0 export TST_LIB_LOADED=1 +export TST_DEFAULT_FS_TYPE="ext2" + . tst_ansi_color.sh . tst_security.sh @@ -338,15 +340,13 @@ tst_umount() tst_mkfs() { local fs_type=${1:-$TST_FS_TYPE} + [ -z "$fs_type" ] && fs_type="$TST_DEFAULT_FS_TYPE" + local device=${2:-$TST_DEVICE} [ $# -ge 1 ] && shift [ $# -ge 1 ] && shift local fs_opts="$@" - if [ -z "$fs_type" ]; then - tst_brk TBROK "No fs_type specified" - fi - if [ -z "$device" ]; then tst_brk TBROK "No device specified" fi @@ -599,7 +599,7 @@ tst_run() local _tst_name if [ -n "$TST_TEST_PATH" ]; then - for _tst_i in $(grep '^[^#]*\bTST_' "$TST_TEST_PATH" | sed 's/.*TST_//; s/[="} \t\/:`].*//'); do + for _tst_i in $(grep '^[^#]*\bTST_' "$TST_TEST_PATH" | sed 's/.*TST_//; s/[="} \t\/:`)].*//'); do case "$_tst_i" in DISABLE_APPARMOR|DISABLE_SELINUX);; SETUP|CLEANUP|TESTFUNC|ID|CNT|MIN_KVER);; @@ -614,6 +614,7 @@ tst_run() NET_SKIP_VARIABLE_INIT|NEEDS_CHECKPOINTS);; CHECKPOINT_WAIT|CHECKPOINT_WAKE);; CHECKPOINT_WAKE2|CHECKPOINT_WAKE_AND_WAIT);; + DEFAULT_FS_TYPE);; *) tst_res TWARN "Reserved variable TST_$_tst_i used!";; esac done
To sync with C API which also has defined the default filesystem. That required to whitelist ) added after variable to allow use in help: (currently $TST_DEFAULT_FS_TYPE). Use it in df01.sh, mkfs01.sh (the only tests which works with filesystems). Signed-off-by: Petr Vorel <pvorel@suse.cz> --- testcases/commands/df/df01.sh | 4 +--- testcases/commands/mkfs/mkfs01.sh | 4 ++-- testcases/lib/tst_test.sh | 11 ++++++----- 3 files changed, 9 insertions(+), 10 deletions(-)