[LTP] [PATCH v3 3/4] shell lib: Add basic support for test setup

Li Wang liwang@redhat.com
Thu Jun 12 07:08:00 CEST 2025


On Mon, Jun 9, 2025 at 8:46 PM Petr Vorel <pvorel@suse.cz> wrote:

> Add basic support for test cleanup in shell loader.
>
> This required to:
>
> * Source tst_env.sh also in the tests before test/setup/cleanup functions,
>   otherwise tst_res alias would not be found:
>   tests/shell_loader_setup_cleanup.sh: 22: tst_res: not found
>
> * Add tst_run.sh
> * Move sourcing tst_loader.sh at the end of the test (after
>   test/setup/cleanup functions), otherwise test/setup/cleanup would not be
> found:
>   tests/shell_loader_setup_cleanup.sh: 19: testcases/lib/tst_loader.sh:
> setup: not found
>   tests/shell_loader_setup_cleanup.sh: 22: testcases/lib/tst_loader.sh:
> tst_test: not found
>
> This solves the problem of the order the scripts are sourced. Before it
> was:
>
> test.sh
>   . tst_loader.sh
>     tst_run_shell test.sh
>     . tst_loader.sh
>       . tst_env.sh <- at this point in the execution it haven't even
> started parsing
>                       test.sh so it cannot run functions from there at all
>
> Now:
>
> test.sh
>   . tst_loader.sh
>     tst_run_shell test.sh
>     . tst_loader.sh
>       . tst_env.sh
>     . tst_run.sh
>
> There will be more improvements in the future, at least adding TST_CNT
> support (will require changes in tst_test.c to handle timeouts).
>
> Suggested-by: Cyril Hrubis <chrubis@suse.cz>
> Co-developed-by: Cyril Hrubis <chrubis@suse.cz>
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
>

Reviewed-by: Li Wang <liwang@redhat.com>


