[LTP] [PATCH 2/2] shell lib: Add support for test cleanup

Petr Vorel pvorel@suse.cz
Fri Feb 14 14:55:31 CET 2025


Hi Cyril,


> Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
> ---
>  testcases/lib/run_tests.sh                    |  4 +++-
>  .../lib/tests/shell_loader_brk_cleanup.sh     | 20 ++++++++++++++++++
>  testcases/lib/tests/shell_loader_cleanup.sh   | 21 +++++++++++++++++++
>  testcases/lib/tst_env.sh                      |  4 ++++
>  4 files changed, 48 insertions(+), 1 deletion(-)
>  create mode 100755 testcases/lib/tests/shell_loader_brk_cleanup.sh
>  create mode 100755 testcases/lib/tests/shell_loader_cleanup.sh

> diff --git a/testcases/lib/run_tests.sh b/testcases/lib/run_tests.sh
> index 168dbb451..d568d4614 100755
> --- a/testcases/lib/run_tests.sh
> +++ b/testcases/lib/run_tests.sh
> @@ -9,6 +9,7 @@ shell_loader_filesystems.sh
>  shell_loader_kconfigs.sh
>  shell_loader_supported_archs.sh
>  shell_loader_tcnt.sh
> +shell_loader_cleanup.sh
>  shell_test01
>  shell_test02
>  shell_test03
> @@ -21,7 +22,8 @@ TESTS_TBROK="
>  shell_loader_invalid_block.sh
>  shell_loader_invalid_metadata.sh
>  shell_loader_no_metadata.sh
> -shell_loader_wrong_metadata.sh"
> +shell_loader_wrong_metadata.sh
> +shell_loader_brk_cleanup.sh"

>  TESTS_TCONF="shell_test06"

> diff --git a/testcases/lib/tests/shell_loader_brk_cleanup.sh b/testcases/lib/tests/shell_loader_brk_cleanup.sh
> new file mode 100755
> index 000000000..8c704a540
> --- /dev/null
> +++ b/testcases/lib/tests/shell_loader_brk_cleanup.sh
> @@ -0,0 +1,20 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (c) 2024-2025 Cyril Hrubis <chrubis@suse.cz>
> +#
> +# ---
> +# env
> +# {
> +# }
> +# ---
> +
> +TST_CLEANUP=cleanup
> +
> +. tst_loader.sh
> +
> +cleanup()
> +{
> +	tst_res TINFO "Cleanup runs"
> +}
> +
> +tst_brk TBROK "Test exits"
> diff --git a/testcases/lib/tests/shell_loader_cleanup.sh b/testcases/lib/tests/shell_loader_cleanup.sh
> new file mode 100755
> index 000000000..b183f1d28
> --- /dev/null
> +++ b/testcases/lib/tests/shell_loader_cleanup.sh
> @@ -0,0 +1,21 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (c) 2024-2025 Cyril Hrubis <chrubis@suse.cz>
> +#
> +# ---
> +# env
> +# {
> +# }
> +# ---
> +
> +TST_CLEANUP=do_cleanup
> +
> +. tst_loader.sh
> +
> +do_cleanup()
> +{
> +	tst_res TINFO "Cleanup executed"
> +}
> +
> +tst_res TPASS "Test is executed"
> +
> diff --git a/testcases/lib/tst_env.sh b/testcases/lib/tst_env.sh
> index 68f9a0daa..b13bab37c 100644
> --- a/testcases/lib/tst_env.sh
> +++ b/testcases/lib/tst_env.sh
> @@ -35,3 +35,7 @@ tst_brk_()

>  alias tst_res="tst_res_ $tst_script_name \$LINENO"
>  alias tst_brk="tst_brk_ $tst_script_name \$LINENO"
> +
> +if [ -n "$TST_CLEANUP" ]; then
> +	trap $TST_CLEANUP EXIT
> +fi

thanks!

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Unfortunately TST_SETUP will not work that way - function is not found or if you
load tst_env.sh at the end, it complains about missing tst_res or tst_brk:

./tests/./shell_loader_brk_cleanup.sh: line 16: tst_res: command not found

Obviously it does not help to add it to tst_loader.sh.

I'm surprised it checks that, is there shopt option which could disable it?

Kind regards,
Petr



More information about the ltp mailing list