From 1aec003155e8ccd8e0e3b9a6bd8c9fdb141d5c81 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 21 Jan 2016 16:30:21 +0000 Subject: 37722: test builtin should return status 2 on syntax error --- ChangeLog | 8 ++++++++ Src/builtin.c | 8 ++++---- Test/C02cond.ztst | 12 ++++++------ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc371399b..673fd9f26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ +2016-01-21 Peter Stephenson + + * 37722: Src/builtin.c, Test/C02cond.zts: test builtin should + return status 2 on syntax error. + 2016-01-20 Peter Stephenson + * 37705: Src/lex.c, Test/D04parameter.ztst: don't turn - to + Dash after start of brace parameter. + * unspoted: Config/version.mk: incremented version to 5.2-dev-1 because of parsing change. diff --git a/Src/builtin.c b/Src/builtin.c index dd20f9eab..98ecb09e8 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -6531,7 +6531,7 @@ bin_test(char *name, char **argv, UNUSED(Options ops), int func) for (s = argv; *s; s++); if (s == argv || strcmp(s[-1], "]")) { zwarnnam(name, "']' expected"); - return 1; + return 2; } s[-1] = NULL; } @@ -6574,19 +6574,19 @@ bin_test(char *name, char **argv, UNUSED(Options ops), int func) if (errflag) { errflag &= ~ERRFLAG_ERROR; zcontext_restore(); - return 1; + return 2; } if (!prog || tok == LEXERR) { zwarnnam(name, tokstr ? "parse error" : "argument expected"); zcontext_restore(); - return 1; + return 2; } zcontext_restore(); if (*curtestarg) { zwarnnam(name, "too many arguments"); - return 1; + return 2; } /* syntax is OK, so evaluate */ diff --git a/Test/C02cond.ztst b/Test/C02cond.ztst index 0b4608a21..88cad0d64 100644 --- a/Test/C02cond.ztst +++ b/Test/C02cond.ztst @@ -223,27 +223,27 @@ F:Failures in these cases do not indicate a problem in the shell. 0:substitution in `[' builtin [ -n foo scrimble ] -1:argument checking for [ builtin +2:argument checking for [ builtin ?(eval):[:1: too many arguments test -n foo scramble -1:argument checking for test builtin +2:argument checking for test builtin ?(eval):test:1: too many arguments [ -n foo scrimble scromble ] -1:argument checking for [ builtin +2:argument checking for [ builtin ?(eval):[:1: too many arguments test -n foo scramble scrumble -1:argument checking for test builtin +2:argument checking for test builtin ?(eval):test:1: too many arguments [ -n foo -a -n bar scrimble ] -1:argument checking for [ builtin +2:argument checking for [ builtin ?(eval):[:1: too many arguments test -n foo -a -z "" scramble -1:argument checking for test builtin +2:argument checking for test builtin ?(eval):test:1: too many arguments fn() { -- cgit 1.4.1