---
> Changes v2->v3:
> * Create tst_run.sh (Cyril)
>
>  testcases/kernel/mem/vma/vma05.sh                |  2 +-
>  testcases/lib/tests/shell_loader.sh              |  2 +-
>  .../lib/tests/shell_loader_all_filesystems.sh    |  2 +-
>  testcases/lib/tests/shell_loader_brk_cleanup.sh  |  2 +-
>  testcases/lib/tests/shell_loader_c_child.sh      |  2 +-
>  testcases/lib/tests/shell_loader_cleanup.sh      |  2 +-
>  testcases/lib/tests/shell_loader_filesystems.sh  |  2 +-
>  .../lib/tests/shell_loader_invalid_block.sh      |  2 +-
>  .../lib/tests/shell_loader_invalid_metadata.sh   |  2 +-
>  testcases/lib/tests/shell_loader_kconfigs.sh     |  2 +-
>  testcases/lib/tests/shell_loader_no_metadata.sh  |  2 +-
>  .../lib/tests/shell_loader_supported_archs.sh    |  2 +-
>  testcases/lib/tests/shell_loader_tags.sh         |  2 +-
>  testcases/lib/tests/shell_loader_tcnt.sh         |  2 +-
>  .../lib/tests/shell_loader_wrong_metadata.sh     |  2 +-
>  testcases/lib/tst_env.sh                         |  9 ---------
>  testcases/lib/tst_run.sh                         | 16 ++++++++++++++++
>  17 files changed, 31 insertions(+), 24 deletions(-)
>  create mode 100644 testcases/lib/tst_run.sh
>
> diff --git a/testcases/kernel/mem/vma/vma05.sh
> b/testcases/kernel/mem/vma/vma05.sh
> index 11d6b2ad86..c560eecbcd 100755
> --- a/testcases/kernel/mem/vma/vma05.sh
> +++ b/testcases/kernel/mem/vma/vma05.sh
> @@ -71,4 +71,4 @@ tst_test()
>         fi
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader.sh
> b/testcases/lib/tests/shell_loader.sh
> index 73812c3e23..78dba06b25 100755
> --- a/testcases/lib/tests/shell_loader.sh
> +++ b/testcases/lib/tests/shell_loader.sh
> @@ -27,4 +27,4 @@ tst_test()
>         esac
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_all_filesystems.sh
> b/testcases/lib/tests/shell_loader_all_filesystems.sh
> index 8fe3809a5e..3c3978f51c 100755
> --- a/testcases/lib/tests/shell_loader_all_filesystems.sh
> +++ b/testcases/lib/tests/shell_loader_all_filesystems.sh
> @@ -32,4 +32,4 @@ tst_test()
>         fi
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_brk_cleanup.sh
> b/testcases/lib/tests/shell_loader_brk_cleanup.sh
> index ff33345ce3..4e8ce4f737 100755
> --- a/testcases/lib/tests/shell_loader_brk_cleanup.sh
> +++ b/testcases/lib/tests/shell_loader_brk_cleanup.sh
> @@ -22,4 +22,4 @@ tst_test()
>         tst_brk TBROK "Test exits"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_c_child.sh
> b/testcases/lib/tests/shell_loader_c_child.sh
> index b2b8f3d057..13480968f9 100755
> --- a/testcases/lib/tests/shell_loader_c_child.sh
> +++ b/testcases/lib/tests/shell_loader_c_child.sh
> @@ -25,4 +25,4 @@ tst_test()
>         shell_c_child
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_cleanup.sh
> b/testcases/lib/tests/shell_loader_cleanup.sh
> index 684901b51f..91071a5a75 100755
> --- a/testcases/lib/tests/shell_loader_cleanup.sh
> +++ b/testcases/lib/tests/shell_loader_cleanup.sh
> @@ -22,4 +22,4 @@ tst_test()
>         tst_res TPASS "Test is executed"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_filesystems.sh
> b/testcases/lib/tests/shell_loader_filesystems.sh
> index b2c9d2f7d1..d584503adb 100755
> --- a/testcases/lib/tests/shell_loader_filesystems.sh
> +++ b/testcases/lib/tests/shell_loader_filesystems.sh
> @@ -40,4 +40,4 @@ tst_test()
>         fi
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_invalid_block.sh
> b/testcases/lib/tests/shell_loader_invalid_block.sh
> index 370c9043bc..be45303d79 100755
> --- a/testcases/lib/tests/shell_loader_invalid_block.sh
> +++ b/testcases/lib/tests/shell_loader_invalid_block.sh
> @@ -27,4 +27,4 @@ tst_test()
>         tst_res TPASS "This should pass!"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_invalid_metadata.sh
> b/testcases/lib/tests/shell_loader_invalid_metadata.sh
> index 3834f1b9ed..c4c7579243 100755
> --- a/testcases/lib/tests/shell_loader_invalid_metadata.sh
> +++ b/testcases/lib/tests/shell_loader_invalid_metadata.sh
> @@ -19,4 +19,4 @@ tst_test()
>         tst_res TFAIL "Shell loader should TBROK the test"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_kconfigs.sh
> b/testcases/lib/tests/shell_loader_kconfigs.sh
> index e1b6187554..d03bc99cac 100755
> --- a/testcases/lib/tests/shell_loader_kconfigs.sh
> +++ b/testcases/lib/tests/shell_loader_kconfigs.sh
> @@ -16,4 +16,4 @@ tst_test()
>         tst_res TPASS "Shell loader works fine!"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_no_metadata.sh
> b/testcases/lib/tests/shell_loader_no_metadata.sh
> index b664b48b57..2ad458ef8d 100755
> --- a/testcases/lib/tests/shell_loader_no_metadata.sh
> +++ b/testcases/lib/tests/shell_loader_no_metadata.sh
> @@ -12,4 +12,4 @@ tst_test()
>         tst_res TFAIL "Shell loader should TBROK the test"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_supported_archs.sh
> b/testcases/lib/tests/shell_loader_supported_archs.sh
> index 9ad24f9c03..a45cc59b7d 100755
> --- a/testcases/lib/tests/shell_loader_supported_archs.sh
> +++ b/testcases/lib/tests/shell_loader_supported_archs.sh
> @@ -16,4 +16,4 @@ tst_test()
>         tst_res TPASS "We are running on supported architecture"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_tags.sh
> b/testcases/lib/tests/shell_loader_tags.sh
> index c780a66c57..56eadaf7a2 100755
> --- a/testcases/lib/tests/shell_loader_tags.sh
> +++ b/testcases/lib/tests/shell_loader_tags.sh
> @@ -19,4 +19,4 @@ tst_test()
>         tst_res TFAIL "Fails the test so that tags are shown."
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_tcnt.sh
> b/testcases/lib/tests/shell_loader_tcnt.sh
> index 93bd612ee2..cf2a0b74ec 100755
> --- a/testcases/lib/tests/shell_loader_tcnt.sh
> +++ b/testcases/lib/tests/shell_loader_tcnt.sh
> @@ -19,4 +19,4 @@ tst_test()
>         tst_res TPASS "Iteration $1"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tests/shell_loader_wrong_metadata.sh
> b/testcases/lib/tests/shell_loader_wrong_metadata.sh
> index 8f18741100..35c535beed 100755
> --- a/testcases/lib/tests/shell_loader_wrong_metadata.sh
> +++ b/testcases/lib/tests/shell_loader_wrong_metadata.sh
> @@ -19,4 +19,4 @@ tst_test()
>         tst_res TFAIL "Shell loader should TBROK the test"
>  }
>
> -tst_test
> +. tst_run.sh
> diff --git a/testcases/lib/tst_env.sh b/testcases/lib/tst_env.sh
> index b13bab37c3..585790a7d0 100644
> --- a/testcases/lib/tst_env.sh
> +++ b/testcases/lib/tst_env.sh
> @@ -18,11 +18,6 @@ if [ -z "$LINENO" ]; then
>         LINENO=-1
>  fi
>
> -if [ -z "$LTP_IPC_PATH" ]; then
> -       echo "This script has to be executed from a LTP loader!"
> -       exit 1
> -fi
> -
>  tst_brk_()
>  {
>         tst_res_ "$@"
> @@ -35,7 +30,3 @@ 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
> diff --git a/testcases/lib/tst_run.sh b/testcases/lib/tst_run.sh
> new file mode 100644
> index 0000000000..ded2cd2099
> --- /dev/null
> +++ b/testcases/lib/tst_run.sh
> @@ -0,0 +1,16 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (c) 2025 Cyril Hrubis <chrubis@suse.cz>
> +# Copyright (c) 2025 Petr Vorel <pvorel@suse.cz>
> +
> +. tst_env.sh
> +
> +if [ -n "$TST_CLEANUP" ]; then
> +       trap $TST_CLEANUP EXIT
> +fi
> +
> +if [ -n "$TST_SETUP" ]; then
> +    $TST_SETUP
> +fi
> +
> +tst_test
> --
> 2.49.0
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list