From b333fbe98d4aff259c64c37cbe45666a7d27ecc4 Mon Sep 17 00:00:00 2001 From: Stefan Farfeleder Date: Sun, 2 Apr 2006 19:02:49 +0000 Subject: [PATCH] Add test cases that check utility syntax errors and redirection errors. For special built-in utilities they must terminate the shell, for other utilities only a error message shall be written. We currently fail both tests. --- tools/regression/bin/sh/errors/option-error.0 | 46 ++++++++++++++++ .../bin/sh/errors/redirection-error.0 | 53 +++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 tools/regression/bin/sh/errors/option-error.0 create mode 100644 tools/regression/bin/sh/errors/redirection-error.0 diff --git a/tools/regression/bin/sh/errors/option-error.0 b/tools/regression/bin/sh/errors/option-error.0 new file mode 100644 index 00000000000..f599d59072c --- /dev/null +++ b/tools/regression/bin/sh/errors/option-error.0 @@ -0,0 +1,46 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break abc,\ + continue abc,\ + ., + exit abc, + export -x, + readonly -x, + return abc, + set -z, + shift abc, + trap -y, + unset -y" + +UTILS="alias -y,\ + cat -z,\ + cd abc def,\ + command break abc,\ + expr 1 +,\ + fc -z,\ + getopts,\ + hash -z,\ + jobs -z,\ + printf,\ + pwd abc,\ + read,\ + test abc =,\ + ulimit -z,\ + umask -z,\ + unalias -z,\ + wait abc" + +# Special built-in utilities must abort on an option or operand error. +set -- ${SPECIAL} +for cmd in "$@" +do + sh -c "${cmd}; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort. +set -- ${UTILS} +for cmd in "$@" +do + sh -c "${cmd}; exit 0" 2>/dev/null || exit 1 +done diff --git a/tools/regression/bin/sh/errors/redirection-error.0 b/tools/regression/bin/sh/errors/redirection-error.0 new file mode 100644 index 00000000000..d11118a9c9f --- /dev/null +++ b/tools/regression/bin/sh/errors/redirection-error.0 @@ -0,0 +1,53 @@ +# $FreeBSD$ +IFS=, + +SPECIAL="break,\ + :,\ + continue,\ + . /dev/null, + eval, + exec, + export -p, + readonly -p, + set, + shift, + times, + trap, + unset foo" + +UTILS="alias,\ + bg,\ + bind,\ + cd,\ + command echo,\ + echo,\ + false,\ + fc -l,\ + fg,\ + getopts a -a,\ + hash,\ + jobs,\ + printf a,\ + pwd,\ + read var < /dev/null,\ + test,\ + true,\ + type ls,\ + ulimit,\ + umask,\ + unalias -a,\ + wait" + +# Special built-in utilities must abort on a redirection error. +set -- ${SPECIAL} +for cmd in "$@" +do + sh -c "${cmd} > /; exit 0" 2>/dev/null && exit 1 +done + +# Other utilities must not abort. +set -- ${UTILS} +for cmd in "$@" +do + sh -c "${cmd} > /; exit 0" 2>/dev/null || exit 1 +done