emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#24894: closed (coreutils 8.4 : `test -s` without a


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#24894: closed (coreutils 8.4 : `test -s` without argument does not return an error )
Date: Mon, 07 Nov 2016 16:47:03 +0000

Your message dated Mon, 7 Nov 2016 10:46:16 -0600
with message-id <address@hidden>
and subject line Re: bug#24894: coreutils 8.4 : `test -s` without argument does 
not return an error
has caused the debbugs.gnu.org bug report #24894,
regarding coreutils 8.4 :  `test -s`  without argument does not return an error 
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
24894: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24894
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: coreutils 8.4 : `test -s` without argument does not return an error Date: Mon, 7 Nov 2016 12:58:15 +0000
Dear gnu-coreutils team

We had a funny problem caused by `test` which does return "0" when an option is 
given without any EXPRESSION 

The man page says (near line 15 or so) : 
      An  omitted  EXPRESSION defaults to false.

This is not the case when an option is given (tested for -s and -d options)

address@hidden:/home/wasoi> echo $SHELL
/bin/ksh
address@hidden:/home/wasoi> uname
Linux
address@hidden:/home/wasoi> test -s
address@hidden:/home/wasoi> echo $?
0

I expected an error (at least return code not zero) , or it would be nice to be 
warned in the man page.

----------
system and package information : 
        address@hidden:/home/wasoi> cat /etc/redhat\-release
        CentOS release 6.4 (Final)

List of rpm
        coreutils-libs-8.4-19.el6.x86_64
        coreutils-8.4-19.el6.x86_64
        policycoreutils-2.0.83-19.30.el6.x86_64

-------------
reference : On *AIX* 6.1 , with IBM's test , there is an error 

address@hidden:/i/w/l/w00/was> echo $SHELL
/bin/ksh
address@hidden:/i/w/l/w00/was> uname
AIX
address@hidden:/i/w/l/w00/was> test -s
ksh: test: argument expected
address@hidden:/i/w/l/w00/was> echo $?
1

This was the expected behavior :-)  

The *AIX* man page gives 
Exit Status

       This command returns the following exit values:
       Item
            Description
       0
            The Expression parameter is true.
       1
            The Expression parameter is false or missing.
       >1
            An error occurred.

-------------

Best regards , and thanks a lot for your work.

Alain BAECKEROOT (cnav.fr)

*****************************************************************************************

Ce message électronique, les éventuels fichiers joints et les informations qu'il contient, peuvent être couverts par le secret professionnel et sont exclusivement adressés à son destinataire. Si vous le recevez par erreur, merci d'en informer l'expéditeur et de le détruire. A ce titre, toute diffusion non autorisée de ce message, même partielle, sous quelque forme que ce soit, est interdite et punie par la loi.

En aucun cas, le contenu de ce message ne peut valoir offre ou acceptation ou engagement de la part de la CARSAT SUD-EST.

Les opinions contenues dans ce message sont personnelles à l'émetteur.

Il est de la responsabilité du destinataire de s'assurer que le message et ses éventuelles pièces jointes ne contiennent pas de virus informatique.


--- End Message ---
--- Begin Message --- Subject: Re: bug#24894: coreutils 8.4 : `test -s` without argument does not return an error Date: Mon, 7 Nov 2016 10:46:16 -0600 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
tag 24894 notabug
thanks

On 11/07/2016 06:58 AM, BAECKEROOT Alain wrote:
> Dear gnu-coreutils team
> 
> We had a funny problem caused by `test` which does return "0" when an option 
> is given without any EXPRESSION 
> 
> The man page says (near line 15 or so) : 
>       An  omitted  EXPRESSION defaults to false.

You are correct that it states that, but it means that 'test' (with no
expression at all) is what results in a false return (that is, an
omitted expression is equivalent to zero arguments).  'test -s' is NOT a
case of an omitted expression; your expression was '-s'.  Since you
provided exactly one argument, you are testing whether '-s' is the empty
string (it is not, hence the true result).

The full POSIX rules are here:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html

> I expected an error (at least return code not zero) , or it would be nice to 
> be warned in the man page.

You are correct that the man page could probably do a bit better at
explaining that test's behavior is STRONGLY influenced by the number of
parameters present (and this is per POSIX rules, so it is not just
coreutils' test implementation, but ALL conforming implementations that
will behave the same way).

> -------------
> reference : On *AIX* 6.1 , with IBM's test , there is an error 
> 
> address@hidden:/i/w/l/w00/was> echo $SHELL
> /bin/ksh
> address@hidden:/i/w/l/w00/was> uname
> AIX
> address@hidden:/i/w/l/w00/was> test -s
> ksh: test: argument expected

That is a bug in AIX's ksh, which is not POSIX compliant.

> address@hidden:/i/w/l/w00/was> echo $?
> 1
> 
> This was the expected behavior :-)  

Sorry, but that behavior is contrary to POSIX.

> Ce message électronique, les éventuels fichiers joints et les informations 
> qu'il contient,

Legalese like this is unenforceable on public mailing lists; you may
wish to use a personal email account rather than spamming us with your
employer's garbage disclaimer.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]