Re: [PATCH 05/25] xfstests: fold common into check

Phil White
2013-03-23T10:18:31Z

Looks OK by me.

Reviewed-by: Phil White <pwhite@sgi.com>

On Fri, Mar 15, 2013 at 11:27:49PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> There is only one user of the common file now - check. Fold the two
> into one file as the split of functionality is not necessary
> anymore.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
> ---
> check | 313 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> common | 334 ----------------------------------------------------------------
> 2 files changed, 311 insertions(+), 336 deletions(-)
> delete mode 100644 common
>
> diff --git a/check b/check
> index 9a5b256..57c143a 100755
> --- a/check
> +++ b/check
> @@ -46,9 +46,318 @@ then
> exit 1
> fi
>
> -# we need common
> -. ./common
> +# argument parsing first - currently very messy, needs cleanup.
> +_setenvironment()
> +{
> + MSGVERB="text:action"
> + export MSGVERB
> +}
> +
> +usage()
> +{
> + echo "Usage: $0 [options] [testlist]"'
> +
> +common options
> + -v verbose
> +
> +check options
> + -xfs test XFS (default)
> + -udf test UDF
> + -nfs test NFS
> + -l line mode diff
> + -xdiff graphical mode diff
> + -udiff show unified diff (default)
> + -n show me, do not run tests
> + -q quick [deprecated]
> + -T output timestamps
> + -r randomize test order
> + --large-fs optimise scratch device for large filesystems
> +
> +testlist options
> + -g group[,group...] include tests from these groups
> + -x group[,group...] exclude tests from these groups
> + NNN include test NNN
> + NNN-NNN include test range (eg. 012-021)
> +'
> + exit 0
> +}
> +
> +here=`pwd`
> +rm -f $here/$iam.out
> +_setenvironment
> +
> +check=${check-true}
> +
> +diff="diff -u"
> +verbose=false
> +group=false
> +xgroup=false
> +showme=false
> +sortme=false
> +expunge=true
> +have_test_arg=false
> +randomize=false
> +rm -f $tmp.list $tmp.tmp $tmp.sed
> +
> +# Autodetect fs type based on what's on $TEST_DEV
> +if [ "$HOSTOS" == "Linux" ]
> +then
> + export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
> +else
> + export FSTYP=xfs
> +fi
> +
> +for r
> +do
> +
> + if $group
> + then
> + # arg after -g
> + group_list=$(sed -n < group \
> + -e 's/#.*//' \
> + -e 's/$/ /' \
> + -e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
> + if [ -z "$group_list" ]
> + then
> + echo "Group \"$r\" is empty or not defined?"
> + exit 1
> + fi
> + [ ! -s $tmp.list ] && touch $tmp.list
> + for t in $group_list
> + do
> + if grep -s "^$t\$" $tmp.list >/dev/null
> + then
> + :
> + else
> + echo "$t" >>$tmp.list
> + fi
> + done
> + group=false
> + continue
> +
> + elif $xgroup
> + then
> + # arg after -x
> + [ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
> + group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
> +s/ .*//p
> +}'`
> + if [ -z "$group_list" ]
> + then
> + echo "Group \"$r\" is empty or not defined?"
> + exit 1
> + fi
> + numsed=0
> + rm -f $tmp.sed
> + for t in $group_list
> + do
> + if [ $numsed -gt 100 ]
> + then
> + sed -f $tmp.sed <$tmp.list >$tmp.tmp
> + mv $tmp.tmp $tmp.list
> + numsed=0
> + rm -f $tmp.sed
> + fi
> + echo "/^$t\$/d" >>$tmp.sed
> + numsed=`expr $numsed + 1`
> + done
> + sed -f $tmp.sed <$tmp.list >$tmp.tmp
> + mv $tmp.tmp $tmp.list
> + xgroup=false
> + continue
> + fi
> +
> + xpand=true
> + case "$r"
> + in
> +
> + -\? | -h | --help) # usage
> + usage
> + ;;
> +
> + -udf) # -udf ... set FSTYP to udf
> + FSTYP=udf
> + xpand=false
> + ;;
> +
> + -xfs) # -xfs ... set FSTYP to xfs
> + FSTYP=xfs
> + xpand=false
> + ;;
> +
> + -nfs) # -nfs ... set FSTYP to nfs
> + FSTYP=nfs
> + xpand=false
> + ;;
> +
> + -g) # -g group ... pick from group file
> + group=true
> + xpand=false
> + ;;
> +
> + -l) # line mode for diff, was default before
> + diff="diff"
> + xpand=false
> + ;;
> +
> + -xdiff) # graphical diff mode
> + xpand=false
> +
> + if [ ! -z "$DISPLAY" ]
> + then
> + which xdiff >/dev/null 2>&1 && diff=xdiff
> + which gdiff >/dev/null 2>&1 && diff=gdiff
> + which tkdiff >/dev/null 2>&1 && diff=tkdiff
> + which xxdiff >/dev/null 2>&1 && diff=xxdiff
> + fi
> + ;;
> +
> + -udiff) # show a unified diff, default now, keep for backward compat
> + xpand=false
> + diff="$diff -u"
> + ;;
> +
> + -q) # "quick", no longer used - always quick :-)
> + xpand=false
> + ;;
> +
> + -n) # show me, don't do it
> + showme=true
> + xpand=false
> + ;;
> + -r) # randomize test order
> + randomize=true
> + xpand=false
> + ;;
> +
> + -T) # turn on timestamp output
> + timestamp=true
> + xpand=false
> + ;;
> +
> + -v)
> + verbose=true
> + xpand=false
> + ;;
> + -x) # -x group ... exclude from group file
> + xgroup=true
> + xpand=false
> + ;;
> + '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
> + echo "No tests?"
> + status=1
> + exit $status
> + ;;
> +
> + [0-9]*-[0-9]*)
> + eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
> + ;;
> +
> + [0-9]*-)
> + eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
> + end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'`
> + if [ -z "$end" ]
> + then
> + echo "No tests in range \"$r\"?"
> + status=1
> + exit $status
> + fi
> + ;;
> +
> + --large-fs)
> + export LARGE_SCRATCH_DEV=yes
> + xpand=false
> + ;;
> +
> + -*)
> + usage
> + ;;
> +
> + --extra-space=*)
> + export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
> + xpand=false
> + ;;
> +
> + *)
> + start=$r
> + end=$r
> + ;;
> +
> + esac
> +
> + # get rid of leading 0s as can be interpreted as octal
> + start=`echo $start | sed 's/^0*//'`
> + end=`echo $end | sed 's/^0*//'`
> +
> + if $xpand
> + then
> + have_test_arg=true
> + $AWK_PROG </dev/null '
> +BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
> + | while read id
> + do
> + if grep -s "^$id " group >/dev/null
> + then
> + # in group file ... OK
> + echo $id >>$tmp.list
> + else
> + if [ -f expunged ] && $expunge && egrep "^$id([ ]|\$)" expunged >/dev/null
> + then
> + # expunged ... will be reported, but not run, later
> + echo $id >>$tmp.list
> + else
> + # oops
> + echo "$id - unknown test, ignored"
> + fi
> + fi
> + done
> + fi
> +
> +done
> +
> +if [ -s $tmp.list ]
> +then
> + # found some valid test numbers ... this is good
> + :
> +else
> + if $have_test_arg
> + then
> + # had test numbers, but none in group file ... do nothing
> + touch $tmp.list
> + else
> + # no test numbers, do everything from group file
> + sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <group >$tmp.list
> + fi
> +fi
> +
> +# should be sort -n, but this did not work for Linux when this
> +# was ported from IRIX
> +#
> +list=`sort $tmp.list`
> +rm -f $tmp.list $tmp.tmp $tmp.sed
> +
> +if $randomize
> +then
> + list=`echo $list | awk -f randomize.awk`
> +fi
>
> +case "$FSTYP" in
> + xfs)
> + [ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
> + [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
> + [ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
> + [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
> + [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found"
> + ;;
> + udf)
> + [ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
> + ;;
> + btrfs)
> + [ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
> + ;;
> + nfs)
> + ;;
> +esac
>
> # we need common.rc
> if ! . ./common.rc
> diff --git a/common b/common
> deleted file mode 100644
> index 78ac654..0000000
> --- a/common
> +++ /dev/null
> @@ -1,334 +0,0 @@
> -##/bin/bash
> -#
> -# Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
> -#
> -# This program is free software; you can redistribute it and/or
> -# modify it under the terms of the GNU General Public License as
> -# published by the Free Software Foundation.
> -#
> -# This program is distributed in the hope that it would be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> -# GNU General Public License for more details.
> -#
> -# You should have received a copy of the GNU General Public License
> -# along with this program; if not, write the Free Software Foundation,
> -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> -#
> -#
> -# common procedures for QA scripts
> -#
> -# $Header: /disk7/depot/linux/pcp/dev/qa/RCS/common,v 2.52 2000/04/05 18:24:51 kenmcd Exp $
> -#
> -
> -_setenvironment()
> -{
> - MSGVERB="text:action"
> - export MSGVERB
> -}
> -
> -usage()
> -{
> - echo "Usage: $0 [options] [testlist]"'
> -
> -common options
> - -v verbose
> -
> -check options
> - -xfs test XFS (default)
> - -udf test UDF
> - -nfs test NFS
> - -l line mode diff
> - -xdiff graphical mode diff
> - -udiff show unified diff (default)
> - -n show me, do not run tests
> - -q quick [deprecated]
> - -T output timestamps
> - -r randomize test order
> - --large-fs optimise scratch device for large filesystems
> -
> -testlist options
> - -g group[,group...] include tests from these groups
> - -x group[,group...] exclude tests from these groups
> - NNN include test NNN
> - NNN-NNN include test range (eg. 012-021)
> -'
> - exit 0
> -}
> -
> -here=`pwd`
> -rm -f $here/$iam.out
> -_setenvironment
> -
> -check=${check-true}
> -
> -diff="diff -u"
> -verbose=false
> -group=false
> -xgroup=false
> -showme=false
> -sortme=false
> -expunge=true
> -have_test_arg=false
> -randomize=false
> -rm -f $tmp.list $tmp.tmp $tmp.sed
> -
> -# Autodetect fs type based on what's on $TEST_DEV
> -if [ "$HOSTOS" == "Linux" ]
> -then
> - export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
> -else
> - export FSTYP=xfs
> -fi
> -
> -for r
> -do
> -
> - if $group
> - then
> - # arg after -g
> - group_list=$(sed -n < group \
> - -e 's/#.*//' \
> - -e 's/$/ /' \
> - -e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
> - if [ -z "$group_list" ]
> - then
> - echo "Group \"$r\" is empty or not defined?"
> - exit 1
> - fi
> - [ ! -s $tmp.list ] && touch $tmp.list
> - for t in $group_list
> - do
> - if grep -s "^$t\$" $tmp.list >/dev/null
> - then
> - :
> - else
> - echo "$t" >>$tmp.list
> - fi
> - done
> - group=false
> - continue
> -
> - elif $xgroup
> - then
> - # arg after -x
> - [ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
> - group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
> -s/ .*//p
> -}'`
> - if [ -z "$group_list" ]
> - then
> - echo "Group \"$r\" is empty or not defined?"
> - exit 1
> - fi
> - numsed=0
> - rm -f $tmp.sed
> - for t in $group_list
> - do
> - if [ $numsed -gt 100 ]
> - then
> - sed -f $tmp.sed <$tmp.list >$tmp.tmp
> - mv $tmp.tmp $tmp.list
> - numsed=0
> - rm -f $tmp.sed
> - fi
> - echo "/^$t\$/d" >>$tmp.sed
> - numsed=`expr $numsed + 1`
> - done
> - sed -f $tmp.sed <$tmp.list >$tmp.tmp
> - mv $tmp.tmp $tmp.list
> - xgroup=false
> - continue
> - fi
> -
> - xpand=true
> - case "$r"
> - in
> -
> - -\? | -h | --help) # usage
> - usage
> - ;;
> -
> - -udf) # -udf ... set FSTYP to udf
> - FSTYP=udf
> - xpand=false
> - ;;
> -
> - -xfs) # -xfs ... set FSTYP to xfs
> - FSTYP=xfs
> - xpand=false
> - ;;
> -
> - -nfs) # -nfs ... set FSTYP to nfs
> - FSTYP=nfs
> - xpand=false
> - ;;
> -
> - -g) # -g group ... pick from group file
> - group=true
> - xpand=false
> - ;;
> -
> - -l) # line mode for diff, was default before
> - diff="diff"
> - xpand=false
> - ;;
> -
> - -xdiff) # graphical diff mode
> - xpand=false
> -
> - if [ ! -z "$DISPLAY" ]
> - then
> - which xdiff >/dev/null 2>&1 && diff=xdiff
> - which gdiff >/dev/null 2>&1 && diff=gdiff
> - which tkdiff >/dev/null 2>&1 && diff=tkdiff
> - which xxdiff >/dev/null 2>&1 && diff=xxdiff
> - fi
> - ;;
> -
> - -udiff) # show a unified diff, default now, keep for backward compat
> - xpand=false
> - diff="$diff -u"
> - ;;
> -
> - -q) # "quick", no longer used - always quick :-)
> - xpand=false
> - ;;
> -
> - -n) # show me, don't do it
> - showme=true
> - xpand=false
> - ;;
> - -r) # randomize test order
> - randomize=true
> - xpand=false
> - ;;
> -
> - -T) # turn on timestamp output
> - timestamp=true
> - xpand=false
> - ;;
> -
> - -v)
> - verbose=true
> - xpand=false
> - ;;
> - -x) # -x group ... exclude from group file
> - xgroup=true
> - xpand=false
> - ;;
> - '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
> - echo "No tests?"
> - status=1
> - exit $status
> - ;;
> -
> - [0-9]*-[0-9]*)
> - eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
> - ;;
> -
> - [0-9]*-)
> - eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
> - end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'`
> - if [ -z "$end" ]
> - then
> - echo "No tests in range \"$r\"?"
> - status=1
> - exit $status
> - fi
> - ;;
> -
> - --large-fs)
> - export LARGE_SCRATCH_DEV=yes
> - xpand=false
> - ;;
> -
> - -*)
> - usage
> - ;;
> -
> - --extra-space=*)
> - export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
> - xpand=false
> - ;;
> -
> - *)
> - start=$r
> - end=$r
> - ;;
> -
> - esac
> -
> - # get rid of leading 0s as can be interpreted as octal
> - start=`echo $start | sed 's/^0*//'`
> - end=`echo $end | sed 's/^0*//'`
> -
> - if $xpand
> - then
> - have_test_arg=true
> - $AWK_PROG </dev/null '
> -BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
> - | while read id
> - do
> - if grep -s "^$id " group >/dev/null
> - then
> - # in group file ... OK
> - echo $id >>$tmp.list
> - else
> - if [ -f expunged ] && $expunge && egrep "^$id([ ]|\$)" expunged >/dev/null
> - then
> - # expunged ... will be reported, but not run, later
> - echo $id >>$tmp.list
> - else
> - # oops
> - echo "$id - unknown test, ignored"
> - fi
> - fi
> - done
> - fi
> -
> -done
> -
> -if [ -s $tmp.list ]
> -then
> - # found some valid test numbers ... this is good
> - :
> -else
> - if $have_test_arg
> - then
> - # had test numbers, but none in group file ... do nothing
> - touch $tmp.list
> - else
> - # no test numbers, do everything from group file
> - sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <group >$tmp.list
> - fi
> -fi
> -
> -# should be sort -n, but this did not work for Linux when this
> -# was ported from IRIX
> -#
> -list=`sort $tmp.list`
> -rm -f $tmp.list $tmp.tmp $tmp.sed
> -
> -if $randomize
> -then
> - list=`echo $list | awk -f randomize.awk`
> -fi
> -
> -case "$FSTYP" in
> - xfs)
> - [ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
> - [ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
> - [ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
> - [ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
> - [ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found"
> - ;;
> - udf)
> - [ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
> - ;;
> - btrfs)
> - [ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
> - ;;
> - nfs)
> - ;;
> -esac
> --
> 1.7.10.4
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs