diff mbox series

[1/5] tst_test.sh: Add $TST_DEFAULT_FS_TYPE

Message ID 20220126181210.24897-2-pvorel@suse.cz
State Superseded
Headers show
Series shell: Add TST_FORMAT_DEVICE support | expand

Commit Message

Petr Vorel Jan. 26, 2022, 6:12 p.m. UTC
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(-)

Comments

Cyril Hrubis Feb. 8, 2022, 1:47 p.m. UTC | #1
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
Petr Vorel Feb. 8, 2022, 6:20 p.m. UTC | #2
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 mbox series

Patch

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