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

Petr Vorel pvorel@suse.cz
Fri Jun 10 07:41:55 CEST 2022


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


More information about the ltp mailing list