diff mbox series

run-posix-option-group-test.sh: Log and exit if one attempts to run tests without compiling

Message ID 20220607221816.50955-1-sturlapati@vmware.com
State Accepted
Headers show
Series run-posix-option-group-test.sh: Log and exit if one attempts to run tests without compiling | expand

Commit Message

shatur.linux@gmail.com June 7, 2022, 10:18 p.m. UTC
From: Sharan Turlapati <sturlapati@vmware.com>

Currently, run-posix-option-group-test.sh erroneously
logs "***Tests Completed***" when no test has actually run if the script is invoked
to run without actually compiling the tests.

Check if the .run-test files actually exist before attempting to run them.
If not found, log a message indicating the problem and suggest to check if
the tests were compiled. Exit the script without attempting to run other
tests.

Signed-off-by: Sharan Turlapati <sturlapati@vmware.com>
---
 .../bin/run-posix-option-group-test.sh              | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

Comments

Petr Vorel June 10, 2022, 5:41 a.m. UTC | #1
Hi Sharan,

> From: Sharan Turlapati <sturlapati@vmware.com>

> Currently, run-posix-option-group-test.sh erroneously
> logs "***Tests Completed***" when no test has actually run if the script is invoked
> to run without actually compiling the tests.

> Check if the .run-test files actually exist before attempting to run them.
> If not found, log a message indicating the problem and suggest to check if
> the tests were compiled. Exit the script without attempting to run other
> tests.
Can you please describe how this happen? open POSIX failed to compile?

...
> +++ b/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
> @@ -22,9 +22,16 @@ EOF

>  run_option_group_tests()
>  {
> -	for test_script in $(find $1 -name '*.run-test' | sort); do
> -		(cd "$(dirname "$test_script")" && ./$(basename "$test_script"))
> -	done
> +	list_of_tests=`find $1 -name '*.run-test' | sort`
> +	if [[ -n $list_of_tests ]]
[[ ]] are bashisms, we require support for POSIX shell (i.e. dash, busybox sh)

TL;DR: simply use:
if [ -n "$list_of_tests" ]; then
NOTE [ ] require using quotes (unlike [[ ]]).

You can check similar error yourself:
$ checkbashisms run-posix-option-group-test.sh
possible bashism in run-posix-option-group-test.sh line 26 (alternative test command ([[ foo ]] should be [ foo ])):
	if [[ -n $list_of_tests ]]

All is described in:
https://github.com/linux-test-project/ltp/wiki/Test-Writing-Guidelines#22-shell-coding-style

> +	then
> +		for test_script in $list_of_tests; do
> +			(cd "$(dirname "$test_script")" && ./$(basename "$test_script"))
> +		done
> +	else
> +		echo ".run-test files not found under $1. Were the tests compiled?"
> +		exit 1
> +	fi
>  }

I'd prefer slightly different version:
* check for error first, then for can be out of else (readability)
* add local

run_option_group_tests()
{
	local list_of_tests

	list_of_tests=`find $1 -name '*.run-test' | sort`

	if [ -z "$list_of_tests" ]; then
		echo ".run-test files not found under $1. Were the tests compiled?"
		exit 1
	fi

	for test_script in $list_of_tests; do
		(cd "$(dirname "$test_script")" && ./$(basename "$test_script"))
	done
}

Kind regards,
Petr
Petr Vorel June 13, 2022, 1:46 p.m. UTC | #2
Hi Sharan,

> > Currently, run-posix-option-group-test.sh erroneously
> > logs "***Tests Completed***" when no test has actually run if the script is invoked
> > to run without actually compiling the tests.

> > Check if the .run-test files actually exist before attempting to run them.
> > If not found, log a message indicating the problem and suggest to check if
> > the tests were compiled. Exit the script without attempting to run other
> > tests.
> Can you please describe how this happen? open POSIX failed to compile?

OK, you noted this in the commit message.

Merged with fixed bashism, improved style and commit message.

Thanks!

Kind regards,
Petr
diff mbox series

Patch

diff --git a/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh b/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
index 0d4c9bd80..56773f0f0 100755
--- a/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
+++ b/testcases/open_posix_testsuite/bin/run-posix-option-group-test.sh
@@ -22,9 +22,16 @@  EOF
 
 run_option_group_tests()
 {
-	for test_script in $(find $1 -name '*.run-test' | sort); do
-		(cd "$(dirname "$test_script")" && ./$(basename "$test_script"))
-	done
+	list_of_tests=`find $1 -name '*.run-test' | sort`
+	if [[ -n $list_of_tests ]]
+	then
+		for test_script in $list_of_tests; do
+			(cd "$(dirname "$test_script")" && ./$(basename "$test_script"))
+		done
+	else
+		echo ".run-test files not found under $1. Were the tests compiled?"
+		exit 1
+	fi
 }
 
 case $1 in