From: Amir Goldstein <amir73il@gmail.com>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: Eryu Guan <guaneryu@gmail.com>,
linux-xfs <linux-xfs@vger.kernel.org>,
fstests <fstests@vger.kernel.org>, Eryu Guan <guan@eryu.me>
Subject: Re: [PATCH 2/3] new: standardize group name checking
Date: Fri, 17 Sep 2021 13:32:57 +0300 [thread overview]
Message-ID: <CAOQ4uxjjuqbUn_F1fgeUwD45tE54C5jcJOjmSJcn+EnUix9mJw@mail.gmail.com> (raw)
In-Reply-To: <163183920093.953189.1288298157221770906.stgit@magnolia>
On Fri, Sep 17, 2021 at 12:57 PM Darrick J. Wong <djwong@kernel.org> wrote:
>
> From: Darrick J. Wong <djwong@kernel.org>
>
> Use the same group name validation when reading group names from
> standard input or from the command line. Now that we require all group
> names to be documented, there's no reason to leave these separate
> requirements.
>
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
> ---
> new | 68 +++++++++++++++++++++++++++++++++++++------------------------------
> 1 file changed, 38 insertions(+), 30 deletions(-)
>
>
> diff --git a/new b/new
> index ea7cf25e..3a657d20 100755
> --- a/new
> +++ b/new
> @@ -91,38 +91,46 @@ group_names() {
> }' doc/group-names.txt
> }
>
> +# Make sure that the new test's groups fit the correct format and are listed
> +# in the group documentation file.
> +check_groups() {
> + for g in "$@"; do
> + local inval="$(echo "${g}" | tr -d '[:lower:][:space:][:digit:]_')"
> + if [ -n "${inval}" ]; then
> + echo "Invalid characters in group(s): ${inval}"
> + echo "Only lower cases, digits and underscore are allowed in groups, separated by space"
> + return 1
> + elif ! group_names | grep -q -w "${g}"; then
> + echo "Warning: group \"${g}\" not defined in documentation"
> + return 1
> + fi
> + done
> +
> + return 0
> +}
> +
> if [ $# -eq 0 ]; then
> + # interactive mode
> prompt="Add to group(s) [other] (separate by space, ? for list): "
> - while true
> - do
> - read -p "${prompt}" ans || exit 1
> - test -z "${ans}" && ans=other
> - if [ "${ans}" = "?" ]; then
> - echo $(group_names)
> - else
> - # only allow lower cases, spaces, digits and underscore in group
> - inval=`echo $ans | tr -d '[:lower:][:space:][:digit:]_'`
> - if [ "$inval" != "" ]; then
> - echo "Invalid characters in group(s): $inval"
> - echo "Only lower cases, digits and underscore are allowed in groups, separated by space"
> - continue
> - else
> - # remove redundant spaces/tabs
> - ans=`echo "$ans" | sed 's/\s\+/ /g'`
> - break
> - fi
> - fi
> - done
> + while true; do
> + read -p "${prompt}" -a new_groups || exit 1
> + case "${#new_groups[@]}" in
> + 0)
> + new_groups=("other")
> + ;;
> + 1)
> + if [ "${new_groups[0]}" = "?" ]; then
> + echo $(group_names)
> + continue
> + fi
> + ;;
> + esac
> + check_groups "${new_groups[@]}" && break
> + done
> else
> - # expert mode, groups are on the command line
> - #
> - for g in $*
> - do
> - if ! grep -q "^$g" doc/group-names.txt; then
> - echo "Warning: group \"$g\" not defined in documentation"
> - fi
> - done
> - ans="$*"
> + # expert mode, groups are on the command line
> + new_groups=("$@")
> + check_groups "${new_groups[@]}" || exit 1
> fi
>
> echo -n "Creating skeletal script for you to edit ..."
> @@ -139,7 +147,7 @@ cat <<End-of-File >$tdir/$id
> # what am I here for?
> #
> . ./common/preamble
> -_begin_fstest $ans
> +_begin_fstest ${new_groups[@]}
>
> # Override the default cleanup function.
> # _cleanup()
>
next prev parent reply other threads:[~2021-09-17 10:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-17 0:39 [PATCHSET 0/3] fstests: various cleanups to ./new script Darrick J. Wong
2021-09-17 0:39 ` [PATCH 1/3] new: clean up the group name input code Darrick J. Wong
2021-09-17 10:28 ` Amir Goldstein
2021-09-17 0:40 ` [PATCH 2/3] new: standardize group name checking Darrick J. Wong
2021-09-17 10:32 ` Amir Goldstein [this message]
2021-09-17 0:40 ` [PATCH 3/3] new: don't allow new tests in group 'other' Darrick J. Wong
2021-09-17 10:42 ` Amir Goldstein
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=CAOQ4uxjjuqbUn_F1fgeUwD45tE54C5jcJOjmSJcn+EnUix9mJw@mail.gmail.com \
--to=amir73il@gmail.com \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=guan@eryu.me \
--cc=guaneryu@gmail.com \
--cc=linux-xfs@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).