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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.