From: Clemens Famulla-Conrad <cfamullaconrad@suse.de>
To: ltp@lists.linux.it
Subject: [LTP] [RFC PATCH v2 1/1] Add automated tests for shell lib
Date: Fri, 20 Sep 2019 16:21:58 +0200 [thread overview]
Message-ID: <1568989318.3024.25.camel@suse.de> (raw)
In-Reply-To: <ce675759672af52bea02c11d51bd7d10f0bcb5cb.1566500817.git.clanig@suse.com>
Hi Christian,
This tests are nice! Lets keep going with it.
On Thu, 2019-08-22 at 21:12 +0200, Christian Lanig wrote:
<snip>
> diff --git a/lib/newlib_tests/shell/test_sh_newlib.sh
> b/lib/newlib_tests/shell/test_sh_newlib.sh
> new file mode 100755
> index 000000000..4aa19555b
> --- /dev/null
> +++ b/lib/newlib_tests/shell/test_sh_newlib.sh
> @@ -0,0 +1,102 @@
> +#!/bin/sh
> +#
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# (c) 2019 SUSE LLC
> +#
> +# Author: Christian Lanig <clanig@suse.com>
> +
> +PATH="${PATH}:$(dirname $(readlink -f $0))/../../../testcases/lib/"
> +if [ -z "$TMPDIR" ]; then
> + export TMPDIR="/tmp"
> +fi
> +color_blue='\033[1;34m'
> +color_green='\033[1;32m'
> +color_red='\033[1;31m'
> +reset_attr='\033[0m'
> +tmp="${TMPDIR}/sh_lib_tst-${$}/"
> +mkdir $tmp || cleanup 1
> +parent_dir=$(dirname $(readlink -f $0))/
> +tooldir=${parent_dir}/../../../tools/
> +testdir=${parent_dir}testcases/
> +tst_files=$(ls $testdir)
> +
> +cleanup()
You use cleanup as a default handler for error handing.
For instance, if a test doesn't have a `# output:` section we silently
quit with exitcode 1. I would like to be informed more about such
errors. Maybe we could just printout $tst if `$! != 0`.
> +{
> + [ -d "$tmp" ] && rm -rf "$tmp"
> + exit $1
> +}
> +
> +print_help()
> +{
> + cat <<EOF
> +
> +????????????????????????????????????????????????????????????????????
> ????????????
> +? This Shell script iterates over test cases for the new Shell
> library and ?
> +? verifies the
> output. ?
> +????????????????????????????????????????????????????????????????????
> ????????????
> +
> + Usage:
> + $(basename $0) [TEST_FILE_1] [TEST_FILE_2]
> +
> +EOF
> + exit 0
> +}
> +
> +parse_params()
> +{
> + [ -n "$1" ] && tst_files=
> + while [ -n "$1" ]; do
> + case "$1" in
> + --help) print_help;;
> + -h) print_help;;
> + -*)
> + printf "Unknown positional parameter
> ${1}.\n"
> + cleanup 1;;
> + *) tst_files="$tst_files $1";;
> + esac
> + shift
> + done
> +}
> +
> +verify_output()
> +{
> + if [ ! -e "${testdir}$tst" ]; then
> + printf "$tst not found\n"
> + cleanup 1
> + fi
> +
> + ${tooldir}lookup_split_cut.py -f ${testdir}$tst -d $tmp \
> + -s '# output:\n' -c '# {0,1}' || cleanup 1
just an idea, in perl ( I'm not sure if we have perl already as
dependency). My feeling is, that lookup_split_cut.py is to much for
that task.
cat $testdir$tst | perl -e '$o = 0; while (<STDIN>) {print substr($_,
2) if $o; $o = 1 if /^# output:/; }' > $tmp${tst}expected_output
> +
> + "${testdir}$tst" > "${tmp}$tst.actual" || cleanup 1
We should keep going on failed test. We need this to test timeout
functionally or error handling...
> + cmp -s "${tmp}$tst.actual" "${tmp}${tst}_out/out.1" &&
> return 0
> + return 1
> +}
> +
> +run_tests()
> +{
> + pass_cnt=0
> + fail_cnt=0
> + printf "\n"
> + for tst in $tst_files; do
> + if verify_output; then
> + pass_cnt=$(($pass_cnt + 1))
> + printf "${color_green}TPASS$reset_attr
> ${tst}\n"
> + else
> + fail_cnt=$(($fail_cnt + 1))
> + printf "${color_red}TFAIL$reset_attr
> ${tst}\n"
> + printf "${color_blue}Diff:${reset_attr}\n"
> + diff -u "${tmp}${tst}.actual" \
> + "${tmp}${tst}_out/out.1"
> + printf "\n"
> + fi
> + done
> + printf "\nSummary:\n"
> + printf "${color_red}Failed:$reset_attr $fail_cnt\n"
> + printf "${color_green}Passed:$reset_attr $pass_cnt\n\n"
> + return $fail_cnt
> +}
> +
> +parse_params "$@"
> +run_tests
> +cleanup $?
>
<snip>
Thanks
Clemens
next prev parent reply other threads:[~2019-09-20 14:21 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-22 19:34 [LTP] [RFC PATCH v3 1/2] tst_test.sh: Add TST_TEST_DATA and TST_TEST_DATA_IFS Petr Vorel
2018-05-22 19:34 ` [LTP] [RFC PATCH v3 2/2] lib: Add tests Petr Vorel
2018-05-24 13:46 ` Cyril Hrubis
2018-05-24 14:00 ` Petr Vorel
2018-08-28 11:18 ` [LTP] [PATCH 1/2] Make shell lib tests standalone Christian Lanig
2018-08-28 11:18 ` [LTP] [PATCH 2/2] Add wanted output to shell lib test case Christian Lanig
2018-08-29 17:24 ` [LTP] [PATCH 1/2] Make shell lib tests standalone Petr Vorel
2018-08-29 17:30 ` Petr Vorel
2018-08-31 15:24 ` [LTP] [RFC PATCH 0/1] Add automated tests for shell lib Christian Lanig
2018-08-31 15:24 ` [LTP] [RFC PATCH 1/1] " Christian Lanig
2018-10-03 9:51 ` Cyril Hrubis
2018-10-03 10:46 ` Petr Vorel
2018-10-03 11:32 ` Petr Vorel
2019-08-22 19:12 ` [LTP] [RFC PATCH v2 0/1] " Christian Lanig
2019-08-22 19:12 ` [LTP] [RFC PATCH v2 1/1] " Christian Lanig
2019-09-19 16:41 ` Petr Vorel
2019-09-30 18:27 ` Christian Lanig
2019-09-20 14:21 ` Clemens Famulla-Conrad [this message]
2019-09-19 14:26 ` [LTP] [RFC PATCH v2 0/1] " Petr Vorel
2018-08-31 11:46 ` [LTP] [PATCH 1/2] Make shell lib tests standalone Cyril Hrubis
2018-05-24 13:41 ` [LTP] [RFC PATCH v3 1/2] tst_test.sh: Add TST_TEST_DATA and TST_TEST_DATA_IFS Cyril Hrubis
2018-05-24 13:53 ` Petr Vorel
2018-05-24 14:00 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1568989318.3024.25.camel@suse.de \
--to=cfamullaconrad@suse.de \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox