Re: [PATCH 2/5] xfstests: use value of FSTYP if defined externally

David Sterba
2014-01-20T18:19:08Z

On Mon, Jan 20, 2014 at 01:13:45PM +1100, Dave Chinner wrote:
> On Thu, Jan 16, 2014 at 06:07:12PM +0100, David Sterba wrote:
> > --- a/check
> > +++ b/check
> > @@ -33,7 +33,7 @@ showme=false
> > have_test_arg=false
> > randomize=false
> > here=`pwd`
> > -FSTYP=xfs
> > +FSTYP=${FSTYP:-xfs}
>
> ":-xfs" means assign the value of $xfs if $FTYPE is null. xfs is not
> a variable....

Docs say that

${parameter:-word}
If parameter is unset or null, the expansion of word is substituted.
Otherwise, the value of parameter is substituted.

so 'xfs' will expand to itself. And I did test this one with:

$ cat default.sh << EOF
FSTYP=${FSTYP:-xfs}
echo $FSTYP
EOF

$ cat external.sh << EOF
FSTYP=btrfs
source default.sh
EOF

$ sh default.sh
xfs

$ sh external.sh
btrfs

> > -# Autodetect fs type based on what's on $TEST_DEV
> > -if [ "$HOSTOS" == "Linux" ]; then
> > +# Autodetect fs type based on what's on $TEST_DEV unless it's been set
> > +# externally
> > +if [ -z "$FSTYP" -a "$HOSTOS" == "Linux" ]; then
>
> If the default value expansion is fixed, FSTYP will always have a
> value here Hence it will never, ever probe.

> > FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
> > fi
> > export FSTYP
>
> I suspect what you want is:
>
> -FSTYP=xfs
>
> .....
>
> if [ -z "$FSTYP" -a "$HOSTOS" == "Linux" ]; then
> FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
> fi
> FSTYP=${FSTYP:=xfs}
> export FSTYP

Right, the default assignment has to be last. I'll use the := form
to be consistent with what's used in the file, though :- works here as
well, just does not assign the variable within the ${...} expression.
The result is the same.

thanks,
